Hive資料匯入HBase引起資料膨脹引發的思考

大資料學習與分享發表於2020-12-08

最近朋友公司在做一些資料的遷移,主要是將一些Hive處理之後的熱資料匯入到HBase中,但是遇到了一個很奇怪的問題:同樣的資料到了HBase中,所佔空間竟增長了好幾倍!詳談中,筆者建議朋友至少從幾點原因入手分析:

  1. HBase中的資料相對於Hive中的資料會新增一些附加資訊導致磁碟佔用的增加,比如布隆過濾器

  2. Hive中的資料是否進行過壓縮,比如snappy,壓縮比還是很高的

  3. row key和列族都會佔據一定的空間,當資料量較大時,僅二者就會佔據很多不必要的空間

  4. 建議將相同查詢場景下的幾個常用的列的值拼接成一個列,節省KeyValue結構化帶來的開銷

Hive和HBase都可以作為儲存系統,不禁思考引入HBase做資料儲存的原因?

  1. 通過scan、get可以批量、單條獲取資料,通過bulkload、put可以批量、單條匯入資料

  2. 在實際生產環境,通常將計算和儲存進行分離,保證叢集規模水平可擴充套件,易於提高整體的吞吐。通過單機效能優化和叢集的擴容,確保業務大幅增長時,儲存不能沒有成為系統的瓶頸

  3. 弱schema的特效能夠很好的應對業務資料頻繁變化的情況,也能夠方便支援一些特殊業務場景的資料邏輯

當然,除了上述原因,還有很多涉及底層的原理環節和實際的業務場景需求,這就要求我們對HBase有足夠的瞭解。

 

關聯文章:

深入探討HBASE

HBase高階特性、rowkey設計以及熱點問題處理

HBase中Memstore存在的意義以及多列族引起的問題和設計


 

關注微信公眾號:大資料學習與分享,獲取更對技術乾貨

相關文章