元ドキュメント: クライアント接続
クライアント接続
概要
本ドキュメントでは、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.quorum | ZooKeeper のアドレス | はい |
hbase.zookeeper.property.clientPort | ZooKeeper のポート | はい |
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秒