超詳細乾貨!教你一步一步搭建 Apache HBase 完全分布式集羣

Apache HBase 是一個高可靠性、高性能、面向列、可伸縮的分佈式存儲系統,是NoSQL數據庫,基於Google Bigtable思想的開源實現,可在廉價的PC Server上搭建大規模結構化存儲集群,利用Hadoop HDFS作為其文件存儲系統,利用Hadoop MapReduce來處理HBase海量數據,使用Zookeeper協調服務器集群。Apache HBase官網有詳細的介紹文檔。

Apache HBase的完全分佈式集群安裝部署並不複雜,下面是部署的詳細過程:

1、規劃HBase集群節點

本實驗有4個節點,要配置HBase Master、Master-backup、RegionServer,節點主機操作系統為Centos 6.9,各節點的進程規劃如下:

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

2、安裝 JDK、Zookeeper、Hadoop

各服務器節點關閉防火牆、設置selinux為disabled

安裝 JDK、Zookeeper、Apache Hadoop 分佈式集群(具體過程詳見我另一篇博文:Apache Hadoop 2.8分佈式集群搭建超詳細過程)

安裝後設置環境變量,這些變量在安裝配置HBase時需要用到

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

3、安裝NTP,實現服務器節點間的時間一致

如果服務器節點之間時間不一致,可能會引發HBase的異常,這一點在HBase官網上有特別強調。在這裡,設置第1個節點hd1為NTP的服務端節點,也即該節點(hd1)從國家授時中心同步時間,然後其它節點(hd2、hd3、hd4)作為客戶端從hd1同步時間

(1)安裝 NTP

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

啟動 NTP 服務

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(2)配置NTP服務端

在節點hd1,編輯 /etc/ntp.conf 文件,配置NTP服務,具體的配置改動項見以下中文註釋

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

重啟 NTP 服務

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

然後查看ntp狀態

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

這時發現有報錯,原來ntpd服務有一個限制,ntpd僅同步更改與ntp server時差在1000s內的時間,而查了服務器節點的時間與實際時間差已超過了1000s,因此,必須先手動修改下操作系統時間與ntp server相差時間在1000s以內,然後再去同步服務

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

其實還有另外一個小技巧,就是在安裝好NTP服務後,先通過授時服務器獲得準確的時間,這樣也不用手工修改了,命令如下:

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

【注意】如果是在docker裡面執行同步時間操作,系統會報錯

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

如果出現這個錯誤,說明系統不允許自行設置時間。在docker裡面,由於docker容器共享的是宿主機的內核,而修改系統時間是內核層面的功能,因此,在 docker 裡面是無法修改時間

(3)配置NTP客戶端

在節點hd2、hd3、hd4編輯 /etc/ntp.conf 文件,配置 NPT 客戶端,具體的配置改動項,見以下的中文註釋

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

重啟NTP服務

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

啟動後,查看時間的同步情況

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

4、修改ulimit

在Apache HBase官網的介紹中有提到,使用 HBase 推薦修改ulimit,以增加同時打開文件的數量,推薦 nofile 至少 10,000 但最好 10,240 (It is recommended to raise the ulimit to at least 10,000, but more likely 10,240, because the value is usually expressed in multiples of 1024.)

修改 /etc/security/limits.conf 文件,在最後加上nofile(文件數量)、nproc(進程數量)屬性,如下:

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

修改後,重啟服務器生效

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

5、安裝配置Apache HBase

Apache HBase 官網提供了默認配置說明、參考的配置例子,建議在配置之前先閱讀一下。

在本實驗中,採用了獨立的zookeeper配置,也hadoop共用,zookeeper具體配置方法可參考我的另一篇博客。其實在HBase中,還支持使用內置的zookeeper服務,但如果是在生產環境中,建議單獨部署,方便日常的管理。

(1)下載Apache HBase

從官網上面下載最新的二進制版本:hbase-1.2.6-bin.tar.gz

然後解壓

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

配置環境變量

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(2)複製hdfs-site.xml配置文件

複製$HADOOP_HOME/etc/hadoop/hdfs-site.xml到$HBASE_HOME/conf目錄下,這樣以保證hdfs與hbase兩邊一致,這也是官網所推薦的方式。在官網中提到一個例子,例如hdfs中配置的副本數量為5,而默認為3,如果沒有將最新的hdfs-site.xml複製到$HBASE_HOME/conf目錄下,則hbase將會按3份備份,從而兩邊不一致,導致會出現異常。

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(3)配置hbase-site.xml

編輯 $HBASE_HOME/conf/hbase-site.xml

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(4)配置regionserver文件

編輯 $HBASE_HOME/conf/regionservers 文件,輸入要運行 regionserver 的主機名

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(5)配置 backup-masters 文件(master備用節點)

HBase 支持運行多個 master 節點,因此不會出現單點故障的問題,但只能有一個活動的管理節點(active master),其餘為備用節點(backup master),編輯 $HBASE_HOME/conf/backup-masters 文件進行配置備用管理節點的主機名

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

6)配置 hbase-env.sh 文件

編輯 $HBASE_HOME/conf/hbase-env.sh 配置環境變量,由於本實驗是使用單獨配置的zookeeper,因此,將其中的 HBASE_MANAGES_ZK 設置為 false

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

到此,HBase 配置完畢

6、啟動 Apache HBase

可使用 $HBASE_HOME/bin/start-hbase.sh 指令啟動整個集群,如果要使用該命令,則集群的節點必須實現ssh的免密碼登錄,這樣才能到不同的節點啟動服務

為了更加深入瞭解HBase啟動過程,本實驗將對各個節點依次啟動進程,經查看 start-hbase.sh 腳本,裡面的啟動順序如下

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

也就是使用 hbase-daemon.sh 命令依次啟動 zookeeper、master、regionserver、master-backup

因此,我們也按照這個順序,在各個節點進行啟動

在啟動HBase之前,必須先啟動Hadoop,以便於HBase初始化、讀取存儲在hdfs上的數據

(1)啟動zookeeper(hd1、hd2、hd3節點)

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(2)啟動hadoop分佈式集群(集群的具體配置和節點規劃,見我的另一篇

博客

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(3)啟動hbase master(hd1)

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(4)啟動hbase regionserver(hd2、hd3、hd4)

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(5)啟動hbase backup-master(hd2)

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

這裡很奇怪,在 $HBASE_HOME/bin/start-hbase.sh 寫著啟動 backup-master 的命令為

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

但實際按這個指令執行時,卻報錯提示無法加載類 master-backup

[ahadoop@1620d6ed305d ~]$ hbase-daemon.sh start master-backup &

[5] 1113

[ahadoop@1620d6ed305d ~]$ starting master-backup, logging to /home/ahadoop/hbase

-1.2.6/logs/hbase-ahadoop-master-backup-1620d6ed305d.out

Error: Could not find or load main class master-backup

最後經查資料,才改用了以下命令為啟動 backup-master

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

經過以上步驟,就已成功地啟動了hbase集群,可到每個節點裡面使用 jps 指令查看 hbase 的啟動進程情況。

啟動後,再查看 hdfs 、zookeeper 的 /hbase 目錄,發現均已初始化,並且已寫入了相應的文件,如下

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

7、HBase 測試使用

使用hbase shell進入到 hbase 的交互命令行界面,這時可進行測試使用

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(1)查看集群狀態和節點數量

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(2)創建表

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

hbase創建表create命令語法為:表名、列名1、列名2、列名3……

(3)查看錶

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(4)導入數據

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

導入數據的命令put的語法為表名、行值、列名(列名可加冒號,表示這個列簇下面還有子列)、列數據

(5)全表掃描數據

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(6)根據條件查詢數據

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(7)表失效

使用 disable 命令可將某張表失效,失效後該表將不能使用,例如執行全表掃描操作,會報錯,如下

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(8)表重新生效

使用 enable 可使表重新生效,表生效後,即可對錶進行操作,例如進行全表掃描操作

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(9)刪除數據表

使用drop命令對錶進行刪除,但只有表在失效的情況下,才能進行刪除,否則會報錯,如下

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

先對錶失效,然後再刪除,則可順序刪除表

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

(10)退出 hbase shell

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

以上就是使用hbase shell進行簡單的測試和使用

8、HBase 管理頁面

HBase 還提供了管理頁面,供用戶查看,可更加方便地查看集群狀態

在瀏覽器中輸入 http://172.17.0.1:16010 地址(默認端口為 16010),即可進入到管理頁面,如下圖

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

查看HBase裡面的表信息,點擊上方的菜單欄 Table Details 可查看所有表信息,如下圖

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

在主頁的 Tables 下面也會列出表名出來,點擊可查看某張表的信息,如下圖

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

在 Tables 中點擊 System Tables 查看系統表,主要是元數據、命名空間,如下圖

超詳細乾貨!教你一步一步搭建 Apache HBase 完全分佈式集群

以上就是Apache HBase集群配置,以及測試使用的詳細過程,歡迎大家批評指正,共同交流進。

原文鏈接:http://mp.weixin.qq.com/s/2fjlbrZ1GByMkCxCNNJuWQ


分享到:


相關文章: