摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用。

背景

在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移。大多数情况下,可以跟用户协商用离线的方式进行迁移,迁移离线数据的方式就比较容易了,将整个Hbase的data存储目录进行搬迁就行,但是当集群数据量比较多的时候,文件拷贝的时间很长,对客户的业务影响时间也比较长,往往在客户给的时间窗口无法完成,本文给出一种迁移思路,可以利用Hbase自身的功能,对集群进行迁移,减少集群业务中断时间。

简介

大家都知道Hbase有snapshot快照的功能,利用快照可以记录某个时间点表的数据将其保存快照,在需要的时候可以将表数据恢复到打快照时间时的样子。我们利用Hbase的snapshot可以导出某个时间点的全量数据。

因为用户的业务还在不停的写入表中,除了迁移快照时间点之前的全量数据,我们还需要将快照时间点后源源不断的增量数据也迁移走,这里如果能采用双写的方式,将数据写入两个集群就好了,但是用户的业务不会这样做,如果这样做还得保证双写的事务一致性。于是可以利用Hbase的replication功能,replication功能本身就是保留了源集群的WAL日志记录,去回放写入到目的集群,这样一来用户业务端->原始集群->目的集群便是个串形的数据流,且由Hbase来保证数据的正确性。

所以这个迁移的方法就是利用snapshot迁移全量数据,利用replication迁移增量数据。

迁移步骤

上图给出了迁移的整个时间线流程,主要有这么5个时间点。

T0: 配置好老集群A集群到新集群B的Replication关系,Replication的数据由A集群同步到集群B,将表设置成同步,从此刻开始新写入A集群表的数据会保留在WAL日志中;

T1: 生成该时间点的全量数据,通过创建快照,以及导出快照数据的方式将该时间点的数据导出到新集群B;

T2: 新集群B将T1时刻的快照数据导入,此时新集群B中会由快照创建出表,此时老集群A集群上设置的Replication的关系会自动开始将T0时刻保留的WAL日志回放至新集群B的表中,开始增量数据同步。

T3: 由于从T0-T3之间的操作会花费一段时间,此时会积累很多WAL日志文件,需要一定的时间来同步至新集群,这里需要去监控一下数据同步情况,等老集群WAL被逐渐消费完,此时可以将老集群的写业务停止一下并准备将读写业务全部切到新集群B。

T4: T3-T4之间应该是个很短的时间,整个迁移也只有这个时间点会有一定中断,此时是让用户将业务完全切到新集群B,至此迁移完成。

操作涉及的命令

1.设置集群A和集群B的peer关系

在源集群Hbase shell中, 设定peer

add_peer 'peer_name','ClusterB:2181:/Hbase'

2.在集群A的表中设置replication属性

假设目标表名为Student,先获取Family=f

进入Hbase shell中,

alter 'Student',{NAME => 'f',REPLICATION_SCOPE => '1'}

3.给集群A的表创建快照

在Hbase shell中

snapshot 'Student','Student_table_snapshot'

4.在A集群中导出快照

Hbase org.apache.hadoop.Hbase.snapshot.ExportSnapshot -snapshot Student_table_snapshot -copy-to /snapshot-backup/Student

5.将快照数据放置到集群B的对应的目录下

上面命令会导出2个目录,一个是快照元数据,一个是原始数据

将元数据放到/Hbase/.Hbase-snapshot中,将原始数据放到/Hbase/archive目录中

由于Hbase的archive目录会有个定时清理,这里可以提前将集群B的master的Hbase.master.cleaner.interval值设置大点,避免拷贝过程中发生碰巧发生了数据清理。

如果集群B中没有对应的目录,可以提前创建

hdfs dfs -mkdir -p /Hbase/.Hbase-snapshot

hdfs dfs -mkdir -p /Hbase/archive/data/default/

移动导出的snapshot文件到snapshot目录

hdfs dfs -mv /snapshot-backup/Student/.Hbase-snapshot/Student_table_snapshot /Hbase/.Hbase-snapshot/

hdfs dfs -mv /snapshot-backup/Student/archive/data/default/Student /Hbase/archive/data/default/

6.在新集群B中恢复表的快照

进入Hbase shell

restore_snapshot 'Student_table_snapshot'

恢复完成后,记得将集群B的hmaster中Hbase.master.cleaner.interval的值调整回来。

参考文档:

https://blog.csdn.net/qq475781638/article/details/95253603

https://support.huaweicloud.com/usermanual-mrs/mrs_01_0501.html

点击关注,第一时间了解华为云新鲜技术~

java从hbase增量导出到,Hbase实用技巧:全量+增量数据的迁移方法相关推荐

  1. mysql 增量备份脚本_MySQL自动化(全量+增量)备份脚本

    一.MySQL的日常备份方案: 全备+增量备份: 1.周日凌晨三点进行全备: 2.周一到周日增量备份. 不是往常的周日全备份,周一到周六增量备份,这样如果周日数据库在完全备份前出问题,恢复完成后,会少 ...

  2. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  3. Hbase实用技巧:全量+增量数据的迁移方法

    摘要:本文介绍了一种Hbase迁移的方法,可以在一些特定场景下运用. 背景 在Hbase使用过程中,使用的Hbase集群经常会因为某些原因需要数据迁移.大多数情况下,可以跟用户协商用离线的方式进行迁移 ...

  4. mysqldump备份(全量+增量)

    在日常运维工作中,对mysql数据库的备份是万分重要的,以防在数据库表丢失或损坏情况出现,可以及时恢复数据. 线上数据库备份场景: 每周日执行一次全量备份,然后每天下午1点执行MySQLdump增量备 ...

  5. mongodb监听oplog 全量+增量同步

    一.前言 前一个项目中,涉及到了一次数据迁移,这次迁移需要从mongodb迁移到另一个mongodb实例上,两个源的数据结构是不一样的.涉及到增量和全量数据迁移,整体迁移数据量在5亿左右.本篇即讲理论 ...

  6. 一个脚本实现全量增量备份,并推送到远端备份中心服务器

    2019独角兽企业重金招聘Python工程师标准>>> 摘要 由于工作需要,刚好需要这样一个功能的脚本,主要解决: 1. 不想在crontab中调度两条备份任务,一个做全量一个做增量 ...

  7. iphone计算机输入文字,10个鲜为人知的iPhone实用技巧 全知道的算我输!

    原标题:10个鲜为人知的iPhone实用技巧 全知道的算我输! 点评:想玩转iPhone前,你需要知道这些隐藏的神技能. 今天小编要分享的这10个超实用的iPhone技巧,我敢说全知道的人,绝对不超过 ...

  8. mysqldump全量恢复_【MySQL】全量+增量的备份/恢复

    生产环境中,有时需要做MySQL的备份和恢复工作.因MySQL是在运行过程中的,做全量备份需要时间,全量备份完成后又有数据变动,此时需要增量备份辅助.如果想恢复数据到一个空库(例如数据迁移或者上云等更 ...

  9. “全量增量” 与 “增量同步” 一文了解清楚【建议收藏】

    大家在同步数据的时候都会接触到2个名词,"全量增量" 与 "增量同步" ,名字都长得差不多,但是意思和操作却不一样:比如部门领导给你方案,那我们要如何去选择其中 ...

最新文章

  1. Spring官宣新家族成员:Spring Authorization Server!
  2. mac安装mysql8.0.11_【MySQL】Mac安装MySQL(V8.0.15)蹚坑记录
  3. mysql联合查询sql优化
  4. Scala的四种Web框架
  5. 数据eda_关于分类和有序数据的EDA
  6. 让你的单细胞数据动起来!|iCellR(二)
  7. php ucword,ThinkPHP3.1.2整合UCenter详解(二)
  8. linux创建根目录代码,Linux文件系统之目录的建立
  9. 解决Error: could not open ‘……\jre7\lib\i386\jvm.cfg‘问题
  10. 小新air15为啥没人买_联想小新air15怎么样?身边的人用的好像比较少?
  11. C++动态数组的创建
  12. 【用EXCEL编写俄罗斯方块小游戏(基于VBA)】
  13. 当股份制银行核心数据遇到国产数据库
  14. zblog php 二级菜单,zblog博客系统二级(下拉)导航菜单设置教程
  15. Ubuntu更换阿里软件安装源(vim方式)
  16. 【STM32学习笔记】(7)——STM32时钟系统详解
  17. 零代码技能平台技术实践探索
  18. 【HDU6608 Fansblog】求很大很大的数的阶乘
  19. Linux语言和字体的自定义设置
  20. SpringCloud-Netfilx

热门文章

  1. [Leetcode] Path Sum II路径和
  2. 安装webpack命令环境
  3. 数据降维之多维缩放MDS(Multiple Dimensional Scaling)
  4. 文件上传的几个 - 示例
  5. 团队第二次冲刺第一天
  6. 2nbsp;时间管理和内存管理
  7. 鼠标经过(hover)事件的延时处理
  8. C++按位异或运算符
  9. [转载] 第一个Python CGI编程和配置
  10. UWP 自然灾害App在刷新数据后卡死的解决方案