E-MapReduce (EMR) を使用すると、クラスター作成時に HBase クラスターの設定を構成でき、シェルまたはビッグデータフレームワーク経由で HBase にアクセスできます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
-
HBase サービスが追加された EMR クラスター。詳細については、「クラスターの作成」をご参照ください。
HBase クラスターの構成
クラスター作成時に HBase の設定をカスタマイズします。ソフトウェア設定 ステップで、詳細設定 を展開し、カスタムソフトウェア設定 を有効化したうえで、以下の JSON 形式で構成内容を指定します。
{
"configurations": [
{
"classification": "hbase-site",
"properties": {
"hbase.hregion.memstore.flush.size": "268435456",
"hbase.regionserver.global.memstore.size": "0.5",
"hbase.regionserver.global.memstore.lowerLimit": "0.6"
}
}
]
}
以下の表に、一般的な HBase パラメーターのデフォルト値を示します。
| パラメーター | デフォルト値 | 調整が必要な場合 |
|---|---|---|
zookeeper.session.timeout |
180000 |
高負荷時に ZooKeeper のセッションタイムアウトが頻繁に発生する場合は、値を増加させます。 |
hbase.regionserver.global.memstore.size |
0.35 |
書き込み負荷の高いワークロードでは、フラッシュ前により多くのデータをメモリに保持するために値を増加させます(例: 0.5)。また、lowerLimit の値は、この値より小さく設定する必要があります。 |
hbase.regionserver.global.memstore.lowerLimit |
0.3 |
hbase.regionserver.global.memstore.size の値より小さい値を設定し、強制フラッシュが発生する前の余裕(ヘッドルーム)を確保します。 |
hbase.hregion.memstore.flush.size |
128 MB |
短時間の書き込みバーストが発生するワークロードでは、バースト中のすべての書き込みをメモリに保持し、まとめてフラッシュすることで I/O オーバーヘッドを削減するために値を増加させます。JSON のサンプル例における値(268435456)は 256 MB に相当します。 |
HBase Shell へのアクセス
-
お使いのクラスターのマスターノードに SSH 経由で接続します。「クラスターへのログイン」を参照してください。
-
HBase Shell を起動します。
hbase shell正常に起動した場合、以下と同様の出力が表示されます。SLF4J のバインディング警告は想定される動作であり、機能に影響しません。
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/apps/ecm/service/hbase/1.4.9-1.0.0/package/hbase-1.4.9-1.0.0/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/opt/apps/ecm/service/hadoop/2.8.5-1.5.3/package/hadoop-2.8.5-1.5.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] HBase Shell Use "help" to get list of supported commands. Use "exit" to quit this interactive shell. Version 1.4.9, r8214a16c5d80f077abf1aa01bb312851511a2b15, Thu Jan 31 20:35:22 CST 2019 hbase(main):001:0> -
基本的な HBase Shell コマンドを実行して、接続の確認およびデータの探索を行います。テーブルの作成 次のコマンドでは、
contactsという名前のテーブルを、personalおよびofficeの 2 つのカラムファミリーとともに作成します。hbase(main):001:0> create 'contacts', 'personal', 'office'データの書き込み
hbase(main):002:0> put 'contacts', '1000', 'personal:name', 'John Dole' hbase(main):003:0> put 'contacts', '1000', 'personal:phone', '1-425-000-0001' hbase(main):004:0> put 'contacts', '1000', 'office:phone', '1-425-000-0002' hbase(main):005:0> put 'contacts', '1000', 'office:address', '1111 San Gabriel Dr.'データの読み取り
hbase(main):006:0> get 'contacts', '1000'テーブルのスキャン
hbase(main):007:0> scan 'contacts'テーブルの削除
hbase(main):008:0> disable 'contacts' hbase(main):009:0> drop 'contacts'利用可能なすべてのコマンドを表示するには
helpを実行し、HBase Shell を終了するにはexitを実行します。
ビッグデータフレームワークからの HBase アクセス
Spark を使用した HBase アクセス
Spark ジョブで HBase テーブルの読み取りおよび書き込みを行うには、spark-hbase-connector ライブラリを使用します。
Hadoop を使用した HBase アクセス
HBase データの処理には MapReduce を使用します。「HBase MapReduce のサンプル」で完全なコード例をご確認ください。
Hive を使用した HBase アクセス
-
Hive クラスターのマスターノードにログインし、ZooKeeper ノードの IP アドレスを hosts ファイルに追加します。
$zk_ipは、HBase クラスター内の ZooKeeper ノードの実際の IP アドレスに置き換えてください。$zk_ip emr-cluster -
「Hive と HBase の統合」ガイドに従って、統合を完了します。