HBase 增量备份
来源:互联网 发布:全国信鸽成绩查询软件 编辑:程序博客网 时间:2024/06/03 15:20
一、概述
使用了HBase提供的Export与Import工具。
Export:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/Export.html
Import:http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapreduce/Import.html
看到这两个类所在目录我们了解到,Export与Import的实质是MapReduce任务。
关于这两个工具API中写的很清楚:
Export an HBase table. Writes content to sequence files up in HDFS. Use Import to read it back in again.
将HBase的表导出为HDFS的sequence files。
Export如其名,只是导出工具,如何完成备份功能呢?
二、功能实验
测试过程涉及很多数据,这里仅提供重要结论:
1、Export是以表为单位导出数据的,若想完成整库的备份需要执行n遍。
2、Export在shell中的调用方式类似如下格式:
./hbase org.apache.hadoop.hbase.mapreduce.Export 表名 备份路径 (版本号) (起始时间戳) (结束时间戳)
Export [-D <property = value>]* <tableName> <outputDir> [<versions> [<startTime> [<endTime>]]]
括号内为可选项,例如
./hbase org.apache.hadoop.hbase.mapreduce.Export 'contentTbl' /home/codeevoship/contentBackup20120920 1 123456789
备份contentTbl这张表到/home/codeevoship/contentBackup20120920目录下(最后一级目录必须由Export自己创建),版本号为1,备份记录从123456789这个时间戳开始到当前时间内所有的执行过put操作的记录。
注意:为什么是所有put操作记录?因为在备份时是扫描所有表中所有时间戳大于等于123456789这个值的记录并导出。如果是delete操作,则表中这条记录已经删除,扫描时也无法获取这条记录信息。
3、当不指定时间戳时,备份的就是当前完整表中的数据。
三、实施细节
1、如何在增量备份时体现出对数据的删除操作?
由于Export按时间戳备份只能反映出Put过的表项,若我在一个备份(增量包)时间区间内删除了某条已有记录,当数据库回档时,这条被删除的记录又会出现在我的表中。
因此,我将所有的删除操作替换为Put操作:
a、给每行数据添加了一个无效标志位,在删除记录时使用Put给该标志位写为1。
b、在单条查询时,根据rowKey取出记录后会根据这个标志位判断这条记录是否已被“删除”,以此决定是否返回这条记录。在多条查询时(scan),使用列值过滤器,过滤出所有这个标志位不为1的记录。(可参见我之前的博文《HBase 条件查询》)
2、在备份过程中新增的数据是否会影响备份内容的准确性?
可以指定小于等于当前时刻的结束时间戳,以便将需要备份的数据范围明确。
3、如何备份到其他机器?
a、Export支持提供地址的备份。最简单的方法,直接把远端存储挂载到本地,然后使用本地路径。
b、使用API调用时,Path如果使用file:///home/codeevoship/backup,代表使用本地文件系统。若直接写为/home/codeevoship 代表使用HDFS层的路径。在使用Shell调用时则相反。
4、如何使用API调用?
通过MapReduce的Job:http://hadoop.apache.org/docs/r0.20.2/api/org/apache/hadoop/mapreduce/Job.html
先通过Export类提供的方法创建Job实例,再调用Job的submit()或
waitForCompletion(boolean verbose);异步与同步。
四、其他解决方案
1、HDFS层的HDFS Replication或DistCp
2、Cluster Replication
文章来源:http://blog.csdn.net/pirateleo/article/details/8010743
- HBase 增量备份
- HBase 增量备份
- hbase定期备份,增量和完全备份
- HBase 增量备份和还原工具
- HBase 增量备份和还原工具
- 增量备份
- 增量备份
- 增量备份
- 差异增量备份和累积增量备份
- 全备份、增量备份、差异备份和永久增量备份
- 全备份、增量备份、差异备份和永久增量备份
- 全备份、增量备份、差异备份和永久增量备份
- oracle定时备份-增量备份
- 完全备份和增量备份
- oracle定时备份-增量备份
- 增量备份、差异备份区别
- innobackupex 备份 Xtrabackup 增量备份
- mysqldump备份(mysql增量备份)
- Python用什eclipse工具开发
- Google maps javascript api v3 叠加层(Overlays)介绍
- linux下安装svn客户端,ant等工具
- Windows下安装Ulipad编辑器
- SIZEOF()计算结构体的问题;
- HBase 增量备份
- servlet中使用spring
- Eclipse设置软tab(用4个空格字符代替)及默认utf-8文件编码(unix)
- 矩阵常用的出题方式
- linux系统基本命令整理篇
- QT入门之控件颜色面板类QPalette
- HBase 定期备份
- 常用Python第三方库 简介
- Javascript 异步加载详解