Hbase数据迁移方案实践

be115be0f125bc010c33a047111297f6be8.jpg

hbase数据在集群之间迁移的三种方案如上图所示

其中hbase原生工具支持在hbase层面和hdfs层面的hbase表数据迁移

1.在hdfs层面

distcp是直接迁移hbase表在hdfs上底层的文件路径下的文件

hadoop distcp hdfs://sourceIP:8020/data/hbase/data/default/dqjc_credit_daily hdfs://targetIP:8020/hbase/data/default/

测试可以迁移数据,但是迁移之后hbase中scan不到数据,不管是否在目标集群已经建立了表结构

2.在hbase层面

copyTable以表级别进行数据迁移。本质也是利用MapReduce进行同步的,与DistCp不同的时,它是利用MR去scan 原表的数据,然后把scan出来的数据写入到目标集群的表。时间参数不指定会很慢,并且成功之后scan不到数据;

hbase org.apache.hadoop.hbase.mapreduce.CopyTable --starttime=1265875194289 --endtime=1265878794289 --peer.adr=zkHost1,zkHost2,zkHost3:2181:/hbase tableName

export/import主要是将HBase表数据转换成Sequence File并dump到HDFS,也涉及Scan表数据,与CopyTable相比,还多支持不同版本数据的拷贝,同时它拷贝时不是将HBase数据直接Put到目标集群表,而是先转换成文件,把文件同步到目标集群后再通过Import到线上表。原始工具中测试唯一可用的工具,且速率可接受,可使用代码产生脚本来执行,来简化繁琐手工操作,唯一能想到的缺点是如果代码报错的话不知道有啥好的方式处理。

hbase org.apache.hadoop.hbase.mapreduce.Export tableName hdfs://ip:8020/import/hbase/data/tableName
hbase org.apache.hadoop.hbase.mapreduce.Import tableName /import/hbase/data/tableName

3.Datax方式

使用datax的方式来实现hbase-hbase数据的直接迁移,也是通过reader插件将scan出来的数据在writer插件中put目标表中

采用方案是hbase11xreader~habse11xwriter

只支持源端为横表写入,不支持竖表(源端读出的为四元组: rowKey,family:qualifier,timestamp,value)模式的数据写入;

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仔仔1993

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值