HBase は、Java 以外の言語に対する Thrift インターフェイスのサポートを提供します。ここでは、HBase Thrift インターフェイス (HBase バージョン 0.92.1) の使用経験に基づいて、発生した問題のいくつかと関連する注意事項をまとめます。
1. バイトの格納順序
HBase では、行 (行キーと列ファミリー、列修飾子、タイムスタンプ) が辞書編集順に並べ替えられるため、short、int、long およびその他の型のデータはBytes.toBytes(...) によってバイト配列に変換された後、ビッグ エンディアン モード (上位バイトが下位アドレスに、下位バイトが上位アドレスに) で格納される必要があります。価値についても同様です。したがって、Thrift API (C++、Php、Python など) を使用する場合は、統一されたビッグエンディアン方式で行と値をパックおよびアンパックすることが最善です。
たとえば、C++ では、int 型変数は次の方法で辞書順に変換されます:
2. TScan
_TScan__isset() : startRow( false)、stopRow(false)、timestamp(false)、columns(false)、caching(false)、filterString(false) {}
bool startRow;
bool stopRow;
bool timestamp;
bool columns ;
bool キャッシュ;
bool filterString;
} _TScan__isset;
TScan の write() メソッドは、_TScan__isset の各ブール変数タグに startRow、stopRow、列、フィルターなどの属性が設定されているかどうかを判断し、これらの属性を Thrift プロトコルを通じて Thrift サーバーに送信するかどうかを決定します。設定は __set_xxx() メソッドを通じて有効になります。 TScan のデフォルトのコンストラクターでは、これらの属性に対応する __isset タグが true に設定されていません。
したがって、TScan のコンストラクターを通じて startRow、stopRow、カラム、フィルター、その他の属性を直接初期化すると、__set_xxx() メソッドが呼び出された場合にのみ、テーブルが最初から走査され、対応する bool フラグが true に設定されます。 、サーバーがスキャンのために startRow、stopRow、列、フィルターなどの属性を Thrift サーバーから取得できるようにします。
3. 同時アクセス スレッドの数
まず、ネットワーク送信による時間のオーバーヘッドを最小限に抑えるために、HBase の Thrift Server はアプリケーション クライアントと同じマシンにデプロイするのが最適です。 Thrift Server の起動時に、パラメータを使用して同時スレッドの数を設定できます。そうしないと、Thrift Server スレッドが簡単にいっぱいになり、クライアントの読み取りおよび書き込み要求に応答しなくなります。 特定のコマンド: bin/hbase-daemon.sh start thrift - -threadpool -m 200 -w 500 (その他のパラメータについては、bin/hbase-daemon.sh start thrift -h を参照してください)。
4. 最大ヒープ メモリ構成
クライアントが Thrift Server でスキャン操作を実行してデータを順次読み取り、特定の数のキャッシュ レコードが設定されている場合 (TScan の int32_t キャッシュ変数を通じて設定)、次のようになります。特に複数のクライアントが同時にアクセスする場合、多数のレコードが Thrift Server のヒープ メモリのかなりの部分を占める可能性があります。
したがって、Thrift Server を起動する前に、最大ヒープ メモリを増やすことができます。そうしないと、特にスキャン中に多数のキャッシュ レコードが設定されている場合 (デフォルトは、export HBASE_HEAPSIZE)、java.lang.OutOfMemoryError 例外によりプロセスが強制終了される可能性があります。 =1000MB、conf/hbase-env.sh で設定できます)。
http://www.bkjia.com/PHPjc/327254.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327254.html技術記事 HBase は、非 Java 言語に対する Thrift インターフェイスのサポートを提供します。HBase Thrift インターフェイス (HBase バージョン 0.92.1) の使用経験に基づいて、発生した問題のいくつかと関連する注意事項を以下にまとめます。