S-JIS[2010-03-30/2010-07-06] 変更履歴

HBase 擬似分散環境

HBaseの擬似分散モードをWindowsで試す方法について。


擬似分散環境の構築

HBaseの擬似分散環境は、Hadoopの擬似分散環境上で稼動する。

  1. Hadoopの擬似分散環境を構築しておく。
  2. HBaseの設定ファイルをコピーする。
    $ cd /usr/local/hbase-0.20.3/conf
    $ cp hbase-default.xml hbase-site.xml
  3. HBaseの設定ファイルを修正する。
    設定ファイル 内容 備考
    C:\cygwin\usr\local\hbase-0.20.3\conf\
    hbase-site.xml
      <property>
        <name>hbase.rootdir</name>
        <value>hdfs://localhost:9000/hbase</value>
      </property>
    各regionサーバーで共有される場所。
    HadoopのNameNode(fs.default.name) 配下を指定する。
      <property>
        <name>hbase.tmp.dir</name>
        <value>C:/cygwin/tmp/hbase/tmp</value>
      </property>
    単独環境の設定と同じでOK。

    0.89では擬似分散環境でZooKeeperが使われなくなったので、
    hbase.zookeeper.quorumは設定不要。[2010-07-06]
      <property>
        <name>hbase.zookeeper.quorum</name>
        <value>127.0.0.1</value>
      </property>
  4. 上記で指定したディレクトリーを作っておく。
    $ mkdir -p /tmp/hbase/tmp
    $ chmod 777 /tmp/hbase/tmp

HBaseの擬似分散環境の動作確認

  作業内容 実施コマンド 備考
1 Hadoopを起動する。
$ /usr/local/hadoop-0.20.2/bin/start-all.sh
 
2 HBaseを起動する。
$ /usr/local/hbase-0.20.3/bin/start-hbase.sh
: starting zookeeper, logging to /usr/local/hbase-0.20.3/bin/../logs/hbase-host-zookeeper-host.out
starting master, logging to /usr/local/hbase-0.20.3/bin/../logs/hbase-host-master-host.out
localhost: starting regionserver, logging to /usr/local/hbase-0.20.3/bin/../logs/hbase-host-regionserver-host.out
 
3 HBaseのディレクトリーを確認する。
$ /usr/local/hadoop-0.20.2/bin/hadoop fs -ls /

Found 3 items
drwxr-xr-x - hishidama supergroup 0 2010-03-30 04:35 /hbase
drwxr-xr-x - hishidama supergroup 0 2010-03-30 04:34 /mapred
drwxr-xr-x - hishidama supergroup 0 2010-03-28 13:48 /user

hbase.rootdirで指定したディレクトリーが作られる。
HadoopのWebインターフェースでも確認可。
4 HBase Shellを実行する。
$ /usr/local/hbase-0.20.3/bin/hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Version: 0.20.3, r902334, Mon Jan 25 13:13:08 PST 2010
hbase(main):001:0>
 
  HBase Shellで色々入力してみるサンプル
5 HBase Shellを終了する。
hbase(main):012:0> exit
 
6 HBaseを停止する。
$ /usr/local/hbase-0.20.3/bin/stop-hbase.sh

stopping master............
: stopping zookeeper

 
7 Hadoopを停止する。
$ /usr/local/hadoop-0.20.2/bin/stop-all.sh
 

Javaプログラムの実行

HBaseConfigurationを使用したJavaプログラムは、単独環境で使用するのと全く同じプログラムがそのまま実行できる。

		// 設定ファイルを指定
		HBaseConfiguration conf = new HBaseConfiguration();
		conf.addResource(new Path("C:/cygwin/usr/local/hbase-0.20.3/conf/hbase-site.xml"));
〜

Map/Reduceプログラムの実行

Map/Reduce(Hadoop)のJavaプログラムを実行する際は、Hadoopにhbase-site.xmlを指定する必要がある。

方法その1 HBaseConfigurationはクラスパス直下のhbase-default.xmlとhbase-site.xmlを読み込むようになっており、
Hadoopの起動シェル(HADOOP_HOME/bin/hadoop)はHADOOP_HOME/confをクラスパスに含めるようになっている。
したがって、HBASE_HOME/conf/hbase-default.xmlとhbase-site.xmlをHADOOP_HOME/confにコピーすればよい。
(hbase-site.xmlがhbase-default.xmlの全内容を含んでいる場合は、hbase-site.xmlのみでOK)
cp -p /usr/local/hbase-0.20.3/conf/hbase*.xml /usr/local/hadoop-0.20.2/conf

この際、シンボリックリンクを作る方法は駄目。
クラスパスではシンボリックリンクをリンクとして扱ってくれない為。
ln -s /usr/local/hbase-0.20.3/conf/hbase-site.xml /usr/local/hadoop-0.20.2/conf/
方法その2 HBaseConfigurationがクラスパス直下のhbase-default.xmlとhbase-site.xmlを読み込むようになっているわけだから、
Hadoopの起動シェル内でHBASE_HOME/confをクラスパスに含めればよい。

/usr/local/hadoop-0.20.2/conf/hadoop-env.sh:

# Extra Java CLASSPATH elements. Optional.
HBASE_HOME=/usr/local/hbase-0.20.3
export HADOOP_CLASSPATH=$HBASE_HOME/hbase-0.20.3.jar:$HBASE_HOME/lib/zookeeper-3.2.2.jar:$HBASE_HOME/conf
方法その3 TableInputFormatでは、HBaseConfigurationは(クラスパス上のhbase-default.xmlとhbase-site.xmlを読み込んだ後に)
HadoopのConfigurationで上書きするようになっている。
したがって、HADOOP_HOME/conf/core-site.xml辺りにでもHBaseの設定を入れておけば、それが使われる。

まぁ方法2が一番いいかなぁ。

あとは、Hadoopの擬似分散環境でJavaプログラムを実行する方法と同じ。

HBaseのインポートサンプルを実行する例

$ cd /home/hadoop/rowsum
$ hadoop fs -put input student/input
$ cd /home/hadoop/student		←jarファイルのある場所へ移動
$ hadoop jar student.jar jp.hishidama.hadoop.hbase.HBaseImport 2010-1-1 student/input

※擬似分散環境では、Ant(build.xml)を使う方法でもそのまま実行できる。


HBaseへ戻る / 技術メモへ戻る
メールの送信先:ひしだま