HBaseの擬似分散モードをWindowsで試す方法について。
|
|
HBaseの擬似分散環境は、Hadoopの擬似分散環境上で稼動する。
$ cd /usr/local/hbase-0.20.3/conf $ cp hbase-default.xml hbase-site.xml
| 設定ファイル | 内容 | 備考 |
|---|---|---|
|
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>
|
$ mkdir -p /tmp/hbase/tmp $ chmod 777 /tmp/hbase/tmp
| 作業内容 | 実施コマンド | 備考 | |
|---|---|---|---|
| 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 |
|
| 3 | HBaseのディレクトリーを確認する。 |
$ /usr/local/hadoop-0.20.2/bin/hadoop fs -ls /
|
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. |
|
| →HBase Shellで色々入力してみるサンプル | |||
| 5 | HBase Shellを終了する。 |
|
|
| 6 | HBaseを停止する。 |
$ /usr/local/hbase-0.20.3/bin/stop-hbase.sh
|
|
| 7 | Hadoopを停止する。 |
$ /usr/local/hadoop-0.20.2/bin/stop-all.sh |
|
HBaseConfigurationを使用したJavaプログラムは、単独環境で使用するのと全く同じプログラムがそのまま実行できる。
// 設定ファイルを指定
HBaseConfiguration conf = new HBaseConfiguration();
conf.addResource(new Path("C:/cygwin/usr/local/hbase-0.20.3/conf/hbase-site.xml"));
〜
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プログラムを実行する方法と同じ。
$ 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)を使う方法でもそのまま実行できる。