本文主要介紹如何在HBase中進行增量歸檔MaxCompute。
注意事項
增量匯出MaxCompute功能於2023年6月16日下線。2023年6月16日後購買的LTS將無法使用增量匯出MaxCompute功能,2023年6月16日前購買的LTS仍可正常使用此功能。
前提條件
-
已開通LTS。
-
已添加HBase資料來源。
-
已添加MaxCompute資料來源。
支援版本
-
自建HBase1.x、2.x。
-
EMR HBase。
-
標準版雲HBase、增強版雲HBase(叢集版本)、Lindorm。
限制
-
即時資料歸檔基於HBase的日誌,因此不能匯出bulkload的資料。
日誌生命週期
-
開啟歸檔後,如果不消費資料,預設日誌會保留48小時,逾時後訂閱關係自動取消,保留的資料自動刪除。
-
如果沒有停止同步任務直接釋放LTS執行個體,同步任務會暫停,同時不會消費資料。
提交歸檔任務
-
進入LTS操作頁面,在左側導覽列選擇Lindorm/HBase匯出 > 增量資料匯出MaxCompute。
-
單擊建立任務, 進入建立頁面,選擇對應的HBase源叢集和MaxCompute目的地組群, 指定需要匯出的HBase表。在建立任務頁面,根據需要填寫任務名(可不填),選擇源叢集和目的地組群,在表映射中配置列映射 JSON,其中
tableMode可設為wideTable(寬表模式)。提交前請確認源叢集日誌保留時間(hbase.master.logcleaner.ttl),防止日誌保留時間過短導致任務失敗。配置完成後單擊建立。以上配置對HBase表wal-test進行即時資料歸檔到MaxCompute-
歸檔的列包括cf1:a、cf1:b、cf1:c、cf1:d四列。
-
mergeInterval 表示的是歸檔的間隔(單位毫秒), 預設指定 86400000 (一天)。
-
mergeStartAt(格式為yyyyMMddHHmmss)表示從2019年9月30號0點整作為起始時間(可以指定一個過去的值) 。
-
-
查看錶歸檔進度。即時同步通道展示的是日誌同步的延遲、點位,Table Merge展現的是表Merge的任務,Merge完成即可在MaxCompute上查詢最新分區的表。提交歸檔任務後,進入歸檔任務詳情頁面,頁麵包含三部分資訊:建表詳情中任務狀態為 SUCCEEDED;即時同步通道狀態為 RUNNING,同步時延為 4520 ms,任務隊列顯示運行中(2)/隊列中(0);Table Merge 運行狀態為 RUNNING,任務進度為 47.50%。
-
登入MaxCompute查詢表資料。在 MaxCompute 中執行
SELECT * from hbase2odps.wal_test_xxx WHERE pt = 'xxxxxxxx'查詢歸檔資料,結果包含 rowkey、cf1_string、cf1_long、cf1_short、cf1_bigdecimal、cf1_double、cf1_float、cf1_boolean、cf1_null、pt 等列,驗證資料已成功從 HBase 歸檔至 MaxCompute。
參數說明
匯出表格式如下:
hbaseTable/odpsTable {"cols": ["cf1:a|string", "cf1:b|int", "cf1:c|long", "cf1:d|short","cf1:e|decimal", "cf1:f|double","cf1:g|float","cf1:h|boolean","cf1:i"], "mergeInterval": 86400000, "mergeStartAt": "20191008100547"}
hbaseTable/odpsTable {"cols": ["cf1:a", "cf1:b", "cf1:c"], "mergeStartAt": "20191008000000"}
hbaseTable {"mergeEnabled": false} // 不進行merge操作
匯出的表包含三部分:hbaseTable、odpsTable、tbConf。
-
hbaseTable:指定HBase表。
-
odpsTable:可選,指定目標表名。預設和HBase表名相同 ,ODPS表名中不支援半形句號(.)和短劃線(-)字元,統一轉化為底線(_)。
-
tbConf:指定表的歸檔行為,支援的參數如下表。
|
參數 |
說明 |
例子 |
|
cols |
指定需要匯出的列及列類型。預設轉化格式為HexString。 |
“cols”: [“cf1:a”, “cf1:b”, “cf1:c”] |
|
mergeEnabled |
是否需要進行KV錶轉化成寬表, 預設為true。 |
“mergeEnabled”: false |
|
mergeStartAt |
merge的起始時間,可以指定一個過去的時間,格式是yyyyMMddHHmmss。 |
“mergeStartAt”: “20191008000000” |
|
mergeInterval |
merge的時間間隔,單位毫秒,預設是一天,即按天歸檔。 |
“mergeInterval”: 86400000 |