HBase表备份其实就是先将Table导出,再导入两个过程。

导出过程

//hbase org.apache.hadoop.hbase.mapreduce.Driver export 表名 数据文件位置
//数据文件位置:可以是本地文件目录,也可以是hdfs路径
//当其为前者时,必须加上前缀file://
//当其为后者时,可以直接指定 "/root/test/users",也可以写路径 "hdfs://hadoop01:9000/root/test/users"
//另外,该接口类还提供了一些其它的方法。例如表与表之间的数据拷贝,导入tsv文件(一种数据间以制表符分割的文件)等
//如果"/root/test/users/" 目录已存在则会报错。【表名不用添加引号】

[root@ncst conf]# hbase org.apache.hadoop.hbase.mapreduce.Driver export users file:///root/test/users

注意:这是一个没有reduce的MR过程,从产生的结果文件"/root/test/users/part-m-00000" 可以看出。

导入过程
//hbase org.apache.hadoop.hbase.mapreduce.Driver import 表名 数据文件位置
//数据文件位置:可为本地文件目录,也可以为hdfs的路径。
//当其为前者时,必须加上前缀file://
//当其为后者时,可以直接指定 "/root/test/users",也可以写路径 "hdfs://hadoop01:9000/root/test/users"
//新的表必须存在,否则报错
//如果导出的数据很多,导入的时候千万不要把所有的part-m-0000*文件都放到一个目录下开始导入,肯定会失败的!
//应该将part-m-0000*文件一个个开始导入。

[root@ncst conf]# hbase org.apache.hadoop.hbase.mapreduce.Driver import bak file:///root/test/users

hbase集群间数据迁移方法总结

一、需要在hbase集群停掉的情况下迁移
步骤:
(1)执行hadoop distcp -f filelist "hdfs://new cluster ip:9000/hbasetest"
(2)在new cluster执行./hbase org.jruby.main add_table.rb /hbase/table20111222,将拷贝来的表加入到.meat.中(会出现region的数目不一致的问题,这个需要重启hase才能解决)
说明:(1)filelist为hdfs上的列表文件,内容如下:
/hbase/table20111222
/hbase/table20120131
(2)如果两个集群的hadoop版本不一致,需要在new cluster上执行hadoop distcp,否则会出现读写异常;
二、在集群运行的时候进行数据迁移
1、replication:这个是动态的备份(可以理解为实时备份)
步骤:(1)在old cluster将需要迁移的表属性进行修改:
disable 'your_table'
alter 'your_table', {name => 'family_name', replication_scope => '1'}
enable 'your_table'
(2)打开new cluster集群的replication,修改hbase-site.xml
<property>
<name>hbase.replication</name>
<value>true</value>
</property>
(3)添加peer,在new cluster的hbase shell中执行:add_peer '1','old cluster ip:2181:/hbase',启动replication,执行start_replication
说明:需要两个集群的hadoop版本一致,否则出现读写错误

2、copytable:可以在本集群中拷贝一张表,也可以将表拷贝到其他的集群中。

$ bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable [--starttime=X] [--endtime=Y] [--new.name=NEW] [--peer.adr=ADR] tablename 
//Demo例子
$ bin/hbase org.apache.hadoop.hbase.mapreduce.CopyTable
--starttime=1265875194289 --endtime=1265878794289
--peer.adr=server1,server2,server3:2181:/hbase TestTable 

命令:./hbase org.apache.hadoop.hbase.mapreduce.copytable --peer.adr=new cluster ip:2181:/hbase zy_test
说明:拷贝完成,不需要重启机器,在new cluster中就可以看到该表;
3、export and import
步骤:(1)在old cluster上执行:./hbase org.apache.hadoop.hbase.mapreduce.export test hdfs://new cluster ip:9000/zhuangyang/test
(2)在new cluster上执行:./hbase org.apache.hadoop.hbase.mapreduce.import test hdfs://new cluster ip:9000/zhuangyang/test
说明:(1)一定要写全路径,不能写相对路劲;
(2)在import前,需要将表事先在new cluster中创建好.

以上都是在old cluster和new cluster网络相通的情况下实现数据迁移的办法。
如果两个集群网络不通,只能先将old cluster中的数据都下载到本地或者其他的地方,然后在人工的转移到new cluster上了

导入tsv文件到hbase
1、将文件放到hdfs

hadoop fs -put ./hly.tsv /user/amy/input/

2、使用如下命令导入tsv

直接导入方式:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,info:age,info:sex T_Name /user/amy/input/

bulk load方式:

hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.bulk.output=/user/hadoop/data  -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY,info:age,info:sex T_Name /user/amy/input/
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /user/hadoop/data/T_Name T_Name 

HBase表的备份的更多相关文章

  1. 浅谈hbase表中数据导出导入(也就是备份)

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23916356&id=3321832 最近因为生产环境hbase ...

  2. HBase中的备份和故障恢复方法

    本文将对Apache HBase可用的数据备份机制和大量数据的故障恢复/容灾机制做简要介绍. 随着HBase在重要的商业系统中应用的大量添加,很多企业须要通过对它们的HBase集群建立健壮的备份和故障 ...

  3. [How to]HBase集群备份方法--Replication机制

    1.简介 HBase备份的方法在[How to]HBase集群备份方法文章中已经有些介绍,但是这些方法都不是HBase本身的特性在支持,都是通过MR计算框架结合HBase客户端的方式,或者直接拷贝HB ...

  4. [How to]HBase集群备份方法

    1.简介 当HBase数据库中存在非常重要的业务数据的时候为了保护数据的可以对数据进行备份处理.对于HBase来说从备份操作来看可分为离线备份和在线备份. 2. 前准备 在测试环境上准备有哦两套HBa ...

  5. 使用Azcopy在Azure上进行HBase的冷热备份还原

    场景 HBase表TaskLog中有20.55G数据(20553078551Byte),目前存放在热存储中,现在要移至冷热储,并进行还原. HBase目录:hbase/data/default 冷目录 ...

  6. 数据分页处理系列之二:HBase表数据分页处理

      HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...

  7. HBase(三): Azure HDInsigt HBase表数据导入本地HBase

    目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见  HDP2.4安装(五):集群及组件安装 , ...

  8. Mapreduce读取Hbase表,写数据到多个Hbase表中

    Job端的变化: 通过设置conf,配置输出表,在reduce中获取输出表名字 Configuration conf = job.getConfiguration(); //输出表1 conf.set ...

  9. 4 hbase表结构 + hbase集群架构及表存储机制

      本博文的主要内容有    .hbase读取数据过程 .HBase表结构 .附带PPT http://hbase.apache.org/ 读写的时候,就需要用hbase了,换句话说,就是读写的时候. ...

随机推荐

  1. UVa 130 - Roman Roulette

    模拟约瑟夫环  Roman Roulette  The historian Flavius Josephus relates how, in the Romano-Jewish conflict  o ...

  2. UVa 673 Parentheses Balance (stack)

    题目描述 : 判断字符串是不是符合正确的表达式形式. 要点 : 考虑字符串为空的时候,用getline输入,每一次判断后如果为No则要清空栈.对称思想. 注意输入格式. 代码: #include &l ...

  3. Android ImageResizer:inSampleSize

    import android.annotation.TargetApi; import android.content.Context; import android.content.res.Reso ...

  4. 在RES.web.Html5VersionController废弃后,如何做版本管理

    在之前的版本,可以通过重写Html5VersionController, 在游戏一次更新后,增加v版本号,来达到修改每次加载的png.mp3.json等文件的url不同,来解决缓存的问题. 这样的好处 ...

  5. {sharepoint}It may have been deleted or renamed by another user

    Symptom Consider the following scenario: We In the xslt: <xsl:param name="CustomItem"&g ...

  6. java中的socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  7. 查看Oracle的redo日志切换频率

    1.Oracle log 每次切换会记录到告警日志中 设想写个方案来查看log切换频率来判断Oracle log是否应该更改大小. 2.sql a.查看redo日志信息 select * from v ...

  8. OneThink视图模型进行组合查询!文档组合文档详情

    测试方法:twoCate: public function twoCate(){ $where = array( 'category_id'=>43 ); $list = D('TwoView' ...

  9. java利用poi 把ppt转化为图片,

    导入jar包: poi-3.8.jar poi-ooxml-3.9.jar poi-scratchpad-3.8.jar 代码: package test4; import java.awt.Dime ...

  10. oracle日常函数汇总(转载)

    第一篇 著名函数之单值函数 注:N表示数字型,C表示字符型,D表示日期型,[]表示内中参数可被忽略,fmt表示格式 数值类型函数 数值型函数输入数字型参数并返回数值型的值.多数该类函数的返回值支持38 ...