Skip to content

元ドキュメント: クライアント接続

クライアント接続

概要

本ドキュメントでは、TDSQL Boundless の HBase 互換モードにおけるクライアント接続の方法を説明します。HBase-Client を使用して接続する手順、接続パラメータ、認証設定について解説します。

前提条件

  • Java 8 以降がインストールされていること
  • HBase Client 2.x のライブラリが利用可能であること

依存関係の設定

Maven の場合

xml
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>2.4.17</version>
</dependency>

Gradle の場合

groovy
implementation 'org.apache.hbase:hbase-client:2.4.17'

接続パラメータ

パラメータ説明必須
hbase.zookeeper.quorumZooKeeper のアドレスはい
hbase.zookeeper.property.clientPortZooKeeper のポートはい
hbase.client.connection.impl接続実装クラスはい
hbase.client.username認証ユーザー名はい
hbase.client.password認証パスワードはい

接続サンプルコード

基本的な接続

java
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;

public class HBaseConnectionExample {

    public static Connection createConnection() throws Exception {
        Configuration config = HBaseConfiguration.create();
        config.set("hbase.zookeeper.quorum", "your-zookeeper-host");
        config.set("hbase.zookeeper.property.clientPort", "2181");
        config.set("hbase.client.username", "your_username");
        config.set("hbase.client.password", "your_password");

        return ConnectionFactory.createConnection(config);
    }

    public static void main(String[] args) {
        try (Connection connection = createConnection()) {
            System.out.println("HBase への接続に成功しました。");
        } catch (Exception e) {
            System.err.println("接続に失敗しました: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

認証設定

TDSQL Boundless の HBase 互換モードでは、ユーザー名とパスワードによる認証を使用します。

java
Configuration config = HBaseConfiguration.create();
config.set("hbase.client.username", "your_username");
config.set("hbase.client.password", "your_password");

注意: 本番環境では、認証情報をソースコードにハードコーディングしないでください。環境変数や設定管理サービスを利用することを推奨します。

接続プールの管理

Connection オブジェクトはスレッドセーフであり、アプリケーション全体で 1 つのインスタンスを共有して使用できます。

java
public class HBaseConnectionManager {

    private static volatile Connection connection;

    public static Connection getConnection() throws Exception {
        if (connection == null || connection.isClosed()) {
            synchronized (HBaseConnectionManager.class) {
                if (connection == null || connection.isClosed()) {
                    Configuration config = HBaseConfiguration.create();
                    config.set("hbase.zookeeper.quorum", "your-zookeeper-host");
                    config.set("hbase.zookeeper.property.clientPort", "2181");
                    config.set("hbase.client.username", "your_username");
                    config.set("hbase.client.password", "your_password");
                    connection = ConnectionFactory.createConnection(config);
                }
            }
        }
        return connection;
    }

    public static void close() throws Exception {
        if (connection != null && !connection.isClosed()) {
            connection.close();
        }
    }
}

タイムアウト設定

接続の安定性を確保するため、適切なタイムアウトを設定することを推奨します。

java
config.set("hbase.client.operation.timeout", "30000");   // 操作タイムアウト: 30秒
config.set("hbase.client.scanner.timeout.period", "60000"); // スキャンタイムアウト: 60秒
config.set("hbase.rpc.timeout", "10000");                 // RPC タイムアウト: 10秒

Tencent Cloud プロダクトドキュメント