HBase+zookeeper搭建

風的王子發表於2013-11-02

1.1下載解壓最新版本

選擇一個 Apache 下載映象http://www.apache.org/dyn/closer.cgi/hbase/,下載 HBase Releases. 點選 stable目錄,然後下載字尾為 .tar.gz 的檔案; 例如 hbase-0.94.8.tar.gz.

[plain] view plaincopy
  1. tar -zxvf  hbase-0.94.8.tar.gz  
  2.  cd  hbase-0.94.8  

現在你已經可以啟動Hbase了。但是你可能需要先編輯 conf/hbase-site.xml 去配置hbase.rootdir,來選擇Hbase將資料寫到哪個目錄 .
[plain] view plaincopy
  1. <?xml version="1.0"?>    
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>    
  3. <configuration>    
  4.   <property>    
  5.     <name>hbase.rootdir</name>    
  6.     <value>file:///DIRECTORY/hbase</value>    
  7.   </property>    
  8. </configuration>    

將 DIRECTORY 替換成你期望寫檔案的目錄. 預設 hbase.rootdir 是指向 /tmp/hbase-${user.name} ,也就說你會在重啟後丟失資料(重啟的時

候作業系統會清理/tmp目錄)

1.2. 啟動 HBase

現在啟動Hbase:

$ ./bin/start-hbase.sh
starting Master, logging to logs/hbase-user-master-example.org.out

現在你執行的是單機模式的Hbaes。所以的服務都執行在一個JVM上,包括Hbase和Zookeeper。Hbase的日誌放在logs目錄,當你啟動出問題的時候,

可以檢查這個日誌。


安裝過程出現的錯誤:

 1,ERROR: org.apache.hadoop.hbase.MasterNotRunningException: Retried 7 times

很明顯,日誌中說RPC協議不一致所造成的,恍然見明白因為我在hbase的配置檔案中將rootdir設定為hdfs,如果這兩者的RPC協議不一致就會導致這個問題。

解決方法:

將hbase/lib目錄下的hadoop-core的jar檔案刪除,將hadoop目錄下的hadoop-****-core.jar拷貝到hbase/lib下面,然後重新啟動hbase即可。

2,ERROR: org.apache.hadoop.hbase.PleaseHoldException: org.apache.hadoop.hbase.

 解決方法:

如果系統是Ubuntu的話,要注意

/etc/hosts裡面的127.0.0.1是否是127.0.1.1,如果是的話,把他改過來就可以了。


1.3 測試,hbase shell


 用shell 連線Hbase

[plain] view plaincopy
  1. hbase(main):003:0> create 'test', 'c1'  
  2.   
  3. 0 row(s) in 1.2200 seconds  
  4.   
  5. hbase(main):003:0> list 'table'  
  6.   
  7. test  
  8.   
  9. 1 row(s) in 0.0550 seconds  
  10.   
  11. hbase(main):004:0> put 'test', 'row1', 'c1:a', 'value1'  
  12.   
  13. 0 row(s) in 0.0560 seconds  
  14.   
  15. hbase(main):005:0> put 'test', 'row2', 'c1:b', 'value2'  
  16.   
  17. 0 row(s) in 0.0370 seconds  
  18.   
  19. hbase(main):006:0> put 'test', 'row3', 'c1:c', 'value3'  
  20.   
  21. 0 row(s) in 0.0450 seconds  

以上我們分別插入了3行。第一個行key為row1, 列為 c1:a, 值是 value1。Hbase中的列是由 column family字首和列的名字組成的,以冒號間隔。

例如這一行的列名就是a.

檢查插入情況:Scan這個表,操作如下:

hbase(main):007:0> scan 'test'




zookeeper安裝

(1): 從http://mirror.bjtu.edu.cn/apache/zookeeper/stable/下載。
我下載的是zookeeper-3.4.4
(2):解壓到: /home/zack/hadoop/zookeeper-3.4.4
(3):把conf下的zoo_sample.cfg copy一份後重新命名為: zoo.cfg.
檔案中內容如下:
syncLimit=5
initLimit=10
tickTime=2000
clientPort=2181
dataDir=/home/zack/hadoop/zookeeper/data
dataLogDir=/home/zack/hadoop/zookeeper/log

(4): 新建zookeeper下的data,log目錄,將chmod 777 -R zookeeper一把
(5): 增加環境變數:
vim ~/.bashrc
export ZOOKEEPER_INSTALL=/home/zack/hadoop/zookeeper-3.4.4
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

source ~/.bashrc 使之生效.

(6): zkServer.sh start 啟動