完全分布式HBase集群安裝配置示例
本文環(huán)境與上一講--完全分布式Hadoop集群配置一致。OS是Ubuntu Server 10.04,HBase版本是0.20.6。
HRegionServer&HQuorumPeer:dm1,IP:192.168.0.17;
HRegionServer&HQuorumPeer:dm2,IP:192.168.0.18;
HRegionServer&HQuorumPeer:dm3,IP:192.168.0.9;
HMaster&NameNode:dm4,IP:192.168.0.10;(SecondaryNameNode)
雖然secondarynamenode和namenode放在同一臺(tái)機(jī)器上比較不合理。但是考慮到這只是個(gè)實(shí)驗(yàn)的小集群(硬件環(huán)境不允許),再者有xenserver的時(shí)序快照的保障,就不將SecondaryNameNode部署在其他機(jī)器上了。
主要的還是配置工作,依然將HBase放在/home下,編輯/home/hbase/conf下的hbase-site.xml,hbase-default.xml,hbase-env.sh 這幾個(gè)文件。具體步驟如下:
一.編輯所有機(jī)器上的hbase-site文件,命令如下:
vi /home/hbase/conf/hbase-site.xml
編輯文件如下列代碼所示。注意項(xiàng)有2:
1.其中首先需要注意hdfs://dm4:9000/hbase這里,必須與你的Hadoop集群的core-site.xml文件配置保持完全一致才行,如果你Hadoop的hdfs使用了其它端口,請(qǐng)?jiān)谶@里也修改。再者就是Hbase該項(xiàng)并不識(shí)別機(jī)器IP,只能使用機(jī)器hostname才可行,即若使用dm4的IP(192.168.0.10)是會(huì)拋出java錯(cuò)誤,至于具體的錯(cuò)誤由于時(shí)間久遠(yuǎn),我就懶得去翻查那大量的log了。
2.hbase.zookeeper.quorum 的個(gè)數(shù)必須是奇數(shù)。
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://dm4:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.master</name> <value>192.168.0.10:60000</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>192.168.0.9,192.168.0.17,192.168.0.18</value> </property> </configuration>
二.編輯所有機(jī)器的 hbase-default.xml,命令如下:
vi /home/hbase/conf/hbase-default.xml
只需修改前面hbase.rootdir 與hbase.cluster.distributed 這兩項(xiàng)。修改如下面代碼所示:
HBase的數(shù)據(jù)重啟就被擦掉,如果需要數(shù)據(jù)持久化的,就修改rootdir項(xiàng),寫定你的HDFS目錄。
至于default內(nèi)其它的項(xiàng)的含義與修改,再請(qǐng)參考官網(wǎng)。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://dm4:9000/hbase_rootdir</value>
<description>The directory shared by region servers.
Should be fully-qualified to include the filesystem to use.
E.g: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR
</description>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
<description>The port master should bind to.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
三. 編輯所有機(jī)器的hbase-env.sh,命令如下:
vi /home/hbase/conf/hbase-env.sh
修改代碼如下所示:
export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkS weepGC -XX:+CMSIncrementalMode" export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.22 export HBASE_MANAGES_ZK=true export HBASE_HOME=/home/hbase export HADOOP_HOME=/home/hadoop
四.編輯所有機(jī)器的HBase的HMasters和HRegionServers。修改/home/hbase/conf 文件夾下的regionservers文
件。添加DataNode的IP即可。代碼如下:
192.168.0.9 192.168.0.17 192.168.0.18
行文至此,HBase集群的配置已然完成。以下便是啟動(dòng)和測(cè)試。
五.啟動(dòng).測(cè)試HBase數(shù)據(jù)庫(kù)。
在HMaster即Namenode (dm4)啟動(dòng)HBase數(shù)據(jù)庫(kù)(Hadoop集群必須已經(jīng)啟動(dòng))。 啟動(dòng)命令:
/home/hbase/bin/start-hbase.sh
Hbase啟動(dòng)如下圖所示:
Hbase啟動(dòng)如下圖所示:最好輸入JPS命令測(cè)試一下你當(dāng)前Hbase集群進(jìn)程。如下圖:
然后輸入如下命令進(jìn)入hbase的命令行管理界面:
/home/hbase/bin/hbase shell
在hbase shell下 輸入list,如下所示,列舉你當(dāng)前數(shù)據(jù)庫(kù)的名稱,如下圖所示。如果你的Hbase沒(méi)配置成功會(huì)拋出java錯(cuò)誤。
我們也可以通過(guò)WEB頁(yè)面來(lái)管理查看HBase數(shù)據(jù)庫(kù)。
六.參考文獻(xiàn)
1.HBase: Bigtable-like structured storage for Hadoop HDFS
2.HBase Testing Tutorial