一、安裝前提
1、HBase 依賴於 HDFS 做底層的數據存儲
2、HBase 依賴於 MapReduce 做數據計算
3、HBase 依賴於 ZooKeeper 做服務協調
4、HBase源碼是java編寫的,安裝需要依賴JDK
1、版本選擇
打開官方的版本說明http://hbase.apache.org/1.2/book.html
JDK的選擇
Hadoop的選擇
此處我們的hadoop版本用的的是2.7.6,HBase選擇的版本是1.2.6
2、下載安裝包
官網下載地址:http://archive.apache.org/dist/hbase/
3、完全分布式部署
默認情況下,HBase以獨立模式運行。提供獨立模式和偽分布模式都是為了進行小規模測試。
對於生產環境,分布式模式是合適的。在分布式模式下,HBase守護程序的多個實例在群集中的多個服務器上運行。
節點IP | 節點名稱 | Master | BackupMaster | RegionServer | Zookeeper | HDFS |
192.168.100.21 | node21 | √ | √ | √ | √ | |
192.168.100.22 | node22 | √ | √ | √ | √ | |
192.168.100.23 | node23 | √ | √ | √ |
Zookeeper集群安裝參考:CentOS7.5搭建Zookeeper3.4.12集群
Hadoop集群安裝參考:CentOS7.5搭建Hadoop2.7.6完全分布式集群
二、HBase的集群安裝
安裝過程參考官方文檔:http://hbase.apache.org/1.2/book.html#standalone_dist
1、上傳解壓縮
解壓 HBase 到指定目錄:
[admin@node21 software]$ tar zxvf hbase-1.2.6-bin.tar.gz -C /opt/module/
2、修改配置文件
配置文件在/opt/module/hbase-1.2.6/conf目錄下
hbase-env.sh 修改內容:
export JAVA_HOME=/opt/module/jdk1.8 export HBASE_MANAGES_ZK=false
hbase-site.xml 修改內容:
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://mycluster/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> </property> <property> <name>hbase.zookeeper.quorum</name> <value>node21,node22,node23</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/opt/module/zookeeper-3.4.12/Data</value> </property> </configuration>
region servers修改內容:
node21
node22
node23
在 conf 目錄下創建 backup-masters 文件,添加備機名
$ echo node22 > conf/backup-masters
3、軟連接Hadoop配置
[admin@node21 ~]$ ln -s /opt/module/hadoop-2.7.6/etc/hadoop/hdfs-site.xml /opt/module/hbase-1.2.6/conf/
4、替換Hbase依賴的Jar包
由於 HBase 需要依賴 Hadoop,所以替換 HBase 的 lib 目錄下的 jar 包,以解決兼容問題:
1) 刪除原有的 jar:
[admin@node21 ~]$ rm -rf /opt/module/hbase-1.2.6/lib/hadoop-* [admin@node21 ~]$ rm -rf /opt/module/hbase-1.2.6/lib/zookeeper-3.4.6.jar
2) 拷貝新 jar,涉及的 jar 有:
hadoop-annotations-2.7.6.jar hadoop-mapreduce-client-app-2.7.6.jar hadoop-mapreduce-client-hs-plugins-2.7.6.jar hadoop-auth-2.7.6.jar hadoop-mapreduce-client-common-2.7.6.jar hadoop-mapreduce-client-jobclient-2.7.6.jar hadoop-common-2.7.6.jar hadoop-mapreduce-client-core-2.7.6.jar hadoop-mapreduce-client-shuffle-2.7.6.jar hadoop-hdfs-2.7.6.jar hadoop-mapreduce-client-hs-2.7.6.jar hadoop-yarn-api-2.7.6.jar hadoop-yarn-client-2.7.6.jar hadoop-yarn-common-2.7.6.jar hadoop-yarn-server-common-2.7.6.jar
zookeeper-3.4.12.jar
尖叫提示:這些 jar 包的對應版本應替換成你目前使用的 hadoop 版本,具體情況具體分析。
[admin@node21 ~]$ find /opt/module/hadoop-2.7.6/ -name hadoop-annotations*
然后將找到的 jar 包復制到 HBase 的 lib 目錄下即可。
5、分發安裝包到其他節點
[admin@node21 ~]$ scp -r /opt/module/hbase-1.2.6/ node22:/opt/module/ [admin@node21 ~]$ scp -r /opt/module/hbase-1.2.6/ node23:/opt/module/
6、配置環境變量
所有服務器都有進行配置
[admin@node21 ~]$ vi /etc/profile
#HBase export HBASE_HOME=/opt/module/hbase-1.2.6 export PATH=$PATH:$HBASE_HOME/bin
使環境變量立即生效
[admin@node21 ~]$ source /etc/profile
7、同步時間
尖叫提示: HBase 集群對於時間的同步要求的比HDFS嚴格,如果集群之間的節點時間不同步,會導致 region server 無法啟動,拋出ClockOutOfSyncException 異常。所以,集群啟動之前千萬記住要進行 時間同步,要求相差不要超過 30s.
<property> <name>hbase.master.maxclockskew</name> <value>180000</value> <description>Time difference of regionserver from master</description> </property>
三、啟動HBase集群
嚴格按照啟動順序進行
1、啟動zookeeper集群
每個zookeeper節點都要執行以下命令
[admin@node21 ~]$ zkServer.sh start
2、啟動Hadoop集群
如果需要運行MapReduce程序則啟動yarn集群,否則不需要啟動
[admin@node21 ~]$ start-dfs.sh
[admin@node22 ~]$ start-yarn.sh
3、啟動HBase集群
保證 ZooKeeper 集群和 HDFS 集群啟動正常的情況下啟動 HBase 集群 啟動命令:start-hbase.sh,在哪台節點上執行此命令,哪個節點就是主節點
啟動方式 1:
[admin@node21 ~]$ start-hbase.sh starting master, logging to /opt/module/hbase-1.2.6/logs/hbase-admin-master-node21.out node23: starting regionserver, logging to /opt/module/hbase-1.2.6/logs/hbase-admin-regionserver-node23.out node21: starting regionserver, logging to /opt/module/hbase-1.2.6/logs/hbase-admin-regionserver-node21.out node22: starting regionserver, logging to /opt/module/hbase-1.2.6/logs/hbase-admin-regionserver-node22.out node22: starting master, logging to /opt/module/hbase-1.2.6/logs/hbase-admin-master-node22.out
啟動方式 2:
$ hbase-daemon.sh start master
$ hbase-daemon.sh start regionserver
觀看啟動日志可以看到:
(1)首先在命令執行節點啟動 master
(2)然后分別在 node21,node22,node23 啟動 regionserver
(3)然后在 backup-masters 文件中配置的備節點上再啟動一個 master 主進程
尖叫提 示: 如果使用的是 JDK8 以 上 版 本 , 則 應 在 hbase-evn.sh 中 移除 “HBASE_MASTER_OPTS”和“HBASE_REGIONSERVER_OPTS”配置。
4、停止HBase集群
[admin@node21 ~]$ stop-hbase.sh
四、驗證啟動是否正常
1、檢查各進程是否啟動正常
主節點和備用節點都啟動 hmaster 進程,各從節點都啟動 hregionserver 進程,按照對應的配置信息各個節點應該要啟動的進程如下所示
2、通過訪問瀏覽器頁面查看
WebUI地址查看:http://node21:16010/master-status
3、驗證高可用
干掉node21上的hbase進程,觀察備用節點是否啟用
[admin@node21 ~]$ kill -9 3414
node21界面訪問失敗,node22變成主節點
4、手動啟動進程
啟動HMaster進程,當node21節點上的HMaster進程起來后又會成為備用Master,狀態可通過webUI查看。
[admin@node21 ~]$ jps 3650 HRegionServer 2677 NodeManager 2394 DFSZKFailoverController 4442 Jps 1852 DataNode 2156 JournalNode 1405 QuorumPeerMain [admin@node21 ~]$ hbase-daemon.sh start master starting master, logging to /opt/module/hbase-1.2.6/logs/hbase-admin-master-node21.out [admin@node21 ~]$ jps 3650 HRegionServer 2677 NodeManager 4485 HMaster 4630 Jps 2394 DFSZKFailoverController 1852 DataNode 2156 JournalNode 1405 QuorumPeerMain
啟動HRegionServer進程
$ hbase-daemon.sh start regionserver