小編給大家分享一下HBase整體架構(gòu)是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比呼瑪網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式呼瑪網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋呼瑪?shù)貐^(qū)。費用合理售后完善,十載實體公司更值得信賴。組成部件說明
Client:
使用HBase RPC機制與HMaster和HRegionServer進行通信
Client與HMaster進行通信進行管理類操作
Client與HRegionServer進行數(shù)據(jù)讀寫類操作
Zookeeper:
Zookeeper Quorum存儲-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注冊到Zookeeper中,HMaster隨時感知各個HRegionServer的健康狀況
Zookeeper避免HMaster單點問題
HMaster:
HMaster沒有單點問題,HBase中可以啟動多個HMaster,通過Zookeeper的Master Election機制保證總有一個Master在運行
主要負責(zé)Table和Region的管理工作:
1 管理用戶對表的增刪改查操作
2 管理HRegionServer的負載均衡,調(diào)整Region分布
3 Region Split后,負責(zé)新Region的分布
4 在HRegionServer停機后,負責(zé)失效HRegionServer上Region遷移
HRegionServer:
HBase中最核心的模塊,主要負責(zé)響應(yīng)用戶I/O請求,向HDFS文件系統(tǒng)中讀寫數(shù)據(jù)
HRegionServer管理一些列HRegion對象;
每個HRegion對應(yīng)Table中一個Region,HRegion由多個HStore組成;
每個HStore對應(yīng)Table中一個Column Family的存儲;
Column Family就是一個集中的存儲單元,故將具有相同IO特性的Column放在一個Column Family會更高效
HStore:
HBase存儲的核心。由MemStore和StoreFile組成。
MemStore是Sorted Memory Buffer。用戶寫入數(shù)據(jù)的流程:
Client寫入 -> 存入MemStore,一直到MemStore滿 -> Flush成一個StoreFile,直至增長到一定閾值 -> 觸發(fā)Compact合并操作 -> 多個StoreFile合并成一個StoreFile,同時進行版本合并和數(shù)據(jù)刪除 -> 當(dāng)StoreFiles Compact后,逐步形成越來越大的StoreFile -> 單個StoreFile大小超過一定閾值后,觸發(fā)Split操作,把當(dāng)前Region Split成2個Region,Region會下線,新Split出的2個孩子Region會被HMaster分配到相應(yīng)的HRegionServer上,使得原先1個Region的壓力得以分流到2個Region上。
由此過程可知,HBase只是增加數(shù)據(jù),有所得更新和刪除操作,都是在Compact階段做的,所以,用戶寫操作只需要進入到內(nèi)存即可立即返回,從而保證I/O高性能。
HLog
引入HLog原因:
在分布式系統(tǒng)環(huán)境中,無法避免系統(tǒng)出錯或者宕機,一旦HRegionServer意外退出,MemStore中的內(nèi)存數(shù)據(jù)就會丟失,引入HLog就是防止這種情況
工作機制:
每個HRegionServer中都會有一個HLog對象,HLog是一個實現(xiàn)Write Ahead Log的類,每次用戶操作寫入Memstore的同時,也會寫一份數(shù)據(jù)到HLog文件,HLog文件定期會滾動出新,并刪除舊的文件(已持久化到StoreFile中的數(shù)據(jù))。當(dāng)HRegionServer意外終止后,HMaster會通過Zookeeper感知,HMaster首先處理遺留的HLog文件,將不同region的log數(shù)據(jù)拆分,分別放到相應(yīng)region目錄下,然后再將失效的region重新分配,領(lǐng)取到這些region的HRegionServer在Load Region的過程中,會發(fā)現(xiàn)有歷史HLog需要處理,因此會Replay HLog中的數(shù)據(jù)到MemStore中,然后flush到StoreFiles,完成數(shù)據(jù)恢復(fù)。
HBase存儲格式
HBase中的所有數(shù)據(jù)文件都存儲在Hadoop HDFS文件系統(tǒng)上,格式主要有兩種:
1 HFile HBase中KeyValue數(shù)據(jù)的存儲格式,HFile是Hadoop的二進制格式文件,實際上StoreFile就是對HFile做了輕量級包裝,即StoreFile底層就是HFile
2 HLog File,HBase中WAL(Write Ahead Log) 的存儲格式,物理上是Hadoop的Sequence File
HFile
圖片解釋:
HFile文件不定長,長度固定的塊只有兩個:Trailer和FileInfo
Trailer中指針指向其他數(shù)據(jù)塊的起始點
File Info中記錄了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等
Data Index和Meta Index塊記錄了每個Data塊和Meta塊的起始點
Data Block是HBase I/O的基本單元,為了提高效率,HRegionServer中有基于LRU的Block Cache機制
每個Data塊的大小可以在創(chuàng)建一個Table的時候通過參數(shù)指定,大號的Block有利于順序Scan,小號Block利于隨機查詢
每個Data塊除了開頭的Magic以外就是一個個KeyValue對拼接而成, Magic內(nèi)容就是一些隨機數(shù)字,目的是防止數(shù)據(jù)損壞
HFile里面的每個KeyValue對就是一個簡單的byte數(shù)組。這個byte數(shù)組里面包含了很多項,并且有固定的結(jié)構(gòu)。
KeyLength和ValueLength:兩個固定的長度,分別代表Key和Value的長度
Key部分:Row Length是固定長度的數(shù)值,表示RowKey的長度,Row 就是RowKey
Column Family Length是固定長度的數(shù)值,表示Family的長度
接著就是Column Family,再接著是Qualifier,然后是兩個固定長度的數(shù)值,表示Time Stamp和Key Type(Put/Delete)
Value部分沒有這么復(fù)雜的結(jié)構(gòu),就是純粹的二進制數(shù)據(jù)
HLog File
HLog文件就是一個普通的Hadoop Sequence File,Sequence File 的Key是HLogKey對象,HLogKey中記錄了寫入數(shù)據(jù)的歸屬信息,除了table和region名字外,同時還包括 sequence number和timestamp,timestamp是“寫入時間”,sequence number的起始值為0,或者是最近一次存入文件系統(tǒng)中sequence number。
HLog Sequece File的Value是HBase的KeyValue對象,即對應(yīng)HFile中的KeyValue 。
以上是“HBase整體架構(gòu)是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
標(biāo)題名稱:HBase整體架構(gòu)是什么-創(chuàng)新互聯(lián)
本文來源:http://jinyejixie.com/article46/pechg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、微信小程序、做網(wǎng)站、品牌網(wǎng)站建設(shè)、App設(shè)計、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容