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ってなによ、ということについては、今度書きます。