HBase的高表和寬表

2021-09-09 02:27:30 字數 1246 閱讀 7675

hbase中的寬表是指很多列較少行,即列多行少的表,一行中的資料量較大,行數少;

hbase中高表是指很多行較少列,即行多列少,一行中的資料量較少,行數大。

hbase的row key是分布式的索引,也是分片的依據。

hbase的row key + column family + column qualifier + timestamp + value 是hfile中資料排列依據。hfile據此,對資料的索引到data block級別,而不是行級別。所以這種key是hfile內部的粗粒度(data block粒度)本地索引的主鍵。

1、查詢效能:

高表更好,因為查詢條件都在row key中, 是全域性分布式索引的一部分。高表一行中的資料較少。所以查詢快取blockcache能快取更多的行,以行數為單位的吞吐量會更高。

2、分片能力:

高表分片粒度更細,各個分片的大小更均衡。因為高表一行的資料較少,寬表一行的資料較多。hbase按行來分片。

3、元資料開銷:

高表元資料開銷更大。高錶行多,row key多,可能造成region數量也多,- root -、 .meta表資料量更大。過大的元資料開銷,可能引起hbase集群的不穩定、master更大的負擔(這方面後續再好好總結)。

4、事務能力:

寬表事務性更好。hbase對一行的寫入(put)是有事務原子性的,一行的所有列要麼全部寫入成功,要麼全部沒有寫入。但是多行的更新之間沒有事務性保證。

5、資料壓縮比:

如果我們對一行內的資料進行壓縮,寬錶能獲得更高的壓縮比。因為寬表中,一行的資料量較大,往往存在更多相似的二進位制位元組,有利於提高壓縮比。通過壓縮,緩解了寬表一行資料量太大,並導致分片大小不均勻的問題。查詢時,我們根據row key找到壓縮後的資料,進行解壓縮。而且解壓縮可以通過協處理器(coproesssor)在hbase伺服器上做,而不是在業務應用的伺服器上做,以充分應用hbase集群的cpu能力。

設計表時,可以不絕對追求高表、寬表,而是在兩者之間做好平衡。根據查詢模式,需要分布式索引、分片、有很高選擇度(即能據此查詢條件迅速鎖定很小範圍的一些行)的查詢用字段,應該放入row key;能夠均勻地劃分資料位元組數的字段,也應該放入row key,作為分片的依據。選擇度較低,並且不需要作為分片依據的查詢用字段,放入column family和column qualifier,不放入row key。

HBase 高表與寬表的選擇

hbase中的寬表是指很多列較少行,即列多行少的表,一行中的資料量較大,行數少 高表是指很多行較少列,即行多列少,一行中的資料量較少,行數大。hbase的row key是分布式的索引,也是分片的依據。hbase的row key column family column qualifier times...

hbase寬表和高表以及優缺點

寬表總結 二 寬表的不便 三 如何優雅的使用寬表 hbase中的 hbase 的row key column family column qualifier timestamp value是hfile中資料排列依據。hfile據此,對資料的索引到data block級別,而不是行級別。所以這種key...

HBase學習筆記 高表與寬表的選擇

hbase中的寬表是指很多列較少行,即列多行少的表,一行中的資料量較大,行數少 高表是指很多行較少列,即行多列少,一行中的資料量較少,行數大。hbase的row key是分布式的索引,也是分片的依據。hbase的row key column family column qualifier times...