在使用hbase时,为了防止数据的丢失,必须对数据进行备份;
Hbase数据数据备份按状态来备份的话有两种形式:离线备份和在线备份
现在我们采用在线备份中的一种:
(1)首先进入$HBASE_HOME目录,比如我们HBASE_HOME目录是/usr/local/hbase
执行命令 cd /usr/local/hbase
(2)执行命令 bin/hbase org.apache.hadoop.hbase.mapreduce.Export image1 hfds://ns1/data/imageCopy
命令解析: org.apache.hadoop.hbase.mapreduce.Export 引用该类来执行数据的导出
image 要备份hbase里的表
hfds://ns1/data/imageCopy 表示存储到hadoop文件存储系统的/data/imageCopy
ns1 这是由于hadoop采用了热备,所以ns1关联hadoop的两个namenode节点,
如果配置的是单节点namenode,则这个值应该是具体的主机名或者ip地址
(3)当hbase的数据丢失的时候,可以把在hadoop里的备份重新导入hbase,
备份数据拷贝到hbase的时候,hbase表的名字可以不相同,但是表的结构必须相同,比如我备份的数据的表的格式是 只有一个列族data
1)先执行以下命令进入hbase操作
/usr/local/hbase/bin/hbase shell
[root@yitian1 ~]# /usr/local/hbase/bin/hbase shell
2016-03-22 15:30:53,409 INFO [main] Configuration.deprecation: hadoop.native.lib is deprecated. Instead, use io.native.lib.available
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.96.2-hadoop2, r1581096, Mon Mar 24 16:03:18 PDT 2014
2)执行以下命令创建一个hbase表
create 'imageCopy' , 'data'
命令解析:'imageCopy' 表示要创建的表名
'data' 表示要创建的表的列族名字
(4)把数据导入hbase的imageCopy表
退出hbase shell环境
执行命令 quit
导入数据执行以下命令
/usr/local/hbase/bin/hbase org.apache.hadoop.hbase.mapreduce.Import imageCopy hdfs://ns1/data/image1
命令解析:
imageCopy表示要把数据导入的表
hdfs://ns1/data/image1 表示hadoop存储的数据源
以下是成功执行数据导入的部分信息:
(5)进入hbase的shell,通过执行scan 'imageCopy'命令来查看是否成功导入数据