全部产品

数据导入Serverless实例

更新时间:2020-05-25 15:58:58

我有大量数据从HBase集群导入Serverless

由于Serverless实例的写入受到购买CU数的限制,如果大量的数据直接通过API写入Serverless实例可能会花费过多时间和消耗过多CU(根据购买CU量的多少,几十GB,几百GB,或者上TB的数据可以定义为大量数据)。因此需要使用BDS服务来将这些数据通过bulkload的方式导入Serverless实例。使用此方法导入暂时不受购买CU限速

使用注意事项

  • 仅支持HBase1.x以上版本数据导入(包括自建HBase和云HBase)
  • Serverless实例空间不足会导致数据导入中断。原始集群的表大小是压缩后的大小,而Serverless实例空间计费是按照KV原始大小计算,请注意预留足够空间,关于空间计费请参考计费章节

操作步骤

  1. 购买BDS实例,购买指南参见开通BDS。由于数据导入需要OSS做为中转,购买过程中请勾选购买冷存储,并选择合适的空间大小。如果数据导入是临时行为,可以采用按量付费的方式,在数据导入完成后可以立刻释放BDS实例,节省费用。注意购买的BDS实例必须和源HBase集群(数据导出的集群)在同一个VPC内,否则需要做网络打通bds_version如果您在之前已经购买过BDS,则注意BDS版本需要升级到2.5.4或者以上版本,如果您的BDS不在此版本以上,请重新购买或者联系云HBase答疑钉钉号和提工单升级
  2. 将源HBase集群信息关联到BDS中:
    如果源HBase集群是云HBase集群,可以直接在BDS的控制台页面点击添加,如果是自建HBase集群,需要手工添加数据源,操作步骤见HBase数据源
  3. 在BDS WebUI中给源集群中需要导入的表创建备份(将数据导入Serverless的原理是将源表进行备份,再将备份数据bulkload到Serverless集群)

    进入BDS系统UI入口BDSControl

    创建备份恢复计划,勾选需要备份的表(即需要导出的表)backplan-1backup-plan2进行数据备份ex-back-1备份完成后可以获取备份计划ID,备份记录IDex-back2

  4. 将备份的数据导入Serverless集群
    在Serverless实例的控制台界面将SrcBDSInstanceID(即BDS ID,在BDS控制台界面获得),BackplanID(即刚才备份计划ID),BackupRecordID(即刚才获得的备份记录ID),需要恢复的表(需要恢复的表用namespace:tablename 格式填入, 如果有多个用换行符隔开)填入界面。info备份计划ID,备份记录ID 可以在前面的BDS系统UI中获取recover-3点击创建进行恢复。(无需事先在Serverless实例中建表,系统会根据源表属性进行自动建表recover2

我有少量数据从HBase/MySQL(RDS)导入Serverless集群

如果导入的数据量较少,或者有RDS/HBase数据需要实时同步到Serverless集群,可以采用此种方式。此种方式采用HBase API将数据写入Serverless集群,会受到购买的CU数量限制。比如购买了100CU,则意味着每秒只能写入100CU的数据,计费指南请参见计费章节

准备工作

  1. 购买BDS集群,参见购买指南参见开通BDS,此种导入方式无需购买冷存储,可以采用按量付费的方式,在数据导入完成后可以立刻释放BDS实例,节省费用。注意购买的BDS实例必须和Serverless实例在同一个VPC内,否则需要做网络打通。 如果您在之前已经购买过BDS,则注意BDS版本需要升级到2.5.4或者以上版本,如果您的BDS不在此版本以上,请重新购买或者联系云HBase答疑钉钉号和提工单升级
  2. 在BDS中添加Serverless数据源。123填入连接地址,即Serverless实例的访问地址(注:如果购买的BDS没有和Serverless实例在同一个VPC,需要填入公网访问地址),访问使用的AK信息,如果没有AK的用户参见获取Serverless HBase用户名和密码。填入限制CU数,即购买的CU数,BDS会根据此CU数对导入进行限速,如果没有限速,导入过程中遇到多次QuotaExceedException导致导入失败。您也可以填入一定比例的CU来保证正常应用的读写,比如购买100CU,只给导入任务50CU,另外50CU留给正常应用读写。
  3. 在BDS中添加导出数据的实例,如HBase,RDS的数据源,添加HBase的数据源见HBase数据源,如果是RDS,MySQL数据采用类似的方式在BDS中添加

从其他HBase集群全量导入

参见BDS说明文档全量数据迁移

从其他HBase集群实时同步

参见BDS说明文档增量数据同步

从MySQL/RDS全量数据导入

参见BDS说明文档RDS全量导入

从MySQL/RDS增量实时同步

从RDS增量导入需要购买DTS服务器,详情参见BDS说明文档RDS增量导入

我有数据需要从其他系统导入Serverless集群

如果您有数据在其他异构系统中,如MongoDB,ElasticSearch,TableStore等,或者您不想购买BDS实例,可以采用DataX的方式导入。DataX支持的数据源参见DataX官方文档

准备工作

目前DataX开源代码和阿里云DataWorks中集成的DataX版本还不支持HBase Serverless(相应的兼容代码已经提交,等待版本发布,如果有进展我们会在文档说明),需要下载已经集成HBase Serverless插件的DataX版,点击此处下载

使用方法

在DataX中写入HBase Serverless的所用插件为hbase11xwriter,此插件的具体配置可参见hbase11xwriter的帮助文档。这里给出一个示例配置:

  1. {
  2. "job": {
  3. "content": [
  4. {
  5. "reader": {
  6. "name": "hbase11xreader",
  7. "parameter": {
  8. "encoding": "utf-8",
  9. "hbaseConfig": {
  10. "hbase.client.connection.impl" : "com.alibaba.hbase.client.AliHBaseUEConnection",
  11. "hbase.zookeeper.quorum" : "ld-xxxx-proxy-hbaseue-pub.hbaseue.rds.aliyuncs.com:30020",
  12. "hbase.client.username" : "xxx",
  13. "hbase.client.password" : "xxx"
  14. },
  15. "mode": "normal",
  16. "column": [
  17. {
  18. "name": "rowkey",
  19. "type": "string"
  20. },
  21. {
  22. "name": "f:f0",
  23. "type": "string"
  24. }
  25. ],
  26. "range": {
  27. "endRowkey": "",
  28. "isBinaryRowkey": true,
  29. "startRowkey": ""
  30. },
  31. "table": "table1"
  32. }
  33. },
  34. "writer": {
  35. "name": "hbase11xwriter",
  36. "parameter": {
  37. "column": [
  38. {
  39. "index":1,
  40. "name": "f:f0",
  41. "type": "string"
  42. }
  43. ],
  44. "encoding": "utf-8",
  45. "writeBufferSize" : 1048576,
  46. "hbaseConfig": {
  47. "hbase.client.connection.impl" : "com.alibaba.hbase.client.AliHBaseUEConnection",
  48. "hbase.zookeeper.quorum" : "https://sh-xxxx-hbase-serverless.hbase.rds.aliyuncs.com:443",
  49. "hbase.client.username" : "AK名",
  50. "hbase.client.password" : "Ak密码",
  51. "hbase.client.cu.limit" : "5"
  52. },
  53. "mode": "normal",
  54. "rowkeyColumn": [
  55. {
  56. "index":0,
  57. "name": "rowkey",
  58. "type": "string"
  59. }
  60. ],
  61. "table": "table1",
  62. "versionColumn": {
  63. "index": "-1",
  64. "value": "123456789"
  65. }
  66. }
  67. }
  68. }
  69. ],
  70. "setting": {
  71. "speed": {
  72. "channel": "1"
  73. }
  74. }
  75. }
  76. }

上述json文件是从HBase增强版中将table1这张表的数据全量导入到Serverless的一个示例配置。用户主要需要关注Writer部分的这几个配置:

配置名 说明
hbase.client.connection.impl 固定为com.alibaba.hbase.client.AliHBaseUEConnection
hbase.zookeeper.quorum 填写Serverless示例的连接地址,注意VPC网络和外网地址,地址以https://开头
hbase.client.username AK名,详见获取Serverless HBase用户名和密码
hbase.client.password AK密码,详见获取Serverless HBase用户名和密码
hbase.client.cu.limit 限制的CU数量,可根据购买数量设置。注意由于DataX每个线程都会起一个HBase客户端,而CU的限制是客户端级别的,所以这个值需要和channel 设置配合。比如想要限制写入不超过100CU,但开了5个线程,则hbase.client.cu.limit 要设置为20
writeBufferSize 写入时每个batch的大小,由于Serverless限制了每个batch的大小,这里设置不要超过1048576 (1MB)
channel 线程并发数

如果有任何疑问,请钉钉咨询云HBase答疑或者提工单