首页 > 其他分享 >hbase 备份及恢复

hbase 备份及恢复

时间:2023-09-21 10:04:31浏览次数:44  
标签:table1 恢复 备份 hadoop 集群 hbase HBase today


1, hbase自带的备份恢复工具
hbase org.apache.hadoop.hbase.mapreduce.Export 'table1' /home/fred/table1
hbase org.apache.hadoop.hbase.mapreduce.Import 'table1' /home/fred/table1
导入时必须先创建表结构。

http://www.iteye.com/topic/1114721

Java代码

import time  
import datetime  
from datetime import date  
import sys  
import os  
  
tablename=sys.argv[1]  
backupDst=sys.argv[2]  
today=date.today()  
if today.day == 15:    //every month, we do a full backup  
        backupSubFolder=backupDst+today.isoformat()+"-full"  
        cmd="hbase org.apache.hadoop.hbase.mapreduce.Export %s %s"%(tablename,backupSubFolder)  
else:  
  
        yesterday=datetime.date.today()- datetime.timedelta(days=1)  
        todayTimeStamp=time.mktime(today.timetuple())  
        yesTimeStamp=time.mktime(yesterday.timetuple())  
        backupSubFolder=backupDst+today.isoformat()  
        cmd="hbase org.apache.hadoop.hbase.mapreduce.Export %s %s %s"%(tablename,backupSubFolder,str(int(todayTimeStamp)*1000)  
  
print cmd  
  
os.system(cmd)




2, 把某个表(table1)从集群1迁移到集群2(两个集群互相看不见),步骤如下

  1、拷贝集群1的表文件到本地磁盘,拷贝之前要停掉集群1的hbase服务,否则会丢失数据

hadoop fs -copyToLocal /hbase/table1 /home/fred/hb_bak/table1


  2、对于文件操作,很简单吧,随便你怎么去拷贝来拷贝去

  3、如果集群2中也有对应的表文件,那么删除掉,然后拷贝 

hadoop fs -rmr /hbase/table1 

hadoop fs -copyFromLocal /home/fred/hb_bak/table1 /hbase/table1 

  4、到hbase的bin目录下,重置该表在.META.表中的分区信息

hbase org.jruby.Main add_table.rb /hbase/table1 

  5、重启hbase使表的重置信息生效,切忌强制停掉hbase服务,否侧损坏数据


另外:

  1、如果表的数据量过大呢? 那么按照该表在HDFS中的文件夹数据,分批拷贝。

  2、如果两个集群可以互相通信呢?那么更爽了,直接使用distcp对拷,是并行的。


3, HBase Backup Options

http://hbase.info/tag/distcp

如果你打算部署HBase,那么你一定要考虑如何备份的问题,下面是作者列举的他所知道的一些备份方式,如果有遗漏的,欢迎补充。

Export

HBase提供了export的MapReduce Job(org.apache.hadoop.hbase.mapreduce.Export)可以将表导出为HDFS的顺序文件(SequenceFile),这是由HBASE-1684贡献的工具。此工具一次只能操作一张表,导出的顺序文件可以通过Import工具导入HBase。

Copy Table

在两个HBase集群之间复制数据,也可以通过Copy Table工具,这也是MapReduce实现的,一次操作一张表。

Distcp

你也可以利用HDFS的Distcp工具将整个/hbase复制到另外一个HDFS集群,但如果这可能导致复制的数据不一致,所以尽量不要这么做,除非先将源集群停止服务,参考: http://search-hadoop.com/m/wkMgSjVLDb

Backup from Mozilla

由于Dictcp做集群复制存在数据不一致的问题,Mozilla的开发人员开发了一个Backup工具,具体情况请参考他们的这篇Migrating HBase in the Trenches。

Cluster Replication

HBase从0.89版本开始引入集群复制功能,所以我们也可以利用此功能将数据备份到另一个集群。复制的目标集群不需要和源集群同配置,因此可以将数据通过复制备份到一个较低成本的集群中。

Table Snapshot

在著名的HBase-50中就提出了Snapshot的问题,尽管在GSoC 2010期间做了大量的工作,但不知由于什么原因,一直没有合并进HBase的主流分支。Jira上已经有一个Patch,但已经较长时间无进展了。

HDFS Replication

HDFS中的数据是有多份拷贝的,你也可以把这多份的拷贝当作一种备份,它虽然不能防止数据损坏,但能容忍部分硬件故障。

标签:table1,恢复,备份,hadoop,集群,hbase,HBase,today
From: https://blog.51cto.com/u_16255870/7548685

相关文章

  • hbase-0.90.4的主要更新
    apache邮件列表中提到0.90.4己经准备release了,看了一下所有的patch,这个版本在性能改进上基本没有改进,主要是对很多异常下bug的修复,其中比较重要的bug有以下几个:1https://issues.apache.org/jira/browse/HBASE-3820----Splitlog()executedwhilethenamenodewasinsafemodem......
  • Hbase MapReduce例子
    HbaseMapreduce例子http://hadoop.apache.org/hbase/docs/current/api/org/apache/hadoop/hbase/mapreduce/package-summary.html#package_descriptionhttp://wiki.apache.org/hadoop/Hbase/MapReduce (Deprecated) 需要重启Hadoop的方式所有机器都有修改配置1:修改$HADOOP_HOME/......
  • HBase 之HFileOutputFormat
     hadoopmr输出需要导入hbase的话最好先输出成HFile格式,再导入到HBase,因为HFile是HBase的内部存储格式,所以导入效率很高,下面是一个示例1.创建HBase表t11.hbase(main):157:0*create't1','f1'2.0row(s)in1.3280seconds3.4.hbase(main):158:0>5.ROW......
  • hadoop,hbase,hive安装全记录
    操作系统:CentOS5.5Hadoop:hadoop-0.20.203.0jdk1.7.0_01namenode主机名:master,namenode的IP:10.10.102.15datanode主机名:slave1,datanode的IP:10.10.106.8datanode主机名:slave2,datanode的IP:10.10.106.9一、hadoop安装1、建立用户useraddhadooppasswdhadoop2.安装JDK*先查......
  • 把xls的数据导到Hbase
    这属于Hbase的一个例子,不过Hbase的例子有点问题,需要更改下。其实我感觉Hbase属于一个BigTable,感觉和xls真的很像,闲话不说了,上code才是王道。Java代码importjava.io.IOException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;i......
  • linux服务器异机备份
    1、安装crondyum-yinstallvixie-cronyum-yinstallcrontabs2、新建脚本文件,制定运行脚本vi/mnt/bak/backup135.sh备份脚本如下:#!/bin/bashsettimeout6000spawnrsync-e"ssh-p22"[email protected]:/home/backup/mnt/backupexpect{"passw......
  • MySQL备份与恢复
    MySQL备份与恢复备份的介绍数据库加载慢1服务器配置不够、2别的进程占用大部分资源;3语句累赘;4、遇到select语句查询速度慢,怎么办?先使用explain分析select查询语句,看key字段,确定select查询语句是否使用了索引或索引使用是否正确。然后再根据select查询语句使用......
  • PXC某个节点异常恢复
    PerconaXtraDBCluster是mysql的一种高可用架构,集群由多个节点组成,建议至少配置3个节点,其中每个节点都包含跨节点同步的相同数据集。以三节点为例,集群某个节点因硬件、网络、脑裂等原因,退出集群后,如果剩余两节点写集缓存(gcache.size)中仍然还有异常节点退出集群后执行的事务信息,......
  • MySQL 日志管理、备份与恢复
    MySQL日志管理、备份与恢复---MySQL日志管理---MySQL的日志默认保存位置为/usr/local/mysql/datavim/etc/my.cnf[mysqld]##错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启log-error=/usr/local/mysql/data/mysql_error.log#指定......
  • Hbase--执行hbase shell命令时提示:ERROR: KeeperErrorCode = NoNode for /hbase/mast
    1、问题描述执行hbase shell命令时提示:ERROR:KeeperErrorCode=NoNodefor/hbase/master2、问题原因这是与因为服务器重启后Hadoop的运行和Hbase的运行异常。3、解决办法依次去停止和启动Hadoop(1)到hadoop的sbin目录下 ./stop-all.sh(2)再./start-all.sh(3)再到hbase的b......