完全分佈式HBase集羣安裝配置

http://www.cnblogs.com/ventlam/archive/2011/01/22/HBaseCluster.html

HBase 是一個開源的非關係(NoSQL)的可伸縮性分佈式數據庫。它是面向列的,並適合於存儲超大型鬆散數據。HBase適合於實時,隨機對Big數據進行讀寫操作的業務環境。關於HBase的更多介紹請參見HBase項目官網

    本文環境與上一講--完全分佈式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放在同一臺機器上比較不合理。但是考慮到這只是個實驗的小集羣(硬件環境不允許),再者有xenserver的時序快照的保障,就不將SecondaryNameNode部署在其他機器上了。

 

     主要的還是配置工作,依然將HBase放在/home下,編輯/home/hbase/conf下的hbase-site.xml,hbase-default.xml,hbase-env.sh 這幾個文件。具體步驟如下:

     一.編輯所有機器上的hbase-site文件,命令如下:

 

1
vi /home/hbase/conf/hbase-site.xml

      編輯文件如下列代碼所示。注意項有2:

    1.其中首先需要注意hdfs://dm4:9000/hbase這裏,必須與你的Hadoop集羣的core-site.xml文件配置保持完全一致纔行,如果你Hadoop的hdfs使用了其它端口,請在這裏也修改。再者就是Hbase該項並不識別機器IP,只能使用機器hostname纔可行,即若使用dm4的IP(192.168.0.10)是會拋出java錯誤,至於具體的錯誤由於時間久遠,我就懶得去翻查那大量的log了。

      2.hbase.zookeeper.quorum 的個數必須是奇數

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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>

   二.編輯所有機器 hbase-default.xml,命令如下:

 

1
vi /home/hbase/conf/hbase-default.xml

    只需修改前面hbase.rootdir 與hbase.cluster.distributed 這兩項。修改如下面代碼所示:

HBase的數據重啓就被擦掉,如果需要數據持久化的,就修改rootdir項,寫定你的HDFS目錄。

至於default內其它的項的含義與修改,再請參考官網。 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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>

   三. 編輯所有機器hbase-env.sh,命令如下:

 

1
vi /home/hbase/conf/hbase-env.sh

     修改代碼如下所示:

1
2
3
4
5
6
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

     四.編輯所有機器的HBase的HMasters和HRegionServers。修改/home/hbase/conf 文件夾下的regionservers文

件。添加DataNode的IP即可。代碼如下:

 

1
2
3
192.168.0.9
192.168.0.17
192.168.0.18

    行文至此,HBase集羣的配置已然完成。以下便是啓動和測試。

    五.啓動.測試HBase數據庫。

     在HMaster即Namenode (dm4)啓動HBase數據庫(Hadoop集羣必須已經啓動)。 啓動命令:

 

1
/home/hbase/bin/start-hbase.sh

  Hbase啓動如下圖所示:

    最好輸入JPS命令測試一下你當前Hbase集羣進程。如下圖:

 

 

 

然後輸入如下命令進入hbase的命令行管理界面:

 

1
/home/hbase/bin/hbase shell

   在hbase shell下 輸入list,如下所示,列舉你當前數據庫的名稱,如下圖所示。如果你的Hbase沒配置成功會拋出java錯誤。

 

   我們也可以通過WEB頁面來管理查看HBase數據庫。

  HMaster:http://192.168.0.10:60010/master.jsp

  我的HBase數據庫截圖:

 至於HBase的命令參見:Hadoop Wiki

 HBase數據庫的開發應用,包括數據庫讀寫和條件查詢等,請參見我未來的文章……

  六.參考文獻

   1.HBase: Bigtable-like structured storage for Hadoop HDFS

     http://wiki.apache.org/hadoop/Hbase

   2.HBase Testing Tutorial

        http://wiki.apache.org/hadoop/Hbase/HowToTest

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章