Hbase物理模型
image.png
HBase主要有三個(gè)進(jìn)程。 HMaster, HRegionServer, Zookeeper(進(jìn)程名為HQuorumPeer). 獨(dú)立模式下運(yùn)行的時(shí)候用jps查看只能看到一個(gè)進(jìn)程HMaster工坊, 運(yùn)行在一起.
下圖是一個(gè)分布式的部署模式:
image.png
此集群擁有主備Master(只有一個(gè)Master能工作褪测,需要通過(guò)zookeeper選舉), 多個(gè)zookeeper和多個(gè)regionServer刨晴。
HMaster主服務(wù)器:
- 只有一個(gè)工作中
- 為RegionServer分配region
- 負(fù)載均衡
- RegionServer 的failover
- GFS上垃圾文件回收
- 處理schema更新請(qǐng)求
Region和Region服務(wù)器:
- 表在行方向上按行健范圍劃分的是Region
- 一個(gè)表處世只有region, 記錄數(shù)增加到某個(gè)閾值時(shí)才開(kāi)始分裂
- Region是分布式存儲(chǔ)和負(fù)載均衡的最小單元沮趣。 注意: Region里還有按Column Family劃分存儲(chǔ)
- 一個(gè)節(jié)點(diǎn)一個(gè)HRegionServer
- 一個(gè)RegionServer管理多個(gè)Region實(shí)例
- 一個(gè)Region包含HLog和存放數(shù)據(jù)的Store
HLog:
用于災(zāi)難恢復(fù)点额,WAL log表示wirite ahead log, 寫之前先記錄操作何什,然后才會(huì)寫數(shù)據(jù)
Store:
- Store是Region里按列簇劃分的存儲(chǔ)單元组哩。分為內(nèi)存的memstore和硬盤上的HFile.
- 寫操作先寫入memstore, 到閾值寫入StoreFile(HFile)
- HFile文件數(shù)量正常到閾值會(huì)觸發(fā)region分裂,由HMaster分配到相應(yīng)的region服務(wù)器上
- 客戶端檢索數(shù)據(jù)处渣,先查內(nèi)存伶贰,再查文件
Hbase訪問(wèn)流程
image.png
客戶端讀寫訪問(wèn)流程
- HBase client通過(guò)訪問(wèn)zookeeper上保存的hbase:meta表的位置確定需要訪問(wèn)的region.
- client直接訪問(wèn)RegionServer做讀寫,不需要經(jīng)過(guò)HMaster
- HMaster會(huì)為fail的regionServer的上的region做重新分配罐栈,也會(huì)做region的load balance.
image.png
客戶端如果訪問(wèn)管理類的操作黍衙,需要與HMaster進(jìn)行通信。
再回顧總結(jié)下各個(gè)進(jìn)程的主要功能:
-
HMaster:
- 分配region到Region server
- Region server的負(fù)載均衡
- Region Server 的failover
- HDFS的垃圾回收
- 處理schema更新請(qǐng)求
-
HRegionServer:
- 維護(hù)region, 處理對(duì)該region請(qǐng)求
- 切分region
-
Zookeeper:
- Master選舉
- 存儲(chǔ)region元數(shù)據(jù)
- 存儲(chǔ)region server狀態(tài), 維護(hù)和region server的心跳
- 存儲(chǔ)HBase的schema和table