HBase在CentOS上分布集群安装
場景
CentOS7上搭建Hadoop集群(入門級):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119335883
在上面搭建起來Hadoop的環(huán)境后,進(jìn)行HBase的安裝。
HBase
??? HBase是一個基于HDFS的面向列的分布式數(shù)據(jù)庫,源于Google的
BigTable論文。HDFS基于流式數(shù)據(jù)訪問,低時間延遲的數(shù)據(jù)訪問并不
適合在HDFS上運(yùn)行。所以,如果需要實(shí)時地隨機(jī)訪問超大規(guī)模數(shù)據(jù)集,使用HBase
是更好的選擇。
HBase體系結(jié)構(gòu)
??? HBase同樣是采用Master/Slaves的主從服務(wù)器結(jié)構(gòu),它由一個HMaster服務(wù)器和多
個HRegionServer服務(wù)器構(gòu)成,而所有服務(wù)器都是通過ZooKeeper協(xié)調(diào)并處理各服務(wù)器
運(yùn)行期間可能遇到的錯誤。HMaster負(fù)責(zé)管理所有的HRegionServer,各HRegionServer
負(fù)責(zé)存儲許多HRegion,每一個HRegion是對HBase邏輯表的分塊。
HRegion
??? HBase使用表(Table)存儲數(shù)據(jù)集,表由行和列組成,這與關(guān)系型數(shù)據(jù)庫類似。
但是在HBase中,當(dāng)表的大小超過設(shè)定值時,HBase會自動將表劃分為不同的區(qū)域
(Region),每個區(qū)域稱為一個HRegion,它是HBase集群上分布式存儲和負(fù)載均衡
的最小單位,在這一點(diǎn)上,表和HRegion類似于HDFS中文件與文件塊的概念。一個
HRegion中保存一個表中一段連續(xù)的數(shù)據(jù),通過表名和主鍵范圍(開始主鍵~結(jié)束主鍵)
來區(qū)分每一個HRegion。最開始,一個表只有一個HRegion,隨著HRegion逐漸變大,
直到超出設(shè)定的閩值大小,便會在某行的邊界把表分成兩個大小基本相同的HRegion,
稱為HRegion分裂。
HRegionServer
??? HRegionServer負(fù)責(zé)響應(yīng)用戶I/O請求,向HDFS中讀寫數(shù)據(jù),一臺機(jī)器上只運(yùn)行
一個HRegionServera HRegionServer包含兩部分:HLog部分和HRegion部分。
??? HLog用于存儲數(shù)據(jù)日志,實(shí)質(zhì)是HDFS的Sequence File。到達(dá)HRegion的寫操作
首先被追加到日志中,然后才被加入內(nèi)存中的MemStoreo HLog文件主要用于故障恢復(fù)。
例如某臺HRegionServer發(fā)生故障,那么它所維護(hù)的HRegion會被重新分配到新的機(jī)器
上,新的HRegionServer在加載HRegion的時候可以通過HLog對數(shù)據(jù)進(jìn)行恢復(fù)。
??? HRegion由多個HRegion組成,每個HRegion對應(yīng)表中的一個分塊,并且每一個
HRegion只會被一個HRegionServer管理。
HMaster
??? 每臺HRegionServer都會和HMaster服務(wù)器通信。HMaster的主要任務(wù)就是告訴每
個HRegionServer它要維護(hù)哪些HRegion 。
在HBase中可以啟動多個HMaster,通過ZooKeeper的Master選舉機(jī)制來保證系
統(tǒng)中總有一個Master在運(yùn)行。HMaster的具體包括以下功能。
1、管理用戶對表的增、刪、改、查操作。
2、管理HRegionServer的負(fù)載均衡,調(diào)整HRegion分布。
3、在HRegion分裂后,負(fù)責(zé)新HRegion的分配。
4、在HRegionServer停機(jī)后,負(fù)責(zé)失效HRegionServer上的HRegion遷移。
ZooKeeper
??? ZooKeeper存儲的是HBase中的一ROOT表和.META.表的位置,這是HBase中兩
張?zhí)厥獾谋?#xff0c;稱為根數(shù)據(jù)表(-ROOT-)和元數(shù)據(jù)表(.META. )。.META表記錄普通用
戶表的HRegion標(biāo)識符信息,每個HRegion的標(biāo)識符為:表名+開始主鍵十唯一ID。
隨著用戶表的HRegion的分裂,.META表的信息也會增加,并且還可能會被分割為幾
個HRegion,此時可以用一個-ROOT-表來保存META的HRegion信息,而-ROOT-表
是不能被分割的,也就是-ROOT表只有一個HRegion。那么客戶端(Client)在訪問
用戶數(shù)據(jù)前需要先訪問ZooKeeper,然后訪問一ROOT表,接著訪問.META.表,最后
才能找到用戶數(shù)據(jù)所在的位置進(jìn)行訪問。
??? 此外ZooKeeper還負(fù)責(zé)監(jiān)控各個機(jī)器的狀態(tài),之前各機(jī)器需要在ZooKeeper中注冊一
個實(shí)例。當(dāng)某臺HRegionServer發(fā)生故障時,通知HMaster進(jìn)行HRegion遷移;若HMaster
發(fā)生故障,ZooKeeper負(fù)責(zé)恢復(fù)HMaster,并且保證同時有且只有一臺HMaster運(yùn)行。
特點(diǎn)
HBase是一個基于列模式的映射數(shù)據(jù)庫,它只能表示簡單的鍵一值的映射關(guān)
系。與關(guān)系型數(shù)據(jù)庫相比,它具有如下特點(diǎn)。
1、數(shù)據(jù)類型:
HBase只有簡單的字符串類型,它只保存字符串.而關(guān)系型數(shù)據(jù)庫有著豐富的類型選擇和存儲方式。
2、數(shù)據(jù)操作:
HBase只有簡單的插入、查詢、刪除、清空等操作,表和表之間是
分離的,沒有復(fù)雜的表和表之間的關(guān)系,所以不能也沒有必要實(shí)現(xiàn)表和表之間
的關(guān)聯(lián)操作。而關(guān)系型數(shù)據(jù)庫有多種連接操作。
3、存儲模式:
HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的
文件是分離的。而關(guān)系型數(shù)據(jù)庫是基于表格結(jié)構(gòu)和行模式存儲的。
4、數(shù)據(jù)維護(hù):
HBase的更新操作實(shí)際上是插入了新的數(shù)據(jù),它的舊版本依然會保留,
而關(guān)系型數(shù)據(jù)庫是替換修改。
5、可伸縮性:
HBase這類分布式數(shù)據(jù)庫就是為了這個目的而開發(fā)出來的,所以它
能夠輕松地增加或減少硬件數(shù)量,并且對錯誤的兼容性也比較高。而關(guān)系型數(shù)
據(jù)庫通常需要增加中間層才能實(shí)現(xiàn)類似的功能。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號
霸道的程序猿
獲取編程相關(guān)電子書、教程推送與免費(fèi)下載。
實(shí)現(xiàn)
1、首先下載HBase的安裝包
https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/
這里選擇2.4.5版本下的bin.tar.gz的文件下載
下載成功之后將其上傳并解壓到master服務(wù)器上
?
目錄文件說明:?
bin: 包含了所有可執(zhí)行命令與腳本
conf:配置文件目錄
hbase-webapps:存儲Web應(yīng)用的目錄,這些應(yīng)用主要用于查看HBase的運(yùn)行狀態(tài)。
默認(rèn)訪問地址http://master:16010,其中master是HBase Mater服務(wù)器地址。
lib:jar文件目錄,包括第三方依賴與Hadoop相關(guān)jar文件,其中Hadoop相關(guān)jar文件最好能與實(shí)際運(yùn)行的Hadoop版本一致。
logs:日志文件
2、分布模式的HBase會運(yùn)行在多個節(jié)點(diǎn)上,通常是將HBase的HMaster運(yùn)行在HDFS的NameNode上,而
將HRegionServer運(yùn)行在HDFS的DataNode上。
進(jìn)入到conf目錄,修改配置文件
修改hbase-site.xml
<configuration><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.rootdir</name><value>hdfs://master:9000/hbase</value></property><property><name>hbase.master</name><value>master:600000</value></property><property><name>hbase.zookeeper.quorum</name><value>master,slave1,slave2</value></property> </configuration>說明:
hbase.cluster.distributed 配置HBase為完全分布式
hbase.master 配置HMaster的地址
hbase.zookeeper.quorum 配置Zookeeper集群中所有服務(wù)器的位置
hbase.rootdir 配置HRegionServer的數(shù)據(jù)庫存儲目錄
3、修改hbase-env.sh
此文件是來配置全局HBase集群系統(tǒng)的特性,每一臺機(jī)器都可以通過該文件來了解全局HBse的
某些特性。在文件末尾需要增加以下環(huán)境變量
export JAVA_HOME=/usr/local/java/jdk1.8.0_162 export HADOOP_HOME=/hadoop/hadoop-2.8.0 export HBASE_HOME=/hbase/hbase-2.4.5 export HBASE_MANAGES_ZK=true說明:
??? 前3個環(huán)境變量分別代表Java.、Hadoop、HBase的安裝目錄。分布式的HBase集
群需要ZooKeeper實(shí)例的運(yùn)行,最后一個環(huán)境變量HBASE MANAGES ZK表示HBase
是否使用內(nèi)置的ZooKeeper實(shí)例,默認(rèn)為true。當(dāng)在hbase-site.xml文件中配置了hbase.
zookeeper.quorum屬性后,系統(tǒng)會使用該屬性指定的ZooKeeper集群服務(wù)器列表。在啟動
HBase時,HBase將把ZooKeeper作為自身的一部分運(yùn)行,其對應(yīng)進(jìn)程為“HQuorumPeer" ,
關(guān)閉HBase時其內(nèi)置ZooKeeper實(shí)例也一起關(guān)閉。如果HBASE MANAGES ZK為
false,表示不會使用內(nèi)置ZooKeeper實(shí)例,也就是內(nèi)置ZooKeeper不會隨HBase啟動,而
需要用戶在指定機(jī)器上獨(dú)立安裝配置ZooKeeper實(shí)例,同樣使用hbase.zookeeper.quorum
屬性指定這些機(jī)器,并且在啟動HBase之前必須手動啟動這些機(jī)器的ZooKeeper。
這里使用HBase內(nèi)置ZooKeeper實(shí)例。
4、修改regionservers文件
??? 該文件列出T所有HRegionServer節(jié)點(diǎn),配置方式與Hadoop的slaves文件類似,
每一行指定一臺機(jī)器。當(dāng)HBase啟動、關(guān)閉時會把此文件中列出的所有機(jī)器同時啟動、
關(guān)閉。
5、同Hadoop的分布式安裝類似,還需要將HBase所在目錄/hbase分別復(fù)制到slave1、slave2
scp -r /hbase slave1:/ scp -r /hbase slave2:/6、啟動HBase
進(jìn)入到master節(jié)點(diǎn)的hbase的bin目錄下
./start-hbase.sh7、在slave1和2節(jié)點(diǎn)上輸入jps查看增加了兩個java進(jìn)程,HQuorumPeer 為ZooKeeper進(jìn)程和HMaster為HBase進(jìn)程。
8、在啟動HBase后,通過命令
./hbase shell進(jìn)入到HBase Shell
然后使用命令
status可以看到HBase的運(yùn)行狀態(tài)
標(biāo)識共有兩個HRegionServer正在正常運(yùn)行
還可以通過HMaster節(jié)點(diǎn)的16010端口查看HBase的運(yùn)行狀態(tài)
http://192.168.148.128:16010/
最后通過命令exit退出HBase Shell
?
總結(jié)
以上是生活随笔為你收集整理的HBase在CentOS上分布集群安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Three.js中自定义控制几何体的点和
- 下一篇: HBase Shell常用的命令