查阅了一下资料,查到了HBase自带的export/import机制可以实现Backup Restore功能。而且可以实现增量备份。
原理都是用了MapReduce来实现的。
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,需要查看表中数据总数的时候,需要遍历整个表。好慢啊。我这表中有10亿数据。要用多久啊。。有没有什么快速的获取
数据总数的方法?
2,我不知道某个表的时间戳范围,怎么获取这个范围呢?在hbase shell中,以及java api中怎么获取呢?
|