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/" 目录已存在则会报错。【表名不用添加引号】
[[email protected] 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*文件一个个开始导入。
[[email protected] conf]# hbase org.apache.hadoop.hbase.mapreduce.Driver import bak file:///root/test/users
时间: 2024-11-08 18:56:34