全部产品
云市场

HBase实时数据归档ODPS

更新时间:2019-10-14 10:33:38

前提条件

  1. 购买BDS数据迁移同步服务,配置BDS操作页面账户密码,并登陆BDS操作页面
  2. 打通BDS和HBase迁移集群的网络
  3. 添加HBase集群数据源
  4. 添加ODPS数据源

版本

  1. 自建HBase1.x、2.x
  2. EMR HBase
  3. 标准版云HBase、增强版云HBase(集群版本)

限制

实时数据归档基于HBase的日志,因此不能导出bulkload的数据

归档原理

1

  1. 提交归档任务,包括HBase集群信息、ODPS连接信息、需要归档的表、归档的时间粒度
  2. BDS会在ODPS表对应的project上创建{{project}}.bdsArchive的临时表(临时表表名可以指定),并上传UDF到ODPS指定的Project下
  3. BDSMaster构建任务并下发任务给BDSWorker
  4. BDSWorker读取日志,每隔5分钟或者数据达到64MB将日志数据归档到ODPS的临时表{{project}}.bdsArchive中
  5. BDSMaster检查归档任务的点位同步的点位,触发ODPS表merge的任务,将{{project}}.bdsArchive中对应区间的数据进行行转列,最后将新数据写入到{{project}}.{{targetTable}}的对应分区中

其中临时表{{project}}.bdsArchive表结构如图所示,table字段表示HBase的表名,rowkey就是表的rowkey,version就是HBase中KV的版本(默认是KV入库的时间戳), family 表示的是HBase表的列族, qualifier 表示HBase表的列, val 表示KV的值, op表示KV的操作类型。每一行代表一个HBase中的一个KV。其中rowkey和val默认转化成HexString的格式

提交归档任务

  1. 进入BDS操作页面,点击任务管理->HBase实时数据导出ODPS1
  2. 点击创建同步任务, 进入任务创建页面,选择对应的HBase源集群和ODPS目标集群, 指定需要导出的HBase表1如图所示,对HBase表wal-test-301333235进行实时数据归档到ODPS,归档的列包括cf1:a、cf1:b、cf1:c、cf1:d四列。mergeInterval 表示的是归档的间隔(单位毫秒), 默认指定 86400000 (一天), mergeStartAt(格式为yyyyMMddHHmmss)表示从2019年9月30号0点整作为起始时间(可以指定一个过去的值)
  3. 查看表归档进度1实时同步通道展示的是日志同步的延迟、点位,Table Merge 展现的是表Merge的任务,Merge完成即可在ODPS上查询最新分区的表
  4. ODPS查询表数据1

参数说明

导出表格式如下:

  1. 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"}
  2. hbaseTable/odpsTable {"cols": ["cf1:a", "cf1:b", "cf1:c"], "mergeStartAt": "20191008000000"}
  3. 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