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