Hbase 备份方案

1、Hbase中的备份策略有哪些,各有什么特点?        
hbase中的数据备份策略有两种:关闭集群进行全备份;在线对集群进行备份。
1、进行关机备份时,必须全部关闭Hbase集群,或者disable所有表,然后通过distcp命令将Hbase目录下的内容复制到另外或者同一个集群的不同目录就可以了。
2、在线备份,可以通过CopyTable 命令将被内容复制到另一张表中;或者导出为Hdfs文件,再将文件导入到Hbase中;
     优缺点:
进行全备份的好处是可以保持数据的完整性,但是需要关闭集群;在线备份不需要关闭集群,但是会存在数据丢失的风险。

2、如何进行操作?

distcp关机全备份
1、在新备份集群下建立一个文件夹,用来保存需要备份的数据:
$HADOOP_HOME/bin/hadoop fs -mkdir /backup
2、在旧集群执行:
$HADOOP_HOME/bin/hadoop distcp hdfs://maste:9000/hbase(hbase-site.xml文件中hbase.rootdir的属性值)  hdfs://backup:9000/backup
执行命令以后hadoop会启动一个MapReduce任务,可以在50030页面进行查看;
3、在新集群执行:
$HADOOP_HOME/bin/hadoop fs -ls /backup
会发现backup目录下有一个hbase目录
4、如果需要恢复数据的话,直接在新集群执行:
$HADOOP_HOME/bin/hadoop distcp hdfs://backup:9000/backup/hbase  hdfs://maste:9000/
就可以了。
CopyTable备份
使用CopyTable可以将一张表的数据备份到另外一张表,也可以备份到另一集群的其他表中,使用CopyTable进行备份需要注意:

CopyTable不支持多版本。
1、在新备份集群创建一张表,该表需要与备份表相同的结构:
create 'newtable','a','b'

2、使用命令进行全表备份:
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --new.name=newtable --peer.adr=zookeeperhbase.zookeeper.quorum:2181:/hbase oldtable
也可以只备份指定的某个列簇,下面的命令表示备份oldtable表中的列簇a到newtable表中
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable --families=a --new.name=newtable --peer.adr=zookeeperhbase.zookeeper.quorum:2181:/hbase oldtable

备份为Hdfs文件,支持数据多版本
1、使用Export命令将表数据写为文件
$HBASE+HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.Export oldtable /backup
查看备份文件会发现backup文件夹下有三个文件(_SUCCESS、_logs、part-m-00000):
hadoop fs -ls  /backup
2、使用Import命令导入存储文件,恢复Hbase数据
$HBASE+HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.Import newtable /backup
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值