本文摘自:https://www.dazhuanlan.com/2019/10/20/5dac43ffeb75a/

由于HBase CDH4和CDH5数据格式不兼容,所以不能用“CopyTable”之类的方法来进行数据迁移。取而代之的方法有两个:

export

在CDH4集群上,将制定表的数据导出为sequence file到指定目录,基本命令如下:

hbase org.apache.hadoop.hbase.mapreduce.Export [options] <tablename> <export_directory>

tablename: 需要导出的表名
export_directory: 数据导出到的hdfs目录
options:可以指定参数用于精细化的控制,格式为[-D <property=value>]*,例如

指定导出的sequence file压缩格式:
-D mapreduce.output.fileoutputformat.compress=true
-D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec
-D mapreduce.output.fileoutputformat.compress.type=BLOCK控制导出的内容:
-D hbase.mapreduce.scan.column.family=<familyName>
-D hbase.mapreduce.include.deleted.rows=true
-D hbase.mapreduce.scan.row.start=<ROWSTART>
-D hbase.mapreduce.scan.row.stop=<ROWSTOP>控制导出性能:
-D hbase.client.scanner.caching=100
-D mapreduce.map.speculative=false
-D mapreduce.reduce.speculative=false对于大宽表,建议设置batch size:
-D hbase.export.scanner.batch=10

distcp

将CDH4集群导出到export_directory目录中的sequence file拷贝到CDH5集群,这里用到hadoop的distcp命令,用于在不同hadoop集群间拷贝文件

hadoop distcp -p -update -skipcrccheck hftp://cdh4-namenode:port/export_directory hdfs://cdh5-namenode/import_directory

注意distcp命令一定要在目标集群(CDH5)上执行

distcp会在文件拷贝完成后比较源文件和目标文件的checksum,由于CDH4和CDH5的默认checksum算法不一致,CDH4使用CRC32,CDH5使用CRC,因此任务有可能会失败,这里指定-skipcrccheck可以忽略这一步骤,或者通过-Ddfs.checksum.type=CRC32来指定checksum算法

import

在import之前,需要先在CDH5集群建表,column family必须和CDH4的表保持一致

然后将distcp过来的sequence file导入HBase表中,命令如下

hbase -Dhbase.import.version=0.94 org.apache.hadoop.hbase.mapreduce.Import <tablename> <import_directory>

hbase.import.version指定源集群(CDH4)的HBase版本

拷贝HFile

另一种方案是直接将HFile从CDH4拷贝到CDH5的hdfs文件系统里,然后升级HFile

distcp

hadoop distcp -p -update -skipcrccheck webhdfs://cdh4-namenode:http-port/hbase hdfs://cdh5-namenode:rpc-port/hbase

upgrade

启动CDH5集群,HBase会自动检测并升级HFile

总结:

总体来讲第一种方案耗时更长,因为需要进行三次mapreduce,但更建议用第一种方案,import/export的机制拥有更高的灵活性,你可以定时增量的迁移数据。除非数据量太大导致export和import耗费太长时间才考虑第二种方案。


之前说到第二种方案做upgrade时需要重启集群,实际上有办法避免,方法如下

拷贝.tableinfo.0000000001文件

hadoop fs -mkdir -p /hbase/data/default/<tablename>/.tabledesc
hadoop fs -mv /hbase/data/default/<tablename>/.tableinfo.0000000001 /hbase/data/default/<tablename>/.tabledesc

注:这一步是因为CDH4的.tableinfo.0000000001文件在根目录下,CDH5的在.tabledesc下

修复meta

hbase hbck -fixMeta

重新分配rs

hbase hbck -fixAssignments

HBase不同版本集群之间数据迁移相关推荐

  1. hbase集群之间数据迁移_hbase数据迁移到另一集群上

    通常我们都会有将hbase表数据迁到另一个hbase表中业务需要,这种不要着急,我选择一种最适合的方式,因为每种方式处理的数据量.对集群的压力都是有差异的 总的划分可以分为命令行和API两种方式,本人 ...

  2. hbase集群 数据写入_HBase神器 | BDSHBase集群之间数据迁移同步的利器

    BDS定位 BDS针对开源HBase目前存在的同步迁移痛点,自主研发的一套数据迁移的平台,用于HBase集群的无缝迁移.主备容灾.异地多活.在线离线业务分离.HBase数据归档.对接RDS实时增量数据 ...

  3. hbase集群之间数据迁移_HBase不同集群间数据迁移

    前提 两个集群相同vpc和安全组 操作步骤 一.查看源端集群HDFS NameNode IP和port 1. 查看NameNode IP,获取对应的name转换成IP hdfs getconf -na ...

  4. hbase集群间数据迁移

    2019独角兽企业重金招聘Python工程师标准>>> HBase迁移数据方案一(集群互联) 一.需要在hbase集群停掉的情况下迁移 步骤: (1)执行Hadoop distcp ...

  5. hadoop 集群间数据迁移

    hadoop集群之间有时候需要将数据进行迁移,如将一些保存的过期文档放置在一个小集群中进行保存. 使用的是社区提供的功能,distcp.用法非常简单: hadoop distcp hdfs://nn1 ...

  6. redis 3.0 集群__数据迁移和伸缩容

    添加节点 1,启动2个新的redis-sever, 参照 ( redis 3.0 集群____安装 ),端口号为 7007 和 7008 2,使用命令 redis-trib.rb add-node 命 ...

  7. 集群之间数据拷贝distcp性能的调优

    百PB级数据拷贝distcp性能调优 背景 配合集群迁移,需要迁移3PB数据 拷贝方式 全量数据约3PB,全量拷贝一次,耗时近两个星期(业务每日高峰期需要停止拷贝作业) 这里主要测试每天的增量同步速度 ...

  8. 【MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记】

    MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-1 - likingzi - 博客园 MySQL5.7版本单节点大数据量迁移到PXC8.0版本集群全记录-2 - likingzi ...

  9. 【大数据之Hadoop】三十一、HDFS集群迁移之Apache和Apache集群间数据拷贝

    数据迁移场景:   冷热集群数据分类存储:集群数据整体迁移:数据的准实时同步,目的在于数据的双备份可用. 数据迁移需要考虑的因素:   带宽.性能.增量同步(原始数据文件进行了追加写.被删除或重命名) ...

最新文章

  1. python udp_如何用python方法检测UDP端口
  2. linux字符设备led驱动源码,字符设备驱动控制LED灯
  3. RocketMQ介绍与云服务器安装
  4. SwipeRefreshLayout里面需要注意的Api
  5. 深度优先搜索——单词接龙(洛谷 P1019)
  6. NHibernate初学者指南(18):验证单个属性
  7. 基于大数据的图书推荐系统
  8. 拆解查看unity游戏资源
  9. vue3图片对比组件
  10. 离散数学 —— 二元关系(恒等关系、关系图与关系矩阵、复合关系、自反与反自反、对称与反对称、传递性、闭包、等价类、商集、集合的划分、序关系、哈斯图、上下界函数)
  11. 做事的态度与工作态度
  12. 各种RAID磁盘阵列组实际容量计算方法
  13. 货拉拉数据治理平台建设实践
  14. 初识C语言之函数封装篇——带你嗅探万花从中的清香(上)
  15. TP框架增删改查需要掉ajax么6,TP6框架--EasyAdmin学习笔记:实现数据库增删查改
  16. C4D快速入门教程——挤压
  17. linux vim操作提示:“Can't open file for writing”或“operation not permitted”的解决办法
  18. Markdown 文字颜色代码卡 (自用超好看)
  19. AD20怎样生成PCB?
  20. Cirium报告显示:航空客运量过去21年的增长在2020年消失殆尽

热门文章

  1. java魂斗罗_java 魂斗罗
  2. mysql 命令记录_mysql命令记录 - 我要五个字的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. oracle怎么设置能使用别的账户存储过程的全向_教你怎么重装100%纯净的Win10系统,告别蓝屏,卡顿。...
  4. Python学习笔记--函数
  5. Java8 IdentityHashMap 源码分析
  6. JavaScript实现阶乘递归factorialRecursive算法(附完整源码)
  7. wxWidgets:wxScopedArray< T >类模板的用法
  8. boost::math::students_t用法的测试程序
  9. boost::make_maximal_planar用法的测试程序
  10. boost::gil::detail::homogeneous_color_base用法的测试程序