すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for HBase:Java API を使用した Performance-enhanced Edition クラスターへのアクセス

最終更新日:Apr 21, 2026

このトピックでは、ApsaraDB for HBase の Java API を使用して ApsaraDB for HBase Performance-enhanced Edition インスタンスにアクセスする方法について説明します。

前提条件

  • Java SDK がインストールされていること。 詳細については、「HBase Java SDK のアップグレード」をご参照ください。

  • アプリケーションが Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、ApsaraDB for HBase Performance-enhanced Edition インスタンスと ECS インスタンスがネットワーク接続に関して次の条件を満たしていることを確認してください。 ECS インスタンスの詳細の表示方法については、「インスタンス情報の表示」をご参照ください。

    • インスタンスが同じリージョンにあること。 ネットワーク遅延を低減するため、同じアベイラビリティゾーンに配置することを推奨します。

    • インスタンスが同じネットワークタイプを使用していること。

      説明

      VPC はより高いセキュリティを提供します。 VPC の使用を推奨します。 ネットワークタイプが VPC の場合は、両方のインスタンスが同じ VPC 内にあることを確認してください。

  • ECS インスタンスまたはクライアントの IP アドレスが、ApsaraDB for HBase Performance-enhanced Edition インスタンスのホワイトリストに追加されていること。 詳細については、「ホワイトリストの設定」をご参照ください。

操作手順

  1. HBase の構成を初期化します。 プロジェクトで次のコードを入力し、以下の表の説明に従ってパラメーターを設定します。

    // Configuration オブジェクトを作成します。
    Configuration conf = HBaseConfiguration.create();
    // クラスターの Java API エンドポイント。 エンドポイントは、コンソールの [データベース接続] ページで取得できます。
    conf.set("hbase.zookeeper.quorum", "ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020");
    // ユーザー名とパスワードを設定します。
    conf.set("hbase.client.username", "testuser");
    conf.set("hbase.client.password", "password");
    // Alibaba Cloud HBase クライアントに直接依存している場合、connection.impl パラメーターを設定する必要はありません。 alihbase-connector に依存している場合は、このパラメーターを設定する必要があります。
    //conf.set("hbase.client.connection.impl", AliHBaseUEClusterConnection.class.getName());

    パラメーター

    説明

    host:port

    ld-bp150tns0sjxs****-proxy-hbaseue.hbaseue.rds.aliyuncs.com:30020

    ご利用の ApsaraDB for HBase Performance-enhanced Edition インスタンスの Java API エンドポイントの接続文字列です。 この値を取得するには、ApsaraDB for HBase コンソールに移動し、ターゲットインスタンスの ID をクリックします。 左側のナビゲーションウィンドウで、Database Connection をクリックします。 Connection Information セクションで、[Java API エンドポイント] を見つけます。

    username

    testuser

    ユーザー名またはパスワードを忘れた場合は、ApsaraDB for HBase クラスター管理システムでリセットできます。 詳細については、「ユーザーの管理」をご参照ください。

    password

    password

  2. ApsaraDB for HBase Performance-enhanced Edition インスタンスへの接続を作成します。

    Connection connection = ConnectionFactory.createConnection(conf);
    説明

    接続は、アプリケーションライフサイクル中に一度だけ作成してください。 接続はスレッドセーフであり、すべてのスレッドで共有できます。 接続リークを防ぐため、プログラムの終了後に Connection オブジェクトを閉じてください。 try-with-resources 文または try...finally ブロックを使用して、リークを防ぐこともできます。

  3. 接続が確立されると、Java API を使用して ApsaraDB for HBase Performance-enhanced Edition インスタンスにアクセスできます。 以下に簡単な Java の例を示します。

    説明

    HBase 1.x クライアントとの互換性を確保するため、この例では HBase 1.x クライアントの構文を使用しています。 HBase 2.x クライアントを使用する場合、一部の IDE で Deprecated 警告が表示されることがありますが、これは操作に影響しません。

    • DDL ステートメント

      try (Admin admin = connection.getAdmin()){
          // テーブルを作成します。
          HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("tablename"));
          htd.addFamily(new HColumnDescriptor(Bytes.toBytes("family")));
          // 単一パーティションのテーブルを作成します。
          // 本番環境では、データ特性に基づいてテーブルを事前分割することを推奨します。
          admin.createTable(htd);
            
          // テーブルを無効化します。
          admin.disableTable(TableName.valueOf("tablename"));
            
          // テーブルを切り詰めます。
          admin.truncateTable(TableName.valueOf("tablename"), true);
            
          // テーブルを削除します。
          admin.deleteTable(TableName.valueOf("tablename"));
      }
    • DML ステートメント

      // Table オブジェクトはスレッドセーフではありません。 各スレッドは、Connection から一意の Table オブジェクトを取得する必要があります。
      try (Table table = connection.getTable(TableName.valueOf("tablename"))) {
          // データを挿入します。
          Put put = new Put(Bytes.toBytes("row"));
          put.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value"));
          table.put(put);
      
          // 単一行を読み取ります。
          Get get = new Get(Bytes.toBytes("row"));
          Result res = table.get(get);
      
          // 行を削除します。
          Delete delete = new Delete(Bytes.toBytes("row"));
          table.delete(delete);
      
          // データ範囲をスキャンします。
          Scan scan = new Scan(Bytes.toBytes("startRow"), Bytes.toBytes("endRow"));
          ResultScanner scanner = table.getScanner(scan);
          for (Result result : scanner) {
              // クエリ結果を処理します。
              // ...
          }
          scanner.close();
      }