【hbase】使用HDFS底层文件来进行hbase 跨集群数据迁移

 


前言:


最近要跨集群迁移hbase 表,这里选择迁移Hadoop底层数据来实现hbase的表迁移。

迁移Hadoop底层文件的方式有两种:

  • distcp
  • 从旧集群get 获取文件到本地在 put到新集群上。

因为,我们这个A集群是kerberos 环境,B集群是不带kerberos环境,这里使用Distcp的方式,需要添加一个白名单的配置,并且也需要重启集群,这里就不采用distcp的方式了,使用 get/put的方式。这里仅是为了迁移底层数据,所以选择那种方式都可以。

环境信息:


  • CDH版本 :5.13
  • Hbase版本 :1.2

这里 我们将迁移 tj_idcard_all_new_h 作为实践。

实施:


这里有两个关键的步骤:

  1. 拷贝底层表hdfs数据
  2. 使用hbck工具恢复表数据

1. 下载数据

这一步骤,先将hbase 表的数据从旧集群下载到本地

hbase 表的默认HDFS路径通常为 /hbase/data/<name_space>/<table_name>

hadoop fs -get /hbase/data/default/tj_idcard_all_new_h/ /tmp/tj_idcard_all_new_h

这里大家要写迁移表的实际的hdfs路径。

2. 上传数据

这一步骤,先将从旧集群下载到本地的文件上传到新集群

hadoop fs -put /tmp/tj_idcard_all_new_h /tmp/hbase/tj_idcard_all_new_h/

再将文件移动到Hbase的目录下

hdfs dfs -mv /tmp/tj_idcard_all_new_h /tmp/hbase/tj_idcard_all_new_h/ /hbase/data/default

3. 修复.META.表

sudo -u hbase hbase hbck -fixMeta

4. 重新分配到各分区服务器

sudo -u hbase hbase hbck -fixAssignments

5. 进入hbase

sudo -u hbase hbase shell

6. 查看是否成功

scan "库名:表名",{LIMIT => 10}

总结:

  1. 最好将全部的文件都put到新集群后在修复元数据
  2. 新集群不需要提前创建同名表
  3. .tabledesc.tmp 也需要发送到新集群上,别忘记了

问题:


问题1:在.META.表没修复时执行重新分配,会报错

报错内容:

#hbase hbck -fixAssignment ... ERROR: Region { meta => null, hdfs => hdfs://h185:54310/hbase/toplist_ware_total_1009_201232/0403552001eb2a31990e443dcae74ee8, deployed => } on HDFS, but not listed in META or deployed on any region server ...

解决方案:

先修复 -fixMeta 再-fixAssignment

参考

  • https://blog.csdn.net/weixin_43320617/article/details/119926516?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link
  • https://blog.csdn.net/u011250186/article/details/105998886

__EOF__

本文作者彬在俊
本文链接https://www.cnblogs.com/erlou96/p/16878210.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   彬在俊  阅读(299)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示