HBaseをインストールするためにはZooKeeperというものをインストールする必要があるらしい。
というわけで、ZooKeeper というものをインストール。
っていうか、けっこう書いてたのに左側の「はてなダイアリープラス」のバナーを間違ってクリックしたらすべてが吹っ飛んだ・・・
- インストールしたバージョン
今回、試したバージョンは 3.3.0 です。
なお、インストールに関して、Hadoop は不要のようです(たぶん)。
- 概要とか
Hadoop のサブプロジェクトの1つです。
公式:http://hadoop.apache.org/zookeeper/
日本語の概要:http://oss.infoscience.co.jp/hadoop/zookeeper/index.html
「分散アプリケーションのためのパフォーマンスの高いコーディネーションサービス」ということですが、まだちょっとピンときてません。
分散処理におけるトランザクション管理とかそういうたぐいのものかと思いますが、まぁ、現時点ではそれが目的ではないので、未来にゆだねたいと思います。
- インストール
ダウンロードして、解凍、設定ちょっといじって完了といういい感じな手順となっています。
インストール先は /home/issei/app/zookeeper-3.3.0/ になりました。
ですので、以下、ディレクトリは上記ディレクトリからの相対パスとなります。
設定ファイルは以下のようにしました
myhdfs1> cat zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/issei/tmp/zookeeper clientPort=2181
サンプル(conf/zoo_sample.cfg)をコピーして、コメントを削除した感じです。
ドキュメントのページには initLimit と syncLimit については触れられていません。ので、サンプルのままとなっています("tick"のニュアンスがまだピンとこないので、とりあえずそのままということで・・・)。
分散モード?で実行するためには追加で設定を行う必要があるみたいですが、まぁ、現時点ではこれがメインというわけではないので、次の機会にとっておくことにします。一応、Getting Started の最後のほうに書いてあるみたい。
- 実行してみる。
bin ディレクトリに sh あり。環境設定の sh もチェックしつつ、ドキュメントもみてみましたが、JAVA_HOME を設定する必要があるとか、そういう話は書いていないっぽい。ので、
myhdfs1> bin/zkServer.sh start
で起動する。
起動するとコンソールにログがつらつらと出力されます。
- ログに関して
conf/log4j.properties があります。デフォルトで、rootLogger の設定が
# DEFAULT: console appender only log4j.rootLogger=INFO, CONSOLE
となっていますので、ファイルには出力されません。
が、ファイルへの書き込み(RollingFileAppender)も定義されているみたいですので、実際にはコメントアウトされている
# Example with rolling log file #log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE
のほうを有効にすれば良いかと思います(試していませんが)。
- 停止
停止するには、起動時に使用した zkServer.sh に stop を与えて実行するらしい。
最初、Ctrl-C してみたのですが、クライアントから接続(後述)してみると起動した状態でした。
以下、jps でプロセスを確認して、zkServer.sh stop を実行し、再度 jps で確認、という流れ。
myhdfs1> jps 6856 Jps 23361 JobTracker 23288 SecondaryNameNode 23168 DataNode 5615 QuorumPeerMain 23052 NameNode 23479 TaskTracker myhdfs1> ./bin/zkServer.sh stop JMX enabled by default Using config: /home/issei/app/zookeeper-3.3.0/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED myhdfs1> jps 6910 Jps 23361 JobTracker 23288 SecondaryNameNode 23168 DataNode 23052 NameNode 23479 TaskTracker [issei@cgp1 bin]$
という感じ。5615 QuorumPeerMain
がなくなっていることがわかります。
- とりあえず接続してみる
Cのクライアントもあるようですが、とりあえず今回は Java のほうで。
myhdfs1> ./bin/zkCli.sh -server 127.0.0.1:2181 Connecting to 127.0.0.1:2181 2010-04-20 18:03:10,245 - INFO [main:Environment@97] - Client environment:zookeeper.version=3.3.0-925362, built on 03/19/2010 18:38 GMT 2010-04-20 18:03:10,251 - INFO [main:Environment@97] - Client environment:host.name=xxx.yyy.zzz 2010-04-20 18:03:10,252 - INFO [main:Environment@97] - Client environment:java.version=1.6.0_18 2010-04-20 18:03:10,253 - INFO [main:Environment@97] - Client environment:java.vendor=Sun Microsystems Inc. 2010-04-20 18:03:10,254 - INFO [main:Environment@97] - Client environment:java.home=/usr/local/jdk1.6.0_18/jre ... ログが続く ... 2010-04-20 18:03:10,321 - INFO [main-SendThread():ClientCnxn$SendThread@1000] - Opening socket connection to server /127.0.0.1:2181 Welcome to ZooKeeper! JLine support is enabled 2010-04-20 18:03:10,373 - INFO [main-SendThread(サーバ名:2181):ClientCnxn$SendThread@908] - Socket connection established to サーバ名/127.0.0.1:2181, initiating session 2010-04-20 18:03:10,391 - INFO [main-SendThread(サーバ名:2181):ClientCnxn$SendThread@701] - Session establishment complete on server サーバ名/127.0.0.1:2181, sessionid = 0x1281a050e570002, negotiated timeout = 30000 WATCHER:: WatchedEvent state:SyncConnected type:None path:null [zk: 127.0.0.1:2181(CONNECTED) 0]
で、最後の[zk: 127.0.0.1:2181(CONNECTED) 0]がプロンプトになります。
help と打つとヘルプが出力されます。
[zk: 127.0.0.1:2181(CONNECTED) 0] help ZooKeeper -server host:port cmd args connect host:port get path [watch] ls path [watch] set path data [version] delquota [-n|-b] path quit printwatches on|off create [-s] [-e] path data acl stat path [watch] close ls2 path [watch] history listquota path setAcl path acl getAcl path sync path redo cmdno addauth scheme auth delete path [version] setquota -n|-b val path [zk: 127.0.0.1:2181(CONNECTED) 1] quit Quitting... 2010-04-20 18:03:12,212 - INFO [main:ZooKeeper@538] - Session: 0x1281a050e570002 closed myhdfs1>
とりあえず、つないで、quit で抜けた、というところ。
続きは次回。