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