您好,登錄后才能下訂單哦!
這篇文章主要講解了“HBase高表與寬表怎么選擇”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“HBase高表與寬表怎么選擇”吧!
hbase中的寬表是指很多列較少行,即列多行少的表,一行中的數據量較大,行數少;高表是指很多行較少列,即行多列少,一行中的數據量較少,行數大。
hbase的row key是分布式的索引,也是分片的依據。
hbase的row key + column family + column qualifier + timestamp + value 是HFile中數據排列依據。HFile據此,對數據的索引到data block級別,而不是行級別。所以這種key是HFile內部的粗粒度(data block粒度)本地索引的主鍵。
據此,在HBase中使用寬表、高表的優劣總結如下:
查詢性能:高表更好,因為查詢條件都在row key中, 是全局分布式索引的一部分。高表一行中的數據較少。所以查詢緩存BlockCache能緩存更多的行,以行數為單位的吞吐量會更高。
分片能力:高表分片粒度更細,各個分片的大小更均衡。因為高表一行的數據較少,寬表一行的數據較多。HBase按行來分片。
元數據開銷:高表元數據開銷更大。高表行多,row key多,可能造成region數量也多,- root -、 .meta表數據量更大。過大的元數據開銷,可能引起HBase集群的不穩定、master更大的負擔(這方面后續再好好總結)。
事務能力:寬表事務性更好。HBase對一行的寫入(Put)是有事務原子性的,一行的所有列要么全部寫入成功,要么全部沒有寫入。但是多行的更新之間沒有事務性保證。
數據壓縮比:如果我們對一行內的數據進行壓縮,寬表能獲得更高的壓縮比。因為寬表中,一行的數據量較大,往往存在更多相似的二進制字節,有利于提高壓縮比。通過壓縮,緩解了寬表一行數據量太大,并導致分片大小不均勻的問題。查詢時,我們根據row key找到壓縮后的數據,進行解壓縮。而且解壓縮可以通過協處理器(coproesssor)在HBase服務器上做,而不是在業務應用的服務器上做,以充分應用HBase集群的CPU能力。
設計表時,可以不絕對追求高表、寬表,而是在兩者之間做好**平衡**。根據查詢模式,需要分布式索引、分片、**有很高選擇度**(即能據此查詢條件迅速鎖定很小范圍的一些行)的查詢用字段,應該放入row key;能夠均勻地劃分數據字節數的字段,也應該放入row key,作為分片的依據。選擇度較低,并且不需要作為分片依據的查詢用字段,放入column family和column qualifier,不放入row key。
感謝各位的閱讀,以上就是“HBase高表與寬表怎么選擇”的內容了,經過本文的學習后,相信大家對HBase高表與寬表怎么選擇這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。