­

Hive數據導入HBase引起數據膨脹引發的思考

最近朋友公司在做一些數據的遷移,主要是將一些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存在的意義以及多列族引起的問題和設計


 

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