HBase にリモートマシンからアクセスする

HBaseを利用するJavaプログラムの単体テストを記述するにはどうしたらいいのか、と昨日からもんもんとしている訳です。

  • HTableをmockする 
  • CIサーバのローカルにHBaseをインストールする
  • CIサーバからHBaseにリモートアクセスする

という方法が考えられるのですが、やっぱり最後のやつかなあと今思い至りました。ということで、リモートのHBaseにアクセスする方法を模索します。

デフォルトの設定では、localhost:2181のZooKeeperに接続して、その後RegionServerを探しにいって、その後、、なにしてるかあとで調べるとしてとにかくいっぱいのサービスにつなぎにいきます。これを変えるには、サーバの設定とクライアントの設定を変えます。

  • HBaseのZooKeeperがリモートからの接続を受け付けるようにする。これは、サーバの$HBASE_HOME/hbase-site.xmlを変更します。
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>localhost,(hostIP),myhost.example.com</value>
  </property>
  • クライアントの設定で、リモートのHBaseにアクセスするようにする。 Javaであればこんな感じ。
		Configuration conf = HBaseConfiguration.create();
		conf.set("hbase.zookeeper.quorum", "myhost.example.com");

なんとなくこれだけでいけるのではないか、と思っていました。
でも、これだけじゃだめだった。。

http://wiki.apache.org/hadoop/Hbase/Troubleshooting#A1

サーバの/etc/hostsをこの通り書き換えてください。
これで、リモートサーバからアクセスできるようになりました。わーい。テスト、かける。

ZooKeeperなにしてるの?とか、RegionServerってなによ、ということについては、今度書きます。