天天看點

Hbase中的資料模型

首先看一下Hbase的資料整體流向圖:

Hbase中的資料模型

       Hbase上Regionserver的記憶體分為兩個部分,一部分作為Memstore,主要用來寫;另外一部分作為BlockCache,主要用于讀資料;這裡主要介紹寫資料的部分,即Memstore。當RegionServer(RS)收到寫請求的時候(writerequest),RS會将請求轉至相應的Region。每一個Region都存儲着一些列(a set of rows)。根據其列族的不同,将這些列資料存儲在相應的列族中(Column Family,簡寫CF)。不同的CF中的資料存儲在各自的HStore中,HStore由一個Memstore及一系列HFile組成。Memstore位于RS的主記憶體中,而HFiles被寫入到HDFS中。當RS處理寫請求的時候,資料首先寫入到Memstore,然後當到達一定的閥值的時候,Memstore中的資料會被刷到HFile中。

       用到Memstore最主要的原因是:存儲在HDFS上的資料需要按照row key 排序。而HDFS本身被設計為順序讀寫(sequential reads/writes),不允許修改。這樣的話,HBase就不能夠高效的寫資料,因為要寫入到HBase的資料不會被排序,這也就意味着沒有為将來的檢索優化。為了解決這個問題,HBase将最近接收到的資料緩存在記憶體中(in Memstore),在持久化到HDFS之前完成排序,然後再快速的順序寫入HDFS。

繼續閱讀