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

E-MapReduce:HBase Thrift サーバー

最終更新日:Jun 22, 2026

HBase Thrift サーバーを使用すると、さまざまなプログラミング言語で EMR HBase クラスターを操作できます。Java クライアントを使用せずに、HBase のデータに効率的にアクセスし、操作することが可能です。

背景情報

HBase Thrift サーバーは、Apache Thrift 上に構築されたサービスで、HBase への効率的な多言語アクセスを提供します。Thrift は、スケーラブルなクロス言語 RPC フレームワークです。現在、C++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Go、Cocoa、JavaScript、Node.js、Smalltalk などをサポートしています。

HBase Thrift サーバーの特徴

デフォルトでは、EMR HBase クラスターはマスターノードで Thrift サーバーを起動し、ポート 9091 でリッスンします。

高可用性:高可用性モードでは、EMR HBase クラスターは 3 つすべてのマスターノードで Thrift サーバーを起動します。カスタムの負荷分散ポリシーを実装して、複数の Thrift サーバーインスタンスにリクエストを均等に分散させることができます。

HBase Thrift サーバーの使用

HBase サービスが有効になっている DataServing または Custom クラスターがあることを確認してください。詳細については、「クラスターの作成」をご参照ください。

このトピックでは、Python と ThriftServer v1 を例として使用します。v1 に切り替えるには、HBase の構成で hbase.thrift.server.version パラメーターを v1 に設定し、Thrift サーバーを再起動します。

  1. HBase の構成を確認および更新します。

    EMR コンソールで、HBase サービスの Configure タブで、hbase.thrift.server.version パラメーターを検索して値を確認します:

    • 値が v1 の場合は、次のステップに進みます。

    • 値が v1 でない場合は、v1 に変更し、プロンプトに従って変更を適用します。

      構成が適用された後、[設定] ページで、再度検索ボックスに hbase.thrift.server.version を入力し、その値が v1 であることを確認します。

  2. 依存関係をインストールします。

    1. EMR HBase クラスターのマスターノードにログインします。詳細については、「クラスターへのログイン」をご参照ください。

    2. 次のコマンドを実行して、Python 用の 'hbase-thrift' ライブラリをインストールします。

      pip2.7 install hbase-thrift
  3. (任意) テーブルを作成します。

    以下の手順は、サンプルテーブルの作成方法を示しています。このテーブルを作成すると、このガイドの Python スクリプトを変更せずに使用できます。

    1. HBase シェルを使用して HBase に接続します。詳細については、「HBase シェルの使用」をご参照ください。

    2. 次のコマンドを実行して、カラムファミリー名が cf の test_table という名前のテーブルを作成します。

      create 'test_table','cf'
    3. 次のコマンドを実行して、テーブルにデータを書き込みます。

      put 'test_table','test_rowkey','cf:q','v1'
  4. Python スクリプトを作成します。

    hbase_thrift_test.py という名前のファイルを作成し、次のコンテンツを追加します。コード内の test_table はテーブル名、test_rowkey は行キーです。ご利用の環境に合わせて、必要に応じてこれらの値を置き換えてください。前のステップでサンプルテーブルを作成した場合は、変更は不要です。

    #! /usr/bin/env python2.7
    #coding=utf-8
    from thrift import Thrift
    from thrift.transport import TSocket, TTransport
    from thrift.protocol import TBinaryProtocol
    from hbase import Hbase
    socket = TSocket.TSocket('master-1-1', 9091)
    socket.setTimeout(60000)
    transport = TTransport.TBufferedTransport(socket)
    transport.open()
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    client = Hbase.Client(protocol)
    result = client.getRow("test_table", "test_rowkey")
    for r in result:
        print 'The rowkey is ', r.row
        print 'The value is ', r.columns.get('cf:q').value
    socket.close()
    
  5. Python スクリプトを実行します。

    次のコマンドを実行してスクリプトを実行し、HBase データにアクセスします。

    python2.7 hbase_thrift_test.py

    スクリプトが正常に実行されると、次のような出力が表示されます:

    The rowkey is  test_rowkey
    The value is  v1