Hbase跨集群迁移

本文介绍了四种HBase跨集群迁移方式,包括copyTable、distcp、snapshot(快照+replication)和export/import,重点讲解了如何在不停服情况下使用snapshot和replication进行数据迁移,以及各自的优缺点和操作步骤。

一、Hbase跨集群迁移方式## 标题
Hbase跨集群迁移的方式:copyTable、distcp、export/import、snapshot。
备注:新集群Hbase 版本cdh 2.1.0。

1、copyTable方式集群间迁移(HBase层数据迁移)

copyTable也是属于HBase数据迁移的工具之一,以表级别进行数据迁移。copyTable的本质也是利用MapReduce进行同步的,与DistCp不同的时,它是利用MR去scan 原表的数据,然后把scan出来的数据写入到目标集群的表。这种方式也有很多局限,如一个表数据量达到T级,同时又在读写的情况下,全量scan表无疑会对集群性能造成影响。

#1、ssh登录服务器  (切换到hbase用户)
源集群节点:  (hbase用户)
目标集群节点:(hbase 用户)

#2、在目标集群上创建同名同结构的表
源集群执行  desc  tablename  ,结果去除特殊字符后,在目标集群hbase shell 命令行执行
create 'table',{
   
   name =>}

#3、确保待迁移的表无读写
#hbase  shell   执行   
flush  'table_name' 
hbase org.apache.hadoop.hbase.mapreduce.CopyTable \
-Dhbase.client.scanner.caching=5000 -Dmapreduce.local.map.tasks.maximum=30 \
-Dmapred.map.tasks.speculative.execution=false -Dbandwidth=200 \
--peer.adr=zkip:2181:/hbase  \
--new.name='table_new' table_name
#.增量备份:增量备份表数据,参数中支持timeRange,指定要备份的时间范围,使用方式如下
hbase org.apache.hadoop.hbase.mapreduce.CopyTable ... --starttime=start_timestamp --endtime=end_timestamp

#4、对比原集群与目标集群表数据量
count  'table_name'

2、Distcp 方式集群间迁移(Hadoop层数据迁移)
两个步骤:
(1)拷贝底层表hdfs数据
(2)使用hbck工具恢复表数据

#1、数据刷盘
> flush  'test_hbase2_permiss_move'
#2、distcp 离线拷贝,放在目标集群hbase的/tmp或者临时目录
sudo -u hbase hadoop distcp -bandwidth 2 -m 100  -skipcrccheck -update hdfs://ip:8020/hbase-2/data/default/test_hbase2_permiss_move hdfs://ip:8020/hbase/data/default/test_hbase2_permiss_move

备注:
distcp 拷贝时可根据配置文件过滤掉不需要的目录,如过滤空表
过滤空表  节点 /home/hadoop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值