一、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

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

438

被折叠的 条评论
为什么被折叠?



