本文主要介紹HBase在數據壓縮與編碼中的實際應用。
壓縮算法
目前阿里云平臺支持壓縮算法有: LZO、ZSTD、GZ、LZ4、SNAPPY和NONE,其中NONE代表不開啟壓縮。不同壓縮算法在不同場景的壓縮比,及解壓速度對比如下,都是來自線上真實場景。
業務類型 | 無壓縮表大小 | LZO(壓縮率/解壓速度MB/s) | ZSTD(壓縮率/解壓速度MB/s) | LZ4(壓縮率/解壓速度MB/s) |
監控類 | 419.75T | 5.82/372 | 13.09/256 | 5.19/463.8 |
日志類 | 77.26T | 4.11/333 | 6.0/287 | 4.16/496.1 |
風控類 | 147.83T | 4.29/297.7 | 5.93/270 | 4.19/441.38 |
消費記錄 | 108.04T | 5.93/316.8 | 10.51/288.3 | 5.55/520.3 |
說明
對rt要求極高,建議使用lz4壓縮算法。
對rt要求不高,特別是監控、物聯網等場景,建議使用zstd壓縮算法。
編碼
HBase很早就支持了DataBlockEncoding,即通過減少HBase keyvalue中重復的部分來壓縮數據。我們推薦DATA_BLOCK_ENCODING使用diff。
操作步驟
修改表的屬性,此為壓縮編碼。
alter 'test', {NAME => 'f', COMPRESSION => 'lz4', DATA_BLOCK_ENCODING =>'DIFF'}
壓縮編碼并不會立即生效,需要major_compact,此會耗時較長,注意在業務低峰期進行。
major_compact 'test'
說明
壓縮編碼的參考文檔請參見阿里HBase數據壓縮編碼探索。
文檔內容是否對您有幫助?