HBase表的备份
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表的备份的更多相关文章
- 浅谈hbase表中数据导出导入(也就是备份)
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=23916356&id=3321832 最近因为生产环境hbase ...
- HBase中的备份和故障恢复方法
本文将对Apache HBase可用的数据备份机制和大量数据的故障恢复/容灾机制做简要介绍. 随着HBase在重要的商业系统中应用的大量添加,很多企业须要通过对它们的HBase集群建立健壮的备份和故障 ...
- [How to]HBase集群备份方法--Replication机制
1.简介 HBase备份的方法在[How to]HBase集群备份方法文章中已经有些介绍,但是这些方法都不是HBase本身的特性在支持,都是通过MR计算框架结合HBase客户端的方式,或者直接拷贝HB ...
- [How to]HBase集群备份方法
1.简介 当HBase数据库中存在非常重要的业务数据的时候为了保护数据的可以对数据进行备份处理.对于HBase来说从备份操作来看可分为离线备份和在线备份. 2. 前准备 在测试环境上准备有哦两套HBa ...
- 使用Azcopy在Azure上进行HBase的冷热备份还原
场景 HBase表TaskLog中有20.55G数据(20553078551Byte),目前存放在热存储中,现在要移至冷热储,并进行还原. HBase目录:hbase/data/default 冷目录 ...
- 数据分页处理系列之二:HBase表数据分页处理
HBase是Hadoop大数据生态技术圈中的一项关键技术,是一种用于分布式存储大数据的列式数据库,关于HBase更加详细的介绍和技术细节,朋友们可以在网络上进行搜寻,笔者本人在接下来的日子里也会写 ...
- HBase(三): Azure HDInsigt HBase表数据导入本地HBase
目录: hdfs 命令操作本地 hbase Azure HDInsight HBase表数据导入本地 hbase hdfs命令操作本地hbase: 参见 HDP2.4安装(五):集群及组件安装 , ...
- Mapreduce读取Hbase表,写数据到多个Hbase表中
Job端的变化: 通过设置conf,配置输出表,在reduce中获取输出表名字 Configuration conf = job.getConfiguration(); //输出表1 conf.set ...
- 4 hbase表结构 + hbase集群架构及表存储机制
本博文的主要内容有 .hbase读取数据过程 .HBase表结构 .附带PPT http://hbase.apache.org/ 读写的时候,就需要用hbase了,换句话说,就是读写的时候. ...
随机推荐
- 【LINUX】SVN 代码提交之后。同步到web目录下
1 当你使用svn在成功提交一个新版本的时候,svn仓库目录下的hook文件夹下的post-commit脚本会运行 用shell写一个脚本,在提交完版本后,自动在web目录运行一下svn updat ...
- struts2基础---->自定义拦截器
这一章,我们开始struts2中拦截器的学习. 自定义拦截器
- Java可视化JVM监控软件
jdk自带.jdk安装目录下 1.JConsole 选择 不安全 可用不多 2.VisualVM
- serializeArray()与serialize()的区别
serialize()序列化表单元素为字符串,用于 Ajax 请求. serializeArray()序列化表单元素为JSON数据. <script type="text/javasc ...
- ELK平台介绍
在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自:http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应用程序日志和安全 ...
- BFS+优先队列+状态压缩DP+TSP
http://acm.hdu.edu.cn/showproblem.php?pid=4568 Hunter Time Limit: 2000/1000 MS (Java/Others) Memo ...
- javascript飞机大战-----008积分
/* 创建敌机: */ function Enemy(blood,speed,imgs,scroe){ //敌机left this.left = 0; //敌机top this.top = 0; // ...
- Centos设置SSH限制登录用户及IP
1,系统版本查看 2,编辑ssh配置文件 vim /etc/ssh/sshd_config 在尾部加一行 允许sysman用户从ip1.1.1.*登录 3,重启sshd即可 /etc/init.d/s ...
- 每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它
mybatis – MyBatis 3 | 入门 http://www.mybatis.org/mybatis-3/zh/getting-started.html 作用域(Scope)和生命周期 理解 ...
- MyBatis 的真正强大在于它的映射语句 如果有一个独立且完美的数据库映射模式,所有应用程序都可以使用它
mybatis – MyBatis 3 | Mapper XML 文件 http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html mybatis – My ...