利用HBase Export/Import跨集群数据迁移

文章作者:易明
个人博客: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

至此,本次数据迁移完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。