このページでは、HBase クラスターを作成および設定し、HBase ストレージサービスを使用する方法について説明します。
HBase をより有効に活用するため、クラスターの作成時に以下の設定を使用するよう推奨します。
-
パブリックネットワークからのアクセスを有効にします。
-
HBase にアクセスするアプリケーションのサーバーが存在するゾーンを選択します。 ゾーンランダムに割り当てないようにしてください。
-
マスターノードとスレーブノードを含む 4 つ以上のハードウェアノードを選択します。 E-MapReduce は、これらのノードに NameNode、DataNode、JournalNode、HMaster、RegionServer、ZooKeeper の各ロールを作成します。
-
サーバーは 4 コア 16 GB および 8 コア 32 GB を選択します。 設定が低いと、HBase クラスターの安定性が損なわれる可能性があります。
-
費用対効果のため SSD ディスクタイプを選択してください。 使用頻度は低いが大量のストレージスペースが必要になるサービスのディスクの種類として、ベーシックディスクを選択できます。
-
必要に応じてデータ容量を設定します。
-
HBase クラスターはメモリー拡張をサポートします。
HBase の設定
{
"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 |
hbase.regionserver.global.memstore.size | 0.35 |
hbase.regionserver.global.memstore.lowerLimit | 0.3 |
hbase.hregion.memstore.flush.size | 128 MB |
HBase へのアクセス
- ネットワークパフォーマンスを考慮すると、同じゾーン内の ECS インスタンスから E-MapReduce によって作成された HBase クラスターへのアクセスリクエストを開始するよう推奨します。
- HBase クラスターにアクセスする ECS インスタンスは、HBase クラスターと同じセキュリティグループに属している必要があります。 違うグループの場合、アクセスは失敗します。 したがって、E-MapReduce で Hadoop、Spark、または Hive クラスターを作成し、作成したクラスターが HBase にアクセスする必要がある場合は、必ず HBase クラスターと同じセキュリティグループを選択してください。
E-MapReduce コンソールに HBase クラスターを作成したら、HBase ストレージサービスを使用できます。 手順は以下のとおりです。
- マスター IP アドレスと ZooKeeper クラスターのアドレスを取得します。 次の図のとおり、E-MapReduce コンソールの [クラスターの概要] ページで、マスターノードの
IP アドレスと ZooKeeper のアクセスアドレス (イントラネットの IP アドレス) を閲覧できます。
パブリック IP アドレスを有効にしたマスターノードの詳細は、「マスターノードにログインする方法 (How to log on to a master node)」をご参照のうえ、HMaster の WEB UI (localhost:16010) をブラウズしてください。
- HBase Shell を使用して SSH 経由でクラスターのマスターノードに接続できます。 SSH を使用してクラスターのマスターノードにアクセスできます。 HDFS
アカウントに切り替えて HBase Shell を使用してクラスターにアクセスします。 (HBase シェルの詳細は、Apache HBase Web サイトをご参照ください)。
[root@emr-header-1 ~]# su hdfs [hadoop@emr-header-1 root]$ hbase shell HBase Shell; enter 'help<RETURN>' for a list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.1.1, r374488, Fri Aug 21 09:18:22 CST 2015 hbase(main):001:0>
- (同じセキュリティグループ内の) 別の ECS ノードから HBase Shell を使用してクラスターにアクセスします。 Apache HBase Web サイトから
HBase-1.x リソースをダウンロードします (ダウンロードリンク)。 リソースを抽出し、conf/hbase-site.xml を変更してから、以下のとおりクラスターの ZooKeeper アドレスを追加します。
<configuration> <property> <name>hbase.zookeeper.quorum</name> <value>$ZK_IP1,$ZK_IP2,$ZK_IP3</value> </property> </configuration>
その後、 bin/hbase shell コマンドを使用してクラスターにアクセスできます。
E-MapReduce を使用して ECS インスタンスを作成すれば、HBase-1.x リソースをダウンロードせず hbase-site.xml ファイルを変更するだけで済みます。
3.2.0 より上のバージョンの設定ファイルは /etc/ecm/hbase-conf/hbase-site.xml にあります。
3.2.0 より前のバージョンの設定ファイルは /etc/emr/hbase-conf/hbase-site.xml にあります。
- API を使用して HBase クラスターにアクセスするには、以下の Maven 依存関係を追加します。
<groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.1.1</version>
クラスターに接続するための正しい ZooKeeper アドレスを設定します。
Configuration config = HBaseConfiguration.create(); config.set(HConstants.ZOOKEEPER_QUORUM,"$ZK_IP1,$ZK_IP2,$ZK_IP3"); Connection connection = ConnectionFactory.createConnection(config); try { Table table = connection.getTable(TableName.valueOf("myLittleHBaseTable")); try { //Do table operation }finally { if (table ! = null) table.close(); } } finally { connection.close(); }
Apache HBase 開発の詳細は、Apache HBase Web サイトをご参照ください。
コーディング例
- 前提条件
Hbase クラスターにアクセスする ECS インスタンスは、HBase クラスターと同じセキュリティグループに属している必要があります。
- Spark への HBase アクセス許可
spark-hbase-connector をご参照ください。
- Hadoop への HBase アクセス許可
- Hive への HBase アクセス許可
HBase クラスターにアクセスできるのは E-MapReduce 1.2.0 以降のバージョンのクラスターで実行される Hive だけです。 以下のステップを実行します。
- Hive クラスターにログインし、以下の行を追加してホストを変更します。
$zk_ip emr-cluster //$zk_ip is the IP address of the ZooKeeper node in the HBase cluster.
- Hive の操作方法の詳細は、「Hive HBase の統合 (Hive HBase Integration)」をご参照ください。
- Hive クラスターにログインし、以下の行を追加してホストを変更します。