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,各節點的進程規劃如下:
2、安裝 JDK、Zookeeper、Hadoop
各服務器節點關閉防火牆、設置selinux為disabled
安裝 JDK、Zookeeper、Apache Hadoop 分佈式集群(具體過程詳見我另一篇博文:Apache Hadoop 2.8分佈式集群搭建超詳細過程)
安裝後設置環境變量,這些變量在安裝配置HBase時需要用到
3、安裝NTP,實現服務器節點間的時間一致
如果服務器節點之間時間不一致,可能會引發HBase的異常,這一點在HBase官網上有特別強調。在這裡,設置第1個節點hd1為NTP的服務端節點,也即該節點(hd1)從國家授時中心同步時間,然後其它節點(hd2、hd3、hd4)作為客戶端從hd1同步時間
(1)安裝 NTP
啟動 NTP 服務
(2)配置NTP服務端
在節點hd1,編輯 /etc/ntp.conf 文件,配置NTP服務,具體的配置改動項見以下中文註釋
重啟 NTP 服務
然後查看ntp狀態
這時發現有報錯,原來ntpd服務有一個限制,ntpd僅同步更改與ntp server時差在1000s內的時間,而查了服務器節點的時間與實際時間差已超過了1000s,因此,必須先手動修改下操作系統時間與ntp server相差時間在1000s以內,然後再去同步服務
其實還有另外一個小技巧,就是在安裝好NTP服務後,先通過授時服務器獲得準確的時間,這樣也不用手工修改了,命令如下:
【注意】如果是在docker裡面執行同步時間操作,系統會報錯
如果出現這個錯誤,說明系統不允許自行設置時間。在docker裡面,由於docker容器共享的是宿主機的內核,而修改系統時間是內核層面的功能,因此,在 docker 裡面是無法修改時間
(3)配置NTP客戶端
在節點hd2、hd3、hd4編輯 /etc/ntp.conf 文件,配置 NPT 客戶端,具體的配置改動項,見以下的中文註釋
重啟NTP服務
啟動後,查看時間的同步情況
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(進程數量)屬性,如下:
修改後,重啟服務器生效
5、安裝配置Apache HBase
Apache HBase 官網提供了默認配置說明、參考的配置例子,建議在配置之前先閱讀一下。
在本實驗中,採用了獨立的zookeeper配置,也hadoop共用,zookeeper具體配置方法可參考我的另一篇博客。其實在HBase中,還支持使用內置的zookeeper服務,但如果是在生產環境中,建議單獨部署,方便日常的管理。
(1)下載Apache HBase
從官網上面下載最新的二進制版本:hbase-1.2.6-bin.tar.gz
然後解壓
配置環境變量
(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份備份,從而兩邊不一致,導致會出現異常。
(3)配置hbase-site.xml
編輯 $HBASE_HOME/conf/hbase-site.xml
(4)配置regionserver文件
編輯 $HBASE_HOME/conf/regionservers 文件,輸入要運行 regionserver 的主機名
(5)配置 backup-masters 文件(master備用節點)
HBase 支持運行多個 master 節點,因此不會出現單點故障的問題,但只能有一個活動的管理節點(active master),其餘為備用節點(backup master),編輯 $HBASE_HOME/conf/backup-masters 文件進行配置備用管理節點的主機名
(6)配置 hbase-env.sh 文件
編輯 $HBASE_HOME/conf/hbase-env.sh 配置環境變量,由於本實驗是使用單獨配置的zookeeper,因此,將其中的 HBASE_MANAGES_ZK 設置為 false
到此,HBase 配置完畢
6、啟動 Apache HBase
可使用 $HBASE_HOME/bin/start-hbase.sh 指令啟動整個集群,如果要使用該命令,則集群的節點必須實現ssh的免密碼登錄,這樣才能到不同的節點啟動服務
為了更加深入瞭解HBase啟動過程,本實驗將對各個節點依次啟動進程,經查看 start-hbase.sh 腳本,裡面的啟動順序如下
也就是使用 hbase-daemon.sh 命令依次啟動 zookeeper、master、regionserver、master-backup
因此,我們也按照這個順序,在各個節點進行啟動
在啟動HBase之前,必須先啟動Hadoop,以便於HBase初始化、讀取存儲在hdfs上的數據
(1)啟動zookeeper(hd1、hd2、hd3節點)
(2)啟動hadoop分佈式集群(集群的具體配置和節點規劃,見我的另一篇 博客)
(3)啟動hbase master(hd1)
(4)啟動hbase regionserver(hd2、hd3、hd4)
(5)啟動hbase backup-master(hd2)
這裡很奇怪,在 $HBASE_HOME/bin/start-hbase.sh 寫著啟動 backup-master 的命令為
但實際按這個指令執行時,卻報錯提示無法加載類 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
經過以上步驟,就已成功地啟動了hbase集群,可到每個節點裡面使用 jps 指令查看 hbase 的啟動進程情況。
啟動後,再查看 hdfs 、zookeeper 的 /hbase 目錄,發現均已初始化,並且已寫入了相應的文件,如下
7、HBase 測試使用
使用hbase shell進入到 hbase 的交互命令行界面,這時可進行測試使用
(1)查看集群狀態和節點數量
(2)創建表
hbase創建表create命令語法為:表名、列名1、列名2、列名3……
(3)查看錶
(4)導入數據
導入數據的命令put的語法為表名、行值、列名(列名可加冒號,表示這個列簇下面還有子列)、列數據
(5)全表掃描數據
(6)根據條件查詢數據
(7)表失效
使用 disable 命令可將某張表失效,失效後該表將不能使用,例如執行全表掃描操作,會報錯,如下
(8)表重新生效
使用 enable 可使表重新生效,表生效後,即可對錶進行操作,例如進行全表掃描操作
(9)刪除數據表
使用drop命令對錶進行刪除,但只有表在失效的情況下,才能進行刪除,否則會報錯,如下
先對錶失效,然後再刪除,則可順序刪除表
(10)退出 hbase shell
以上就是使用hbase shell進行簡單的測試和使用
8、HBase 管理頁面
HBase 還提供了管理頁面,供用戶查看,可更加方便地查看集群狀態
在瀏覽器中輸入 http://172.17.0.1:16010 地址(默認端口為 16010),即可進入到管理頁面,如下圖
查看HBase裡面的表信息,點擊上方的菜單欄 Table Details 可查看所有表信息,如下圖
在主頁的 Tables 下面也會列出表名出來,點擊可查看某張表的信息,如下圖
在 Tables 中點擊 System Tables 查看系統表,主要是元數據、命名空間,如下圖
以上就是Apache HBase集群配置,以及測試使用的詳細過程,歡迎大家批評指正,共同交流進。
原文鏈接:http://mp.weixin.qq.com/s/2fjlbrZ1GByMkCxCNNJuWQ
閱讀更多 燈塔大數據 的文章