天天看點

關于hbase 的一些基本概念Hbase主要部件組成HBase的壓縮HBASE的删除

cilent

包含通路hbase的接口,client維護着一些cache來加快對hbase的通路,比如regione的位置資訊。

masterserver

 為region server配置設定region

 負責region server的負載均衡

 發現失效的region server并重新配置設定其上的region

 hdfs上的垃圾檔案回收

處理schema更新請求

region server

 region server維護master配置設定給它的region,處理對這些region的io請求

 region server負責切分在運作過程中變得過大的region

zookeeper

 保證任何時候,叢集中隻有一個master

 存貯所有region的尋址入口。

 實時監控region server的狀态,将region server的上線和下線資訊實時通知給master

 存儲hbase的schema,包括有哪些table,每個table有哪些column family

        當由記憶體将檔案flush到硬碟上時,會建立很多的hfile檔案,對這些hfile檔案需要壓縮,包含minor compactions and major compactions

        minor壓縮,是将多個小的檔案合并成大的檔案,執行n路合并。

        major壓縮,是指将一個column family的檔案都存儲為一個大檔案,同時他還掃描删除标示,或者過期的版本資訊。

        hbase的delete指令,并不是真的删除了檔案,而是設定一個标記(delete marker)。使用者在檢索資料的時候,會過濾掉這些标示的資料。

        hbase的删除标記有三種:

1. version delete marker 删除指定version的某個qualifier對應的value

2. column delete marker 删除某個qualifier的所有version的資料

3. family delete marker 删除column  family  下所有qualifier對應的所有version的資料

        還可以再column和family delete marker上打上時間戳,這時,隻有小于這個時間戳的version才會被影響到。

hbase允許進行基于時間的查詢進而得到指定時間段的曆史資料。查詢時間t的資料即查詢[0,t+1)的資料。這樣就帶來了一個潛在的問題。當一個delete marker被set上,所有被它影響到的資料都不再可見。如果你在時間t put了一個qualifier為c的資料,接着在t+x的時間點删除這個qualifier,此時查詢[0,t+1)時間段的資料将不會傳回qualifier為c的這個kv對。

将表的屬性keep_deleted_cells設定為on,是為了使 flashback queries能傳回正确的結果

繼續閱讀