Hbase完全分佈式安裝配置手冊

HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲集羣。
  HBase是Google Bigtable的開源實現,類似Google Bigtable利用GFS作爲其文件存儲系統,HBase利用Hadoop HDFS作爲其文件存儲系統;Google運行MapReduce來處理Bigtable中的海量數據,HBase同樣利用Hadoop MapReduce來處理HBase中的海量數據;Google Bigtable利用 Chubby作爲協同服務,HBase利用Zookeeper作爲對應。
  

 

  上圖描述了Hadoop EcoSystem中的各層系統,其中HBase位於結構化存儲層,Hadoop HDFS爲HBase提供了高可靠性的底層存儲支持,Hadoop MapReduce爲HBase提供了高性能的計算能力,Zookeeper爲HBase提供了穩定服務和failover機制。   此外,Pig和Hive還爲HBase提供了高層語言支持,使得在HBase上進行數據統計處理變的非常簡單。 Sqoop則爲HBase提供了方便的RDBMS數據導入功能,使得傳統數據庫數據向HBase中遷移變的非常方便。

下面介紹一下HBase完全分佈式安裝的步驟:
1.使用Hadoop 0.20.2+ZooKeeper 3.3.3+HBase 0.90.3,
2.下載HBase 0.90.3,解壓至/home/grid/hbase
3.先檢測zookeeper是否安裝正確
HBase需要zookeeper,所以在配置HBase前務必確定zookeeper可以正常運行.
HBase有兩種方式使用zookeeper服務,第一種是使用已經存在的獨立zookeeper服務,另外一種是由HBase自己管理zookeeper服務,這裏我們讓HBase來管理zookeeper,可以少打一些命令:)
4.配置hbase/conf/hbase-site.xml
增加如下行:
<configuration> <property> <name>hbase.zookeeper.quorum</name> <value>hadoop1.ahau.edu.cn,hadoop2.ahau.edu.cn,hadoop3.ahau.edu.cn,hadoop4.ahau.edu.cn</value> <description>Comma separated list of servers in the ZooKeeper Quorum. For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com". By default this is set to localhost for local and pseudo-distributed modes of operation. For a fully-distributed setup, this should be set to a full list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh this is the list of servers which we will start/stop ZooKeeper on. </description> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/home/grid/zookeeper/</value> <description>Property from ZooKeeper's config zoo.cfg. The directory where the snapshot is stored. </description> </property> <property> <name>hbase.rootdir</name> <value>hdfs://hadoop1.ahau.edu.cn:9100/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </configuration>
hbase.zookeeper.quorum指定所有zookeeper的節點
hbase.zookeeper.property.dataDir指定zookeeper的數據目錄
hbase.rootdir指定hdfs的路徑
hbase.cluster.distributed爲true表示完全分佈式部署

5.修改hbase/conf/hbase-evn.sh
  1. export JAVA_HOME=/usr/local/jdk1.6.0_25  #JAVA的目錄
  2. export HBASE_CLASSPATH=/home/grid/hadoop/conf #Hadoop配置所在目錄
  3. export HBASE_OPTS="-ea -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
  4. export HBASE_MANAGES_ZK=true #HBase是否管理zookeeper
6.將zookeeper的配置文件zoo.cfg複製到HBASE_CLASSPATH指定的目錄
7.複製hadoop/conf/hdfs-site.xml到hbase/conf目錄
8.把所有節點加入hbase/conf/regionservers,每行一個主機名
9.所有主機名都要做好反向解析,否則啓動HBase會報錯
10.檢測一下HBase是否能夠啓動zookeeper
hbase$bin/hbase-daemon.sh start zookeeper
hbase#bin/hbase-daemon.sh stop zookeeper
11.把hbase目錄同步到所有的節點服務器
12.啓動時,先啓動Hadoop,然後是HBase,關閉時,先停止HBase,再停止Hadoop
13.啓動Hadoop
hadoop$bin/start-all.sh
   啓動HBase
hbase$bin/start-hbase.sh
14.啓動以後可能會遇到問題,具體的問題日誌裏都會有寫,本文最後有一些常見的問題的解決辦法
15.打開頁面http://hadoop1.ahau.edu.cn:60010/master.jsp
查看hbase的狀態,此時會有一個提醒框
分佈式系統有個這麼個提示,不是很蛋疼,所以一定要解決掉

16.按照wiki的提示,在hadoop/conf/hdfs-site.xml和hbase/conf/hdfs-site.xml裏增加dfs.support.append的支持
  1. <property>
  2. <name>dfs.support.append</name>
  3. <value>true</value>
  4. </property>
17.無果,仍舊有上面的提示,開始漫長的google
18.HBase的官網上有寫,hbase不支持官方的0.20.2的dfs.support.append,需要自己編譯分支hadoop
19.編譯安裝可以參考 北飛孤雁 大神的博客
    或者 
第二個地址是英文的
20.編譯需要git和ant,ant的版本最好在1.8.0以上,我用1.7.6時報錯
21.編譯出來的jar包,需要替換原來hadoop裏的包,也就是說要把原來的包刪掉,否則hadoop還是會啓動老的jar包
22.把新編譯出來的jar包同步到所有節點
23.再次啓動hadoop和hbase,那個紅色的提示消失了

常見問題彙總:
1.使用官方的hadoop0.20.2時,啓動hbase報錯:
  1. FATAL master.HMaster: Unhandled exception. Starting shutdown.org.apache.hadoop.ipc.RPC$VersionMismatch: Protocol org.apache.hadoop.hdfs.protocol.ClientProtocol version mismatch. (client = 42, server = 41)
原因是hbase/lib裏的包與hadoop的不一致,把hadoop目錄裏的hadoop-0.20.2-core.jar複製到hbase的lib裏就可以解決
2.啓動hbase,報:
  1. no valid quorum servers found in zoo.cfg
zoo.cfg一定要複製到hadoop/conf目錄下,否則就會報這個錯
3.hbase報錯
  1. Could not find my address
有兩種情況會導致這個錯誤,1主要是因爲沒有做反向解析,2是因爲沒有複製zoo.cfg,導致hbase讀不到zookeeper的配置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章