
hbase是有字節(jié)碼形式存儲的
一、Client
1.包含訪問HBase的接口并維護cache(緩存)來加快對HBase的訪問
二、Zookeeper
保證了只有一個alive的Master,對RegionServer做健康檢查,實時心跳,存儲Region的尋址入口,存儲HBase的scheme和table元數(shù)據(jù)
三、Master
Master為RegionServer分配Region,負責(zé)RegionServer的負載均衡,將失效的RegionServer(由zookeeper通知)中的Storefile轉(zhuǎn)移到其他的RegionServer中,管理table的增刪改操作
四、RegionServer
RegionServer維護Region,處理region的io請求,負責(zé)切分在運行過程中變得過大的Region
盡量避免過多的小文件和數(shù)據(jù)傾斜
五、Region
HBase自動把表水平劃分成多個區(qū)域(region),每個region會保存一個表里面某段連續(xù)的數(shù)據(jù)
每個表一開始只有一個region,隨著數(shù)據(jù)不斷插入表,region不斷增大,當(dāng)增大到一個閥值的時候,region就會等分會兩個新的region(裂變)
當(dāng)table中的行不斷增多,就會有越來越多的region。這樣一張完整的表被保存在多個Regionserver 上。
hlog可以記錄操作日志
region對應(yīng)一個表
store對應(yīng)一個列族
六、Memstore 與 storefile
一個region由多個store組成,一個store對應(yīng)一個CF(列族)
store包括位于內(nèi)存中的memstore和位于磁盤的storefile寫操作先寫入memstore,當(dāng)memstore中的數(shù)據(jù)達到某個閾值,hregionserver會啟動flashcache進程寫入storefile,每次寫入形成單獨的一個storefile
當(dāng)storefile文件的數(shù)量增長到一定閾值后,系統(tǒng)會進行合并(minor、major compaction),在合并過程中會進行版本合并和刪除工作(majar),形成更大的storefile
當(dāng)一個region所有storefile的大小和數(shù)量超過一定閾值后,會把當(dāng)前的region分割為兩個,并由hmaster分配到相應(yīng)的regionserver服務(wù)器,實現(xiàn)負載均衡
客戶端檢索數(shù)據(jù),先在memstore找,找不到再找storefile
hbase通過hdfsclient來存儲數(shù)據(jù)存儲到datenode上
