hbase export 使用小技巧

来源:互联网 发布:dedecms改cms不变 编辑:程序博客网 时间:2024/05/20 15:10

在工作中经常使用hbase的export功能来导出数据,在此总结几种小技巧:

建议导出的数据先放到hdfs上,再从hdfs上拿下来

之前经常使用如下命令进行数据备份:
hbase org.apache.hadoop.hbase.mapreduce.Export backup_table file:///opt/backup_table 
使用单机版做此操作是没有问题的,但是当使用多机版的hbase的时候,如果你的系统中有多个mapreduce的tasktracker。那么数据会被导出到多台机器(每个tasktracker)的local目录。
所以在使用export 命令在进行导出操作时,建议现将数据导出到hdfs中,然后再将数据从hdfs中获取下来:
# 默认不写file://的时候就是导出到hdfs上了hbase org.apache.hadoop.hbase.mapreduce.Export backup_table /tmp/backup_table hadoop dfs -get /tmp/backup_table /opt/backup_table

导出时可以限制scanner.batch的大小

如果在hbase中的一个row出现大量的数据,那么导出时会报出ScannerTimeoutException的错误。
这时候需要设置hbase.export.scaaner.batch 这个参数。这样导出时的错误就可以避免了。
hbase org.apache.hadoop.hbase.mapreduce.Export -Dhbase.export.scanner.batch=2000 backup_table /tmp/backup_table 

为了节省空间可以使用compress选项

hbase的数据导出的时候,如果不适用compress的选项,数据量的大小可能相差5倍。因此使用compress的选项,备份数据的时候是可以节省不少空间的。
并且本人测试了compress选项的导出速度,和无此选项时差别不大(几乎无差别):
hbase org.apache.hadoop.hbase.mapreduce.Export -Dhbase.export.scanner.batch=2000 -D mapred.output.compress=true backup_table /tmp/backup_table 


0 0