本文主要介绍如何在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 |