HBaseとZookeeperの設定
完全分散モードによるHBaseとZookeeperに関する設定メモです。Hadoopについては以前のブログの内容に従ってインストールされていることが前提です。
今回利用したバージョンはhbase-0.94.11とzookeeper-3.4.5です。なお、hbase-0.94.11のデフォルトのHadoopバージョンは1.0.4で前回は1.1.2を設定する方法を紹介しましたが設定方法は同じです。
なお、今回紹介する方法はhbaseにzookeeperを管理させず、zookeeperノードを単体で起動する方法を紹介します。zookeeperは奇数台必要となります。
[ ]はそれぞれの環境で任意の設定値に読み替えてください。
■Zookeeperの設定
rootユーザでzookeeperを解凍し、ディレクトリのオーナーなどの設定を行います。
su -
cd /usr/local
tar -zxvf zookeeper-3.4.5.tar.gz
chown -R hadoop:hadoop zookeeper-3.4.5/
ln -s zookeeper-3.4.5 zookeeper
zookeeper用のデータディレクトリを作成します。
cd /opt
mkdir zookeeper
chown -R hadoop:hadoop zookeeper/
zookeeperの起動ユーザ(hadoopユーザ)にスイッチしzoo.cfgファイルの設定を行います。
su - hadoop
cd /usr/local/zookeeper/conf
cp -p zoo_sample.cfg zoo.cfg
vi zoo.cfg
/tmp/zookeeper
↓
/opt/zookeeper #先ほど作成したディレクトリに変更
zookeeperが動作するノードリストを以下のように追加
#servers ↓zookeeperが動作するサーバ名とポート番号を設定
server.1=[ホスト名1]:[port1]:[port2]
server.2=[ホスト名2]:[port1]:[port2]
server.3=[ホスト名3]:[port1]:[port2]
...
各zookeeperのサーバででmyidファイルを/opt/zookeeper配下に作成します。
cd /opt/zookeeper
vi myid
1 ←server.1のノードでは1を設定。server.2の場合は2。
iptablesを次のように設定します。ここでは自分のネットワーク内からのアクセスのみを許可するようにします。
su -
cd /etc/sysconfg
vi iptables
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport 2181 -j ACCEPT
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport [zoo.cfgファイルのport1] -j ACCEPT
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport [zoo.cfgファイルのport2] -j ACCEPT
zookeeperの起動・停止・クライアントでのログイン
【起動】
cd /usr/local/zookeeper
./bin/zkServer.sh start
【停止】
./bin/zkServer.sh stop
【クライアントログイン】
./bin/zkCli.sh
■HBaseの設定
rootユーザでhbaseを解凍し、ディレクトリのオーナーなどの設定を行います。
su -
cd /usr/local
tar -zxvf hbase-0.94.11.tar.gz
ln -s hbase-0.94.11 hbase
chown -R hadoop:hadoop hbase-0.94.11
hbase用のディレクトリを作成します。
cd /opt
mkdir hbase
chown -R hadoop:hadoop hbase/
hadoopユーザでhbase/conf配下のhbase-site.xml、hbase-env.sh、regionservers、backup-mastersファイルをそれぞれ次のように編集します。
【hbase-site.xml】
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://[hadoop_hdfsサーバ]:[port]/hbase</value> <description> ... </description> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> <description> ... </description> </property> <property> <name>hbase.tmp.dir</name> <value>/opt/hbase</value> <description> ... </description> </property> <property> <name>hbase.zookeeper.quorum</name> <value>[zookeeper_server_name1],[zookeeper_server_name1],[zookeeper_server_name1]</value> <description> ... </description> </property> </configuration>
【hbase-env.sh】
export HBASE_PID_DIR=/var/run/hadoop
export HBASE_MANAGES_ZK=false #hbaseでzookeeperを起動しないようにする
【regionservers】
分散させるリージョンサーバ名をすべて記載します。
[regionserver_name1]
[regionserver_name2]
[regionserver_name3]
[regionserver_name4]
[regionserver_name5]
...
【backup-masters】
バックアップ用のHBaseマスタサーバ名を記載します。
[backup_masterserver_name1]
iptablesの設定
マスタサーバとリージョンサーバでそれぞれ以下のように設定します。ここでもローカルネットワークからのアクセスのみを許可するようにします。
【マスタサーバ】
su -
cd /etc/sysconfg
vi iptables
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport 60000 -j ACCEPT
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport 60010 -j ACCEPT
【リージョンサーバ】
su -
cd /etc/sysconfg
vi iptables
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport 60020 -j ACCEPT
-A INPUT -s [IPアドレス]/24 -p tcp -m state --state NEW -m tcp --dport 60030 -j ACCEPT
hbaseクラスタの起動と停止
【起動】
cd /usr/local/hbase
./bin/start-hbase.sh
【停止】
./bin/stop-hbase.sh
長くなりましたが以上です。