美文网首页
HBase之数据迁移

HBase之数据迁移

作者: MrSocean | 来源:发表于2019-03-29 15:31 被阅读0次

由于公司前期没法及时提供生成环境的服务器,导致现有的业务开发在现有的服务器进行,HBase相关的数据在后期需要迁移到新的环境里。HBase数据迁移方式有以下几种:

CopyTable方式☞

hbase org.apache.hadoop.hbase.mapreduce.CopyTable [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] tablename

操作:

  • starttime 执行时间范围的开始时间,未指定endtime则为读取starttime之后的所有数据
  • endtime 执行时间范围的结束时间,未指定starttime则为第一条数据入库的时间到endtime之间的所有数据
  • new.name 用于copytable时指定你要拷贝后的新表名称
  • peer.adr 指定集群zookeeper地址
  • tablename 为要复制的表明
案例:将old_table表中的数据迁移到new_table表中
./hbase org.apache.hadoop.hbase.mapreduce.CopyTable --peer.adr=gs-yy-slave1,gs-yy-slave2,gs-yy-slave3:2181:/hbase --new.name=new_table old_table

Export/Import 方式☞

格式:
  • bin/hbase org.apache.hadoop.hbase.mapreduce.Export testtable /user/testtable [versions] [starttime] [stoptime]
  • bin/hbase org.apache.hadoop.hbase.mapreduce.Import testtable /user/testtable
步骤:
①在old cluster上执行:
./hbase org.apache.hadoop.hbase.mapreduce.Export test hdfs://new cluster ip:9000/zhuangyang/test
②在new cluster上执行:
./hbase org.apache.hadoop.hbase.mapreduce.Import test hdfs://new cluster ip:9000/zhuangyang/test

说明:

①一定要写全路径,不能写相对路劲;

②在import前,需要将表事先在new cluster中创建好.

③以上都是在old cluster和new cluster网络相通的情况下实现数据迁移的办法

快照方式☞

生成快照:
hbase> snapshot 'myTable','myTableSnapshot-20170727'
列出当前所有得快照:
hbase> list_snapshots
删除快照信息:
hbase> delete_snapshot'myTableSnapshot-20170727'
基于快照,clone一个新表:
hbase> clone_snapshot'myTableSnapshot-20170727', 'myNewTestTable'
基于快照恢复表:
hbase> disable 'myTable'
hbase> restore_snapshot'myTableSnapshot-20170727'
导出到另外一个集群中:
 $bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot myTableSnapshot-20170727 -copy-to hdfs:///srv2:8082/hbase -mappers 16  

案例☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞☞

 hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot user_data_snapshot -copy-to hdfs://192.168.1.45/hbase/ -mappers 8

直接拷贝hdfs对应的文件☞

首先拷贝hdfs文件
bin/hadoop distcp hdfs://192.168.1.45/hbase/testtable/ hdfs://192.168.1.45/hbase/testtable/
然后在目的hbase上执行
bin/hbase org.jruby.Main bin/add_table.rb /hbase/testtable
生成meta信息后,重启hbase

这个操作是简单的方式,操作之前可以关闭hbase的写入,执行flush所有表(上面有介绍),再distcp拷贝。

案例☞

create 'user_data',{NAME => 'info', VERSIONS => 2}
Export/Import
hbase org.apache.hadoop.hbase.mapreduce.Export user_data hdfs://192.168.1.45/user/gaoht/user_data

hbase org.apache.hadoop.hbase.mapreduce.Import user_data hdfs://192.168.1.45/user/gaoht/user_data
snapshot快照方式
bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot user_data_snapshot -copy-to hdfs:///srv2:8082/hbase -mappers 8
操作:
hbase> snapshot 'myTable','user_data_snapshot'
列出当前所有得快照:
hbase> list_snapshots
删除快照信息:
hbase> delete_snapshot'user_data_snapshot'
基于快照,clone一个新表:
hbase> clone_snapshot'user_data_snapshot', 'myNewTestTable'
基于快照恢复表,它需要先禁用表,再进行恢复:
hbase> disable 'myTable'
hbase> restore_snapshot'user_data_snapshot'
案例:将表创建一个快照 然后将快照copy到新集群相应的位置进行恢复这个表数据
snapshot 'user_data', 'user_data_snapshot'

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot user_data_snapshot -copy-to hdfs://new_cluster/hbase/ -mappers 8

相关文章1☞
相关文章2☞
相关文章3☞
相关文章4☞


>>记录学习过程,文章中如有错误或不妥之处,请留言!<<

相关文章

网友评论

      本文标题:HBase之数据迁移

      本文链接:https://www.haomeiwen.com/subject/ulglbqtx.html