本文主要介紹如何在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表。在 Lindorm/HBase增量歸檔MaxCompute 頁面,填寫以下配置項:任務名(可不填)、源叢集、目的地組群、表映射(可單擊參數說明查看詳情,其中
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;Table Merge顯示合并任務運行狀態為 RUNNING,任務進度為 47.50%。
-
登入MaxCompute查詢表資料。Merge 完成後,在 MaxCompute 中執行
SELECT * FROM wal_test WHERE pt = 'xxxxxx'查詢歸檔資料,返回結果包含 rowkey、cf1_string、cf1_long、cf1_boolean、cf1_short、cf1_bigdecimal、cf1_double、cf1_float、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}}:指定表的歸檔行為。 {{tbConf}}支援的參數如下表:
|
參數 |
說明 |
例子 |
|
cols |
指定需要匯出的列及列類型。預設轉化格式為HexString。 |
“cols”: [“cf1:a”, “cf1:b”, “cf1:c”] |
|
mergeEnabled |
是否需要進行KV錶轉化成寬表, 預設為true。 |
“mergeEnabled”: false |
|
mergeStartAt |
merge的起始時間,可以指定一個過去的時間,格式是yyyyMMddHHmmss。 |
“mergeStartAt”: “20191008000000” |
|
mergeInterval |
merge的時間間隔,單位毫秒,預設是一天,即按天歸檔。 |
“mergeInterval”: 86400000 |