Hbase簡介
Hbase概述
Hbase原型是Google的BigTable論文,受到了改論文思想的啟發,目前作為Hadoop的子項目來開發維護,用於支持結構化的數據存儲。
Hbase是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用Hbase技術可以在廉價的服務器上搭建起大規模的結構化存儲集群。
Hbase的目標是存儲並處理大型的數據,更具體來說是僅需使用普通的硬件配置,就能處理由成千上萬的行和列所組成的大型數據。
Hbase的核心是能夠實現在HDFS中數據的隨機讀寫。
Hbase的特點:
海量存儲、列式存儲(列族存儲)、極易擴展、高並發、稀疏(列族中可以制定任意多的列,列數據可以為空,並且該情況下不會占用存儲空間)
1.沒有真正的索引:行是順序存儲的,每行中的列也是,所以不存在索引膨脹的問題,而且插入性能和表的大小無關。
2.自動分區:在表增長的時候,表會自動分裂成區域,並分布到可用的節點上。
3.線性擴展和對於新節點的自動處理:增加一個節點,把它指向現有集群並運行regionserver。區域自動重新進行平衡,負載均勻分布。
4.普通商用硬件支持:集群可以用1000~5000美金的單個節點搭建,而不需要使用單個5萬美金的節點。RDBMS需要支持大量I/O,因此要求更昂貴的硬件。
5.容錯:大量節點意味着每個節點的重要性並不突出。不用擔心單個節點失效。
6.批處理 MapReduce集成功能使我們可用全並行的分布式作業根據“數據的位置”來批處理它們。
Hbase結構
DataNode是管理存儲數據的進程,並不是實質的存儲節點。
使用Hbase必須先啟動Hadoop和ZooKeeper,用來支持HDFS存儲數據和高可用,高可用是NameNode做集群並將元數據存儲在ZooKeeper中。
Hbase的分布式安裝部署
集群規划:三台服務器上部署Hbase集群,基於前面的文章中已經部署的Hadoop、ZooKeeper環境的三台虛擬機。
選擇版本進行下載,此處選擇的是hbase-2.0.5
將壓縮包使用Xftp上傳hadoop-1的/usr目錄下:
進入/usr目錄,使用tar命令將壓縮包進行解壓,執行命令:
1 # tar zxvf hbase-2.0.5-bin.tar.gz
解壓完成后會在/usr目錄下生成hbase-2.0.5目錄:
進入Hbase的配置文件目錄,並查看該目錄下的文件:
1 # cd hbase-2.0.5/conf/ 2 # ll
使用vim編輯配置文件hbase-env.sh,更改內容如下:
使用vim編輯配置文件hbase-site.xml,更改內容如下:
配置文件參數說明:
配置項 | 值 | 說明 |
hbase.rootdir | hdfs://hadoopnn:9000/hbase_db | region servers共享的目錄 |
hbase.cluster.distributed | true | 值為true則是分布式模式 |
hbase.zookeeper.quorum | hadoopnn,hadoopdn1,hadoopdn2 | 使用逗號分隔的ZooKeeper集合中的服務器列表 |
hbase.zookeeper.property.clientPort | 2181 | 客戶端將連接的端口 |
hbase.zookeeper.property.dataDir | /usr/hbase-2.0.5/zk_data | 快照存儲的目錄 |
hbase.tmp.dir | /usr/hbase-2.0.5/tmp | 本地文件系統上的臨時目錄 |
使用vim編輯配置文件regionservers,更改內容如下:
然后將/usr目錄下的hbase-2.0.5遠程拷貝到hadoop-2和hadoop-3主機的/usr目錄下:
1 # scp -r /usr/hbase-2.0.5 hadoop-2:/usr 2 # scp -r /usr/hbase-2.0.5 hadoop-3:/usr
在hadoop-1主機上執行start-all.sh啟動hadoop集群,jps命令查看hadoop-1上的啟動了NameNode等進程:
hadoop-2和hadoop-3上啟動了DataNode等進程:
分別在三台主機上按照順序啟動ZooKeeper集群:
1 # zkServer.sh start
並使用jps命令查看ZooKeeper集群啟動成功。
在三台主機上分別使用vim編輯環境變量,更改內容如下:
1 # vim /etc/profile
保存退出,執行命令是修改生效:
1 # source /etc/profile
執行start-hbase.sh啟動hbase集群:
1 # start-hbase.sh
並使用jps查看進程,hadoop-1中啟動了HMaster進程,hadoop-2和hadoop-3中啟動了HRegionServer進程,hbase集群啟動成功。
在瀏覽器中輸入:[http://192.168.44.128:16010](http://192.168.44.128:16010/),即可打開Hbase的web頁面:
注意:Hbase集群是HMaster管理整個集群,為了實現HMaster的高可用,可以在集群的其他主機上啟用備份HMaster服務,每個集群最多可以啟動9個備份HMaster服務:
1 # local-master-backup.sh start 2
2為默認端口的偏移量,每個HMaster使用兩個端口(默認為16000和16010),例如在hadoop-2執行該命令,則備份HMaster服務的端口為16012。
此時在瀏覽器中打開備份服務的ip:16012,即可看到集群中的HMaster的狀態信息。
若要終止備份HMaster服務,需要查看該備份服務的PID,然后使用kill -9殺死該進程即可。