文章作者:易明
个人博客:https://yiming1012.github.io
简书主页:https://www.jianshu.com/u/6ebea55f5cec
邮箱地址:1129079384@qq.com
背景
最近需要将本地HBase集群(Hadoop2.7.2+HBase1.2.4
)数据迁移到阿里云集群(Hadoop2.7.7+HBase1.4.10
)上,而两个集群之间是不能相互通信的。通过查阅资料,使用HBase自带的Export/Import
实现,这种方法不是直接将原表数据拷贝到目标集群上,而是先利用Export将HBase表数据转换成文件存入HDFS上,然后将HDFS上的文件get下来,将文件拷贝到目标集群上,通过put上传至HDFS,再利用Import导入到对应的HBase表。以上过程需要MapReduce的支持,所以需要启动yarn
。
Export/Import介绍
1、Export阶段
Export阶段的功能是将HBase表的数据以文件的形式存储到HDFS。 命令如下,t_history
为HBase上的表名,/t_history_bak
为HDFS上的目录。
hbase org.apache.hadoop.hbase.mapreduce.Export t_history /t_history_bak
2、get阶段
此过程是将上一步HDFS上的数据下载到本地。
hadoop fs -get /t_history_bak /home/yiming/t_history_bak/
3、put阶段
源HBase下载到服务器上的数据通过ftp或Winscp拷贝到目标服务器,即阿里云集群。通过put命令将数据存储到HDFS根目录。t_history_bak
是本地服务器的数据目录,/
为HDFS根目录。
hadoop fs -put t_history_bak/ /
4、Import阶段
Import阶段是将HDFS上的数据导入到HBase对应的表。前提是目标HBase集群已存在这张表,而且Import数据到HBase表的过程是append(累加)而不是overwrite(覆盖)。
hbase org.apache.hadoop.hbase.mapreduce.Import t_history /t_history_bak
至此,本次数据迁移完成。