1.3. 通常のスタートガイド

1.3.1. 必要なもの

HBase を実行するには、以下に示すものが必要です。以下のセクションを注意深く読んで、必要なものをすべて用意してください。不足しているものがあると、奇妙なエラーが発生したり、データが失われることがあります。

1.3.1.1. java

Hadoop 同様、HBase では Oracle の java 6 が必要です。問題のある u18 を除いて、通常は利用可能な最新のバージョンを使うとよいでしょう (本書の執筆時点では u24 が最新バージョンです)。

1.3.1.2. hadoop

このバージョンの HBase は、Hadoop 0.20.x で動作します。Hadoop 0.21.x (および 0.22.x) では動作しません。永続的 sync のある HDFS 上で HBase を実行しないと、HBase のデータは失われます。現在、この永続的 sync の属性を備えているのは、branch-0.20-append ブランチだけです[1]。現在までこのブランチからの公式リリースは行われていないので、このブランチの指示を参考に自分で Hadoop をビルドする必要があります。この URL (branch-0.20-append) をチェックしてください。Hadoop のビルドの手順については、Hadoop の「How To Release」の記事の中ほどにある「Build Requirements」のセクションを参照してください。

あるいは、自分でビルドする代わりに Cloudera の CDH3 を使う方法もあります。CDH には、永続的 sync を追加するのに必要な 0.20-append パッチが含まれています (CDH3 ベータ、すなわち b2、b3、または b4 で十分です)。

HBase は Hadoop に依存しているので、HBase は lib ディレクトリ下に Hadoop jar のインスタンスをバンドルしています。このバンドルされている Hadoop は、該当する HBase のリリースの時点での Apache branch-0.20-append ブランチから作成されたものです。実際にクラスタ上で実行する Hadoop のバージョンが HBase のバージョンと一致していることが非常に重要です。バージョンミスマッチの問題を回避するために、HBase の lib ディレクトリにある hadoop jar ファイルを、実際にクラスタ上で実行する hadoop jar ファイルで置き換えてください。このとき、必ずクラスタ上のすべての jar を置き換えてください。バージョンミスマッチの問題とは、CDH では HDFS-724 への対応がなされていないのに対し、Hadoop の branch-0.20-append ブランチでは HDFS-724 への対応がなされているといった問題です。このパッチによって RPC バージョンが変わりますが、これはプロトコルが変更されたためです。バージョンミスマッチの問題はさまざまな現象となって表れますが、しばしばすべてがハングアップしたような状態になります。

Hadoop 0.20.2 の tarball に含まれている jar を、HBase に含まれている sync 対応の Hadoop jar で置き換えることはできますか?

置き換えてもかまいません。メーリングリストに投稿された最近のメッセージで、動作するとの報告があります。

Hadoop のセキュリティ

HBase は、Y! 0.20S や CDH3B3 など、Hadoop のセキュリティ機能を組み込んだ任意の Hadoop 0.20.x で動作します。ただしその場合、上で説明しているように、HBase に付属する Hadoop jar をセキュアなバージョンの Hadoop jar で置き換えてください。

1.3.1.3. ssh

リモート Hadoop デーモンとリモート HBase デーモンを管理する Hadoop スクリプトを使えるようにするために、ssh をインストールし、sshd を実行しておく必要があります。パスワードなしの ssh で、ローカルノードを含むすべてのノードにログインできなければなりません (Google で "ssh passwordless login" を検索してください)。

1.3.1.4. DNS

HBase はローカルのホスト名を使用して自身の IP アドレスを取得します。正引きと逆引きの両方の DNS 解決がきちんと行えるようになっている必要があります。

コンピュータに複数のインタフェースがある場合、HBase はプライマリホスト名の解決先となるインタフェースを使用します。

このような動作が条件に合わない場合には、hbase.regionserver.dns.interface を設定すれば、プライマリインタフェースを指定できます。この指定が機能するのは、クラスタの構成が一貫したものになっていて、すべてのホストが同じネットワークインタフェース設定になっている場合だけです。

別の方法として、システム全体のデフォルトとは異なるネームサーバーを選択するよう、hbase.regionserver.dns.nameserver を設定するやり方があります。

1.3.1.5. NTP

クラスタメンバーのクロックは基本的に合っている必要があります。いくらかのずれは許容されますが、ずれが激しい場合には動作がおかしくなることがあります。クラスタ上で NTP または同等のものを実行してください。

データの問い合わせで問題が生じたり、クラスタがおかしな動作をするような場合は、システム時間をチェックしてください。

1.3.1.6. ulimit

HBase はデータベースなので、同時に多くのファイルを使用します。*nix システムのデフォルトの ulimit -n である 1024 では不十分です。データを大量にロードすると、「FAQ: Why do I see "java.io.IOException...(Too many open files)" in my logs?」にあるとおり、ログに "java.io.IOException...(Too many open files)" と出力されます。また、次のようなエラーが出力されることもあります。

      2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException
      2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901
      

こうした問題を避けるために、ファイルデスクリプタの上限を変更します。10k 以上に設定してください。方法については、上に示した FAQ を参照してください。

正確を期して言うと、HBase プロセスを実行しているユーザーのファイルデスクリプタの上限の引き上げは、オペレーティングシステム側で設定することであって、HBase の設定ではありません。また、よくある勘違いとして、管理者はファイルデスクリプタの上限を引き上げたものの、そのユーザーとは別のユーザーで HBase が実行されるということがあります。HBase は、ulimit の値をログの先頭の行に出力します。この値が適切な値になっているかどうかを確認してください。[2]

1.3.1.6.1. Ubuntu での ulimit の設定

Ubuntu を使用している場合は、以下のように変更する必要があります。

ファイル /etc/security/limits.conf に次のような行を追加します。

hadoop  -       nofile  32768

上の hadoop は、実際に Hadoop と HBase を実行するユーザーで置き換えてください。それぞれを別のユーザーで実行する場合は、ユーザーごとに 1 つのエントリが必要です。

ファイル /etc/pam.d/common-session の最後の行として、次の行を追加します。

session required  pam_limits.so

この設定を行わないと、/etc/security/limits.conf に加えた変更は適用されません。

編集を終えたら、変更内容を有効にするために、必ずいったんログアウトしてからログインし直します。

1.3.1.7. dfs.datanode.max.xcievers

Hadoop HDFS DataNode には、一度にサービスを提供できるファイル数に上限があります。この上限を表すパラメータは xcievers です (ご推察のとおり、スペルは間違っています)。このパラメータについても、データのロードを行う前に、Hadoop の conf/hdfs-site.xmlxcievers の値を少なくとも次のように設定していることを確認してください。

      <property>
        <name>dfs.datanode.max.xcievers</name>
        <value>4096</value>
      </property>
      

設定を行ったら必ず HDFS を再起動してください。

上の設定を行わないと、奇妙なエラーが発生する可能性が高くなります。最終的には、xcievers を超えたことを警告するエントリが DataNode のログに出力されるようになりますが、その前兆として、ブロックが見つからないというメッセージが表示されます。たとえば次のようなメッセージです: 10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes contain current block. Will get new block locations from namenode and retry...

1.3.1.8. Windows

HBase は Windows 上ではほとんどテストされていません。Windows 上で実働環境の HBase を実行することは推奨されません。

Windows 上で HBase を実行する場合は、*nix ライクな環境を用意してシェルスクリプトを使えるようにするために、Cygwin をインストールしなければなりません。詳細については、「Cygwin を使った Windows への HBase のインストール」を参照してください。また、Windows ユーザーが投稿した最新の対処方法についても、ユーザー向けメーリングリストで検索して参照してください。

1.3.2. HBase の実行モード: スタンドアロンモードと分散モード

HBase には、スタンドアロンモード分散モードの 2 つの実行モードがあります。デフォルトでは、HBase はスタンドアロンモードで実行されます。分散デプロイをセットアップするには、HBase の conf ディレクトリにある複数のファイルを編集して HBase の設定を行う必要があります。

どのモードで実行する場合も、conf/hbase-env.sh を編集し、使用する java を HBase に教えてやる必要があります。このファイルでは、JVM のヒープサイズやその他のオプション、ログファイルの場所など、HBase が参照する環境変数を設定します。JAVA_HOME には、インストールした java のルートを設定してください。

1.3.2.1. スタンドアロンモード

これは HBase のデフォルトの実行モードです。スタンドアロンモードについては、「クイックスタートガイド」で説明しています。スタンドアロンモードでは、HBase は HDFS の代わりにローカルファイルシステムを使用し、すべての HBase デーモンとローカル ZooKeeper を 1 つの JVM 内で実行します。ZooKeeper は既知のポートにバインドするので、クライアントは HBase にアクセスすることができます。

1.3.2.2. 分散モード

分散モードには、分散モードでありながらすべてのデーモンが単一のノードで実行される疑似分散モードと、デーモンがクラスタ内のすべてのノードに散らばって配置される完全分散モードがあります[3]

分散モードでは Hadoop Distributed File System (HDFS) のインスタンスが必要です。HDFS のセットアップ方法については、Hadoop の「必要なものと手順」を参照してください。先へ進む前に、適切に動作する HDFS が用意できていることを確認してください。

以下では、2 つの分散モードのセットアップ方法を説明します。疑似分散モード完全分散モードのどちらの場合も、インストールした HBase の起動、検証、および使用については、あとの「インストールした HBase の実行と動作確認」で説明しています。どちらのデプロイタイプについても、適用される検証スクリプトは同じです。

1.3.2.2.1. 疑似分散モード

疑似分散モードとは、1 台のホスト上で実行される分散モードのことです。HBase 上でのテストとプロトタイピングにはこのモードを使用してください。このモードは、実働環境や HBase のパフォーマンス評価には使用しないでください。

HDFS が正しくセットアップされていることを確認したら、conf/hbase-site.xml を編集します。このファイルには、「HBase のデフォルト設定」と「HDFS クライアント設定」に対するローカルなカスタマイズ設定や上書きする設定を追加します。hbase.rootdir プロパティを設定し、実行中の Hadoop HDFS インスタンスを指すようにします。このプロパティは、使用する Hadoop ファイルシステムのインスタンスを HBase に知らせます。たとえば、次のプロパティを hbase-site.xml に追加すると、NameNode がローカルマシン上のポート 9000 にある HDFS 上の /hbase ディレクトリを使う必要があることを、さらにレプリカを 1 つだけ実行する必要があること (疑似分散モードでの推奨設定) を HBase に教えることになります。

<configuration>
  ...
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://localhost:9000/hbase</value>
    <description>リージョンサーバーによって共有されるディレクトリ。
    </description>
  </property>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>HLog および HFile ストレージのレプリケーション数。HDFS DataNode の数より多い値は指定できません。
    </description>
  </property>
  ...
</configuration>

注記

hbase.rootdir ディレクトリは、HBase に作成させるようにしてください。ディレクトリを HBase に作成させないと、「期待されるファイルがディレクトリに存在しないので移行作業 (マイグレーション) を行う必要があります」という内容の HBase の警告メッセージが表示されます (ディレクトリを HBase に作成させた場合、これらのファイルは HBase によって作成されます)。

注記

上の設定例では localhost にバインドしています。この場合、リモートクライアントからは接続することができません。リモートクライアントから接続する必要がある場合は、目的の構成に応じて設定を変更してください。

次は、疑似分散モードでインストールした HBase の実行と動作確認の方法について説明している「インストールした HBase の実行と動作確認」に進んでください。[4]

1.3.2.2.2. 完全分散モード

2 台以上のホスト上で HBase を完全分散モードで実行するには、ここで説明する設定を行ってください。まず、hbase-site.xml ファイルにプロパティ hbase.cluster.distributed を追加して値に true を設定し、hbase.rootdir に、HBase のデータの書き込み先となる適切な HDFS NameNode と場所を指定します。たとえば、NameNode が namenode.example.org のポート 9000 で実行されていて、HDFS 内の HBase のホームを /hbase にするには、次のように設定します。

<configuration>
  ...
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://namenode.example.org:9000/hbase</value>
    <description>リージョンサーバーによって共有されるディレクトリ。
    </description>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>クラスタの実行モード。次のいずれかの値を指定します。
      false: スタンドアロンモードと疑似分散モードで、ZooKeeper を HBase が管理する場合。
      true: ZooKeeper クォーラムを HBase が管理しない完全分散モードの場合 (hbase-env.sh を参照)。
    </description>
  </property>
  ...
</configuration>
1.3.2.2.2.1. regionservers

完全分散モードの場合は、さらに conf/regionservers も修正する必要があります。regionservers ファイルには、HRegionServer を実行するすべてのホストを 1 行に 1 つずつ入力します (HBase の regionservers ファイルは、Hadoop の slaves ファイルに相当するファイルです)。このファイルに入力されているすべてのサーバーは、HBase クラスタの起動と停止時に、それに合わせて起動または停止されます。

1.3.2.2.2.2. ZooKeeper

分散モードの HBase は、実行中の ZooKeeper クラスタに依存しています。すべての参加ノードおよびクライアントが、実行中の ZooKeeper アンサンブルにアクセスできるようになっている必要があります。デフォルトでは、HBase がユーザーに代わって ZooKeeper "クラスタ" を管理します。具体的には、HBase の起動/停止プロセスの一環として、HBase が ZooKeeper アンサンブルの起動と停止を行います。このような方法とは別に、ZooKeeper アンサンブルを HBase と切り離して管理し、使用する ZooKeeper アンサンブルを HBase に教えてやるやり方もあります。ZooKeeper を HBase が管理するかどうかを指定するには、conf/hbase-env.shHBASE_MANAGES_ZK 変数を設定します。HBASE_MANAGES_ZK 変数のデフォルトの値は true で、HBase の起動/停止プロセスの一環として、HBase が ZooKeeper アンサンブルの起動/停止を行う設定になっています。

HBase が ZooKeeper アンサンブルを管理する場合、ZooKeeper の設定は ZooKeeper 本来の zoo.cfg ファイルで設定できます。また、もっと簡単な方法として、conf/hbase-site.xml で ZooKeeper のオプションを直接指定することもできます。ZooKeeper の設定オプションは、ZooKeeper のオプションの前にプリフィックスとして hbase.zookeeper.property を付けることで、HBase の hbase-site.xml XML 設定ファイルのプロパティとして設定できます。たとえば、ZooKeeper の clientPort の設定は、hbase.zookeeper.property.clientPort プロパティを設定することで変更できます。ZooKeeper の設定を含め、HBase によって使われるすべてのデフォルト値については、「HBase のデフォルト設定」のセクションを参照してください。ZooKeeper の設定については、このセクションの hbase.zookeeper.property プリフィックスが付いているプロパティに注目してください。[5]

少なくとも、ZooKeeper アンサンブルを構成するサーバーについては、hbase-site.xmlhbase.zookeeper.quorum プロパティを使って指定しておかなければなりません。このプロパティのデフォルト値は localhost の単一のアンサンブルメンバーになっており、完全分散モードの HBase で使うには不適切な設定です。(ローカルマシンだけにバインドするので、リモートクライアントからは接続することができません。)

ZooKeeper マシンは何台実行すればよいですか?

1 ノードだけの ZooKeeper アンサンブルを実行することもできますが、実働環境では 3、5、または 7 台のマシンから構成される ZooKeeper アンサンブルを実行することを推奨します。アンサンブルのメンバーが多ければ多いほど、ホストに障害が発生したときの耐性も高くなります。なお、マシンの台数は奇数にしてください。メンバー数が偶数の場合、クォーラム (定足数) を構成できなくなります。できれば各 ZooKeeper サーバーには約 1 GB の RAM を搭載し、ZooKeeper 専用のディスクを用意してください (専用のディスクを用意することが、ZooKeeper アンサンブルのパフォーマンスを高めるための最も確実な方法です)。非常に負荷の高いクラスタの場合、ZooKeeper サーバー群はリージョンサーバー群 (DataNode と TaskTracker) とは別のマシンで実行してください。

たとえば、ノード rs{1,2,3,4,5}.example.com のポート 2222 (デフォルトは 2181 です) にバインドされている ZooKeeper クォーラムを HBase に管理させるには、conf/hbase-env.shHBASE_MANAGE_ZK の設定を行っている行がコメントアウトされているか、そうでない場合には true が設定されていることを確認し、さらに conf/hbase-site.xml を編集して、hbase.zookeeper.property.clientPorthbase.zookeeper.quorum を適切に設定します。また、hbase.zookeeper.property.dataDir をデフォルト以外の場所にする必要もあります。デフォルトでは、ZooKeeper の永続データは /tmp 以下に置かれますが、このディレクトリの内容はしばしばシステムの再起動時に消去されるからです。次に示す設定例では、ZooKeeper の永続データを /usr/local/zookeeper に置くようにしています。

  <configuration>
    ...
    <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>2222</value>
      <description>ZooKeeper の設定ファイル zoo.cfg のプロパティ。
      クライアントが接続するポートです。
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>rs1.example.com,rs2.example.com,rs3.example.com,rs4.example.com,rs5.example.com</value>
      <description>ZooKeeper クォーラムを構成するサーバーをカンマで区切って指定します。
      たとえば、「host1.mydomain.com,host2.mydomain.com,host3.mydomain.com」のように指定します。
      デフォルトでは、ローカルモードと疑似分散モードの場合、localhost に設定されています。
完全分散モードの場合には、ZooKeeper クォーラムを構成するサーバーをすべて指定する必要があります。
hbase-env.sh で HBASE_MANAGES_ZK が設定されている場合、このプロパティで指定されたサーバーが、HBase によって起動/停止されるサーバーになります。
      </description>
    </property>
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/usr/local/zookeeper</value>
      <description>ZooKeeper の設定ファイル zoo.cfg のプロパティ。
      スナップショットを格納するディレクトリを指定します。
      </description>
    </property>
    ...
  </configuration>
1.3.2.2.2.2.1. 既存の ZooKeeper アンサンブルの使用

HBase が管理していない既存の ZooKeeper クラスタを使うには、conf/hbase-env.shHBASE_MANAGES_ZKfalse を設定します。

  ...
  # Tell HBase whether it should manage it's own instance of Zookeeper or not.
  export HBASE_MANAGES_ZK=false

次に、アンサンブルの場所とクライアントポート (標準以外のポートを使う場合) を hbase-site.xml で設定するか、または適切に設定した zoo.cfg を HBase の CLASSPATH に追加します。HBase は、hbase-site.xml の設定よりも zoo.cfg の設定を優先します。

ZooKeeper を HBase が管理する場合、HBase は自身の通常の起動/停止プロセスの一環として、ZooKeeper サーバーの起動と停止を行います。HBase の起動/停止とは切り離して ZooKeeper をユーザー自身で実行する場合は、次の操作を行います。

${HBASE_HOME}/bin/hbase-daemons.sh {start,stop} zookeeper

この方法を使えば、HBase とは関係なく、ZooKeeper クラスタを HBase から起動できることに注意してください。HBase が再起動する場合も ZooKeeper を実行したままにして、HBase のシャットダウン時に一緒に ZooKeeper が停止しないようにするには、HBASE_MANAGES_ZK に必ず false を設定しておきます。

HBase とは独立して ZooKeeper クラスタを実行する方法の詳細については、「ZooKeeper スタートガイド」を参照してください。

1.3.2.2.2.3. HDFS クライアントの設定

Hadoop クラスタ上で HDFS クライアントの設定を行っている場合、すなわちサーバー側の設定とは別に、HDFS クライアントに使わせる設定がある場合は、次のいずれかの操作を行わない限り、このような設定は HBase からは認識されません。

  • hbase-env.sh の中で、HADOOP_CONF_DIR へのポインタを HBASE_CLASSPATH 環境変数に追加する。

  • hdfs-site.xml (または hadoop-site.xml) のコピー、あるいはより適切な方法として、これらのファイルへのシンボリックリンクを ${HBASE_HOME}/conf に追加する。

  • HDFS クライアントの設定がごく小量の場合には、それらの設定を hbase-site.xml に追加する。

このような HDFS クライアントの設定のひとつに dfs.replication があります。たとえば、レプリケーション数を 5 で実行したい場合でも、上のいずれかの操作を行って、HBase から設定を読み取ることができるようにしない限り、HBase はデフォルトのレプリケーション数である 3 でファイルを作成します。

1.3.2.3. インストールした HBase の実行と動作確認

まず、HDFS が実行されていることを確認します。HADOOP_HOME ディレクトリで bin/start-dfs.sh を実行して Hadoop HDFS デーモンを起動します。HDFS が適切に起動したかどうかは、Hadoop ファイルシステムに対して putget を行うことで確認できます。通常、HBase は MapReduce デーモンを使用しません。これらのデーモンは起動する必要はありません。

ZooKeeper を HBase に管理させずに自分で管理している場合は、ZooKeeper を起動し、実行されていることを確認します。それ以外の場合は、HBase が自身の起動プロセスの一環として、ユーザーに代わって ZooKeeper を起動します。

次のコマンドを実行して HBase を起動します。

bin/start-hbase.sh
HBASE_HOME ディレクトリで上のコマンドを実行します。

これで、HBase のインスタンスが実行中になります。HBase のログは logs サブディレクトリにあります。HBase の起動時に問題があったら、ログを参照してください。

HBase は、重要な属性を表示するためのユーザーインタフェースも起動します。このユーザーインタフェースは、デフォルトでは Master ホストのポート 60010 にデプロイされます (HBase リージョンサーバーはデフォルトではポート 60020 でリスンし、情報表示用の HTTP サーバーをポート 60030 で起動します)。Master が master.example.org という名前のホストのデフォルトポートで実行されている場合、この Master のホームページを表示するには、ブラウザで http://master.example.org:60010 にアクセスします。

HBase 起動後のテーブルの作成、データの追加、挿入したデータのスキャン、テーブルの無効化と削除の方法については、「Shell による操作」を参照してください。

HBase Shell の終了後に HBase を停止するには、次のコマンドを入力します。

$ ./bin/stop-hbase.sh
stopping hbase...............

場合によっては、HBase がシャットダウンするまでにある程度時間がかかります。クラスタを構成するマシンの数が多いと、それだけ時間も余計にかかります。分散モードで HBase を実行している場合は、HBase が完全にシャットダウンするまで待ってから Hadoop デーモンを停止してください。

1.3.3. 設定例

1.3.3.1. 分散モードで実行する HBase の基本設定

10 ノードのクラスタを使って分散モードで実行する HBase の基本設定の例を示します。この例では、ノードの名前は example0example1、...、のようになっており、example9 までのノードがあります。HBase Master と HDFS NameNode はノード example0 で実行します。リージョンサーバーは、ノード example1example9 で実行します。ZooKeeper アンサンブルは 3 つのノードで構成し、これを example1example2、および example3 のデフォルトポートで実行します。ZooKeeper のデータは、ディレクトリ /export/zookeeper に永続化します。このような例の場合、HBase conf ディレクトリにある主要設定ファイル、すなわち hbase-site.xmlregionservers、および hbase-env.sh の内容は次のようになります。

1.3.3.1.1. hbase-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>example1,example2,example3</value>
    <description>ZooKeeper クォーラムを構成するサーバーをカンマで区切って指定します。
    </description>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/export/zookeeper</value>
    <description>ZooKeeper の設定ファイル zoo.cfg のプロパティ。
    スナップショットを格納するディレクトリを指定します。
    </description>
  </property>
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://example0:9000/hbase</value>
    <description>リージョンサーバーによって共有されるディレクトリ。
    </description>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    <description>クラスタの実行モード。次のいずれかの値を指定します。
      false: スタンドアロンモードと疑似分散モードで、ZooKeeper を HBase が管理する場合。
      true: ZooKeeper クォーラムを HBase が管理しない完全分散モードの場合 (hbase-env.sh を参照)。
    </description>
  </property>
</configuration>

    
1.3.3.1.2. regionservers

このファイルには、リージョンサーバーを実行するすべてのノードを記述します。現在の例では、HBase Master と HDFS NameNode を実行する最初のノード example0 を除くすべてのノードでリージョンサーバーを実行するので、ファイルの内容は次のようになります。

    example1
    example3
    example4
    example5
    example6
    example7
    example8
    example9
    
1.3.3.1.3. hbase-env.sh

以下に示すのは、hbase-env.sh ファイルとの違いを diff を使って出力したものです。HBase のヒープサイズをデフォルトの 1GB から変更し、4GB に設定しています。

    
$ git diff hbase-env.sh
diff --git a/conf/hbase-env.sh b/conf/hbase-env.sh
index e70ebc6..96f8c27 100644
--- a/conf/hbase-env.sh
+++ b/conf/hbase-env.sh
@@ -31,7 +31,7 @@ export JAVA_HOME=/usr/lib//jvm/java-6-sun/
 # export HBASE_CLASSPATH=
 
 # The maximum amount of heap to use, in MB. Default is 1000.
-# export HBASE_HEAPSIZE=1000
+export HBASE_HEAPSIZE=4096
 
 # Extra Java runtime options.
 # Below are what we set by default.  May only work with SUN JVM.

    

クラスタを構成するすべてのノードに conf ディレクトリの内容をコピーするには、rsync を使用します。



[1] 関連パッチの一覧については、branch-0.20-append の CHANGES.txt を参照してください。

[2] Hadoop クラスタの設定に役立つ有益な情報源として Aaron Kimballs の「Configuration Parameters: What can you just ignore?」があるので、参照してください。

[3] 疑似分散モードと完全分散モードという用語は Hadoop に由来しています。

[4] 疑似分散モードで実行するときに追加の Master とリージョンサーバーを起動する方法については、「疑似分散モードでの HBase の実行」を参照してください。

[5] ZooKeeper の設定の完全な一覧については、ZooKeeper の zoo.cfg を参照してください。HBase には zoo.cfg は含まれていないので、適切な ZooKeeper をダウンロードして、その中の conf ディレクトリを探す必要があります。