このページでは、HBase クラスターを作成および設定し、HBase ストレージサービスを使用する方法について説明します。

HBase をより有効に活用するため、クラスターの作成時に以下の設定を使用するよう推奨します。

  • パブリックネットワークからのアクセスを有効にします。

  • HBase にアクセスするアプリケーションのサーバーが存在するゾーンを選択します。 ゾーンランダムに割り当てないようにしてください。

  • マスターノードとスレーブノードを含む 4 つ以上のハードウェアノードを選択します。 E-MapReduce は、これらのノードに NameNode、DataNode、JournalNode、HMaster、RegionServer、ZooKeeper の各ロールを作成します。

  • サーバーは 4 コア 16 GB および 8 コア 32 GB を選択します。 設定が低いと、HBase クラスターの安定性が損なわれる可能性があります。

  • 費用対効果のため SSD ディスクタイプを選択してください。 使用頻度は低いが大量のストレージスペースが必要になるサービスのディスクの種類として、ベーシックディスクを選択できます。

  • 必要に応じてデータ容量を設定します。

  • HBase クラスターはメモリー拡張をサポートします。

HBase の設定

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 ストレージサービスを使用できます。 手順は以下のとおりです。

  1. マスター IP アドレスと ZooKeeper クラスターのアドレスを取得します。 次の図のとおり、E-MapReduce コンソールの [クラスターの概要] ページで、マスターノードの IP アドレスと ZooKeeper のアクセスアドレス (イントラネットの IP アドレス) を閲覧できます。

    パブリック IP アドレスを有効にしたマスターノードの詳細は、「マスターノードにログインする方法 (How to log on to a master node)」をご参照のうえ、HMaster の WEB UI (localhost:16010) をブラウズしてください。

  2. 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>
  3. (同じセキュリティグループ内の) 別の 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 にあります。

  4. 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 アクセス許可

    「HBase MapReduce の例 (HBase MapReduce Examples)」をご参照ください。

  • Hive への HBase アクセス許可
    HBase クラスターにアクセスできるのは E-MapReduce 1.2.0 以降のバージョンのクラスターで実行される Hive だけです。 以下のステップを実行します。
    1. Hive クラスターにログインし、以下の行を追加してホストを変更します。
      $zk_ip emr-cluster //$zk_ip is the IP address of the ZooKeeper node in the HBase cluster.
    2. Hive の操作方法の詳細は、「Hive HBase の統合 (Hive HBase Integration)」をご参照ください。