【Hbase数据迁移】使用hbase org.apache.hadoop.hbase.mapreduce.Export 实现跨集群数据迁移

【Hbase数据迁移】使用hbase org.apache.hadoop.hbase.mapreduce.Export 实现跨集群数据迁移

描述

工作中,有时会碰到进行两个物理隔离的Hbase集群间数据迁移的需求,如果Hbase表足够大,那么走网络迁移路线无疑是很慢的,这种情况下走物理线路是最快选择,我们可以将生产库的表导成文本,再将这些文本移至目标库上,再执行导入命令即可。

数据导出

需要注意的是,该命令一定要在运行了Hbash节点实例的服务器上执行

#!/bin/bash
# 将table_a中的数据全量卸至hdfs中的/export/test目录下
# 当前bash环境的用户要有操作hdfs的权限,且/export/test不能存在,否则会因输出路径已存在而报错
hbase org.apache.hadoop.hbase.mapreduce.Export 'table_a' /export/test
# 将/export/test文件下的数据拉取到本地
hadoop dfs -get /export/test ./
# 删除hdfs上的/export/test路径
hadoop dfs -rm -r /export/test
# 将table_a中的数据打包
tar cvf test.tar.gz test/
# 删除本地的test目录
rm -rf test

效果:
在这里插入图片描述

数据导入

如果两个集群是物理+网段隔离的,那么我们需要借助跳板机这样的设备进行数据中转,将test.tar.gz移至目标库环境中,一样的,在执行导入命令的时候,我们需要保证bash环境处于Hbash节点实例的服务器中:

#!/bin/bash
# 解压数据
tar xvf test.tar.gz
# 删除hdfs上传路径
hadoop dfs -rm -r /export
# 上传数据至hdfs
hadoop dfs -put /test /export
#执行导入
hbase org.apache.hadoop.hbase.mapreduce.Driver import 'table_a' /export
# 删除本地文件
rm -rf test*

效果:
在这里插入图片描述

后记

这种迁移方法快的多,实际运用也比较方便,大家有什么问题可下方留言交流。

猜你喜欢

转载自blog.csdn.net/Jack_Roy/article/details/106565065
今日推荐