您好,登錄后才能下訂單哦!
小編給大家分享一下HBase系統(tǒng)架構(gòu)是怎么樣的,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
組成部件說明
Client:
使用HBase RPC機(jī)制與HMaster和HRegionServer進(jìn)行通信
Client與HMaster進(jìn)行通信進(jìn)行管理類操作
Client與HRegionServer進(jìn)行數(shù)據(jù)讀寫類操作
Zookeeper:
Zookeeper Quorum存儲(chǔ)-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注冊(cè)到Zookeeper中,HMaster隨時(shí)感知各個(gè)HRegionServer的健康狀況
Zookeeper避免HMaster單點(diǎn)問題
HMaster:
HMaster沒有單點(diǎn)問題,HBase中可以啟動(dòng)多個(gè)HMaster,通過Zookeeper的Master Election機(jī)制保證總有一個(gè)Master在運(yùn)行
主要負(fù)責(zé)Table和Region的管理工作:
1 管理用戶對(duì)表的增刪改查操作
2 管理HRegionServer的負(fù)載均衡,調(diào)整Region分布
3 Region Split后,負(fù)責(zé)新Region的分布
4 在HRegionServer停機(jī)后,負(fù)責(zé)失效HRegionServer上Region遷移
HRegionServer:
HBase中最核心的模塊,主要負(fù)責(zé)響應(yīng)用戶I/O請(qǐng)求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)
Client寫入 -> 存入MemStore,一直到MemStore滿 -> Flush成一個(gè)StoreFile,直至增長到一定閾值 -> 觸發(fā)Compact合并操作 -> 多個(gè)StoreFile合并成一個(gè)StoreFile,同時(shí)進(jìn)行版本合并和數(shù)據(jù)刪除 -> 當(dāng)StoreFiles Compact后,逐步形成越來越大的StoreFile -> 單個(gè)StoreFile大小超過一定閾值后,觸發(fā)Split操作,把當(dāng)前Region Split成2個(gè)Region,Region會(huì)下線,新Split出的2個(gè)孩子Region會(huì)被HMaster分配到相應(yīng)的HRegionServer上,使得原先1個(gè)Region的壓力得以分流到2個(gè)Region上。
由此過程可知,HBase只是增加數(shù)據(jù),有所得更新和刪除操作,都是在Compact階段做的,所以,用戶寫操作只需要進(jìn)入到內(nèi)存即可立即返回,從而保證I/O高性能。
HLog
引入HLog原因:
在分布式系統(tǒng)環(huán)境中,無法避免系統(tǒng)出錯(cuò)或者宕機(jī),一旦HRegionServer意外退出,MemStore中的內(nèi)存數(shù)據(jù)就會(huì)丟失,引入HLog就是防止這種情況
工作機(jī)制:
每個(gè)HRegionServer中都會(huì)有一個(gè)HLog對(duì)象,HLog是一個(gè)實(shí)現(xiàn)Write Ahead Log的類,每次用戶操作寫入Memstore的同時(shí),也會(huì)寫一份數(shù)據(jù)到HLog文件,HLog文件定期會(huì)滾動(dòng)出新,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))。當(dāng)HRegionServer意外終止后,HMaster會(huì)通過Zookeeper感知,HMaster首先處理遺留的HLog文件,將不同region的log數(shù)據(jù)拆分,分別放到相應(yīng)region目錄下,然后再將失效的region重新分配,領(lǐng)取到這些region的HRegionServer在Load Region的過程中,會(huì)發(fā)現(xiàn)有歷史HLog需要處理,因此會(huì)Replay HLog中的數(shù)據(jù)到MemStore中,然后flush到StoreFiles,完成數(shù)據(jù)恢復(fù)。
HBase存儲(chǔ)格式
HBase中的所有數(shù)據(jù)文件都存儲(chǔ)在Hadoop HDFS文件系統(tǒng)上,格式主要有兩種:
1 HFile HBase中KeyValue數(shù)據(jù)的存儲(chǔ)格式,HFile是Hadoop的二進(jìn)制格式文件,實(shí)際上StoreFile就是對(duì)HFile做了輕量級(jí)包裝,即StoreFile底層就是HFile
2 HLog File,HBase中WAL(Write Ahead Log) 的存儲(chǔ)格式,物理上是Hadoop的Sequence File
HFile
KeyLength和ValueLength:兩個(gè)固定的長度,分別代表Key和Value的長度
Key部分:Row Length是固定長度的數(shù)值,表示RowKey的長度,Row 就是RowKey
Column Family Length是固定長度的數(shù)值,表示Family的長度
接著就是Column Family,再接著是Qualifier,然后是兩個(gè)固定長度的數(shù)值,表示Time Stamp和Key Type(Put/Delete)
Value部分沒有這么復(fù)雜的結(jié)構(gòu),就是純粹的二進(jìn)制數(shù)據(jù)
HLog File
HLog文件就是一個(gè)普通的Hadoop Sequence File,Sequence File 的Key是HLogKey對(duì)象,HLogKey中記錄了寫入數(shù)據(jù)的歸屬信息,除了table和region名字外,同時(shí)還包括 sequence number和timestamp,timestamp是“寫入時(shí)間”,sequence number的起始值為0,或者是最近一次存入文件系統(tǒng)中sequence number。
HLog Sequece File的Value是HBase的KeyValue對(duì)象,即對(duì)應(yīng)HFile中的KeyValue
以上是“HBase系統(tǒng)架構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。