前提:两套集群是同一个网段的
方式1:通过快照方式进行数据迁移(不需要提前建表)
1):首先现在老集群A上进行快照制作(hbase命令行)

hbase> snapshot '要快照的表名tableA' , '快照名称snapA'

查看快照:list_snapshots
删除快照:delete_snapshot ‘快照名称snapA’
2):开始快照迁移(将集群A的快照迁移到集群B上)

bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 快照名称snapA -copy-to hdfs://newCluster:8082/hbase

3):登录新集群的hbase命令行,然后执行

restore_snapshot 'snapA'

方式2:在老集群A上通过bulkload写入新集群B上(需要提前建表,别忘记预分区)
1):在新集群B 提前将表创建好,例如:

create 'renter_info',{NAME =>'MM', COMPRESSION => 'SNAPPY'}, SPLITS => ['19999999', '33333332', '4ccccccb', '66666664' , '7ffffffd' , '99999996' , 'b333332f' , 'ccccccc8' , 'e6666661']

2):在老集群A 执行bulkload命令语句:

bin/hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dcreate.table=no -DHbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=2014 hdfs://newCluster:8020/hbase/data/default/order_info

方式3:hadoop distcp 方式
1):通过hadoop distcp将集群A中要迁移的表数据 通过分布式copy方式,copy到集群B

hadoop distcp hdfs://oldcluster:8020/hbase/data/default/order_info  hdfs://newCluster:8020/hbase/data/default/order_info

2):修复元数据

/opt/cloudera/parcels/CDH/lib/hbase/bin/hbase hbck -fixMeta

3):重启Hbase

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐