github.com/aliyun/aliyun-apsaradb-... phpsdkdemo
雲資料庫HBase增強版,是由雲原生多模資料庫Lindorm的寬表引擎雲原生多模資料庫Lindorm的寬表引擎提供的、完全相容HBase的雲上託管資料庫
問題:正式上線後三天、log每天200G資料寫入到hbase後變成了2TB資料
排查路線:排查到日誌原始儲存大小和和hbase中記憶體大小差異過大、使用阿里雲shell工具檢視錶結構
表結構存在問題、遇到大資料量容易崩潰
沒有設定列簇的壓縮
沒有設定冷熱儲存
沒有設定資料過期時間自動刪除機制
列簇過多設計不合理
解決方案:
// 設定列簇的壓縮
disable ‘test_logs’
// 刪除列簇
alter ‘test_logs’,’delete’=>’test_info’
// 設定列簇的壓縮
alter ‘test_logs’ ,{NAME=>’test’,COMPRESSION=>’LZ4’,DATA_BLOCK_ENCODING => ‘DIFF’}
// 設定設定冷熱儲存、資料過期時間自動刪除機制
alter ‘test_logs’ , {NAME=>’test’, COLD_BOUNDARY=>’604800’,TTL=>2592000}
// 啟用table
enable ‘test_logs’
// 壓縮編碼並不會立即生效,需要major_compact,此會耗時較長,注意在業務低峰期進行。
major_compact ‘test_logs’
- 效果: hbase從1.5TB降到70G左右
- COMPRESSION 壓縮演算法方式、DATA_BLOCK_ENCODING 壓縮演算法
- 目前阿里雲平臺支援壓縮演算法有: LZO、ZSTD、GZ、LZ4、SNAPPY NONE,其中NONE就代表不開啟壓縮。不同壓縮演算法在不同場景的壓縮比,及解壓速度對比如下,都是來自線上真實場景。
- 阿里雲介面文件:help.aliyun.com/document_detail/59...
| 業務型別 | 無壓縮表大小 | 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 |
- COLD_BOUNDARY 資料在熱儲存的週期,之後存入冷儲存
- TTL 資料過期時間單位(秒)
- 存活時間
- 列簇可以設定TTL秒數,HBase在超時後將自動刪除資料,HBase裡面TTL時間時區是UTC。
儲存檔案僅包含有過期的行(expired rows),它們可通過minor compaction刪除。將hbase.store.delete.expired.storefile設定為false,可禁用此功能;將最小版本數設定成非0值也可達到同樣的效果。
HBase的最新版本還支援將設定的時間存放在每個結構單元。TTL單元通過Mutation#setTTL作為更變請求(Appends, Increments, Puts, etc.)的一個屬性提交,如果TTL的屬性被設定了,它將會應用到由於該變更操作更新的所有單元上。Cell TTL handling和ColumnFamily TTLs間有兩個顯著的差別:
Cell TTLs的數量級是毫秒而不是秒。
一個Cell TTL不能超出ColumnFamily TTLs設定的有效時間。
major_compact
合併檔案
清除刪除、過期、多餘版本的資料
提高讀寫資料的效率
資料什麼時候進冷存?
Lindorm通過compaction機制非同步得將冷資料從熱存中歸檔到冷存,觸發時間預設為冷熱分界的一半,最小為1天。比如您設定冷熱邊界是3天,那麼預設1.5天就會自動觸發一次compaction;如果設定冷熱邊界為1天,後臺會1天觸發一次compaction。
我可以手動強制觸發compaction嗎?
可以的,您可以通過HBase shell對錶執行 major_compact ‘tableName’ 命令來強制觸發major compaction,不僅把熱存中的冷資料歸檔到冷存中,同時也會合並所有冷區熱區的檔案。但請不要頻繁使用該命令,它會加重IO負載。
為什麼我的表冷資料歸檔的慢?
請檢查您的Lindorm版本,如果版本不大於2.1.20,可以升級到最新的版本,冷資料會根據 1中提到的週期進入冷存。如果您選擇暫緩升級,可以聯絡專家服務來幫您優化引數。
本作品採用《CC 協議》,轉載必須註明作者和本文連結