摘要:本文介绍了一种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的值调整回来。

参考文档:

hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法相关推荐

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

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

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

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

  3. 331全量增量数据、同步ld

    -- 数据同步 1 全量数据同步 1.1 不带参数的实现方式 每次更新目标表的时候,先把目标表中的数据清空,然后用源表的数据插入目标表中 . 1.2 通过参数 ,会计期(一个会计期 = 1个月 ,格式 ...

  4. Elasticsearch和MySQL数据同步(logstash-input-jdbc)全量增量方式同步近千万数据

    同步方案: 同步读写:最为简单的方式在将数据写到mysql时,同时将数据写到ES,实现数据的双写. 异步双写(MQ方式):MQ的性能基本比mysql高出一个数量级,所以性能可以得到显著的提高. 定时器 ...

  5. 全量增量数据同步方法(Hive date_add date_sub)

    全量数据与增量数据同步 1.不关心主键: a.第一次直接全量同步: insert overwrite table target select * from source b.第二次以后采用增量同步:表 ...

  6. 中国裁判文书全量明细数据

    数据名称:中国裁判文书全量明细数据 样本范围:全国裁判文书,15项指标 样本数量:85,057,901(8500万) 数据年份:1985.1~2021.10 数据变量:原始链接.案号.案件名称.法院所 ...

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

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

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

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

  9. hbase集群 数据写入_一种构建HBase集群全文索引方法,数据读取方法以及数据写入方法与流程...

    本发明涉及HBase集群领域,尤其涉及一种构建HBase集群全文索引方法,数据读取方法以及数据写入方法. 背景技术: 随着云计算技术的不断发展,云计算技术不断落地成为支撑各行业信息技术发展的重要支柱. ...

最新文章

  1. 程序员面试题精选100题(62)-C/C++/C#面试题(5)
  2. opentesty--luasocket 安装
  3. Codeforces 993A. Two Squares(暴力求解)
  4. Flink专题-Source
  5. Java中Semaphore(信号量) 数据库连接池
  6. 数据库系统概论王珊编写的第三章学生-课程数据库
  7. views 多个文件夹 netcore_优化 .net core 应用的 dockerfile
  8. HDU 1422 重温世界杯 (dp)
  9. C++教程:C++开发语言可以做些什么?
  10. svn 回退到指定版本无法提交_svn回滚到指定版本
  11. 数据结构_郝斌老师自学大纲
  12. 我的世界高亮显示服务器,waila(我的世界高亮显示没了)
  13. 有关CCF的CSP认证
  14. 单链表的结构体定义与声明
  15. linux飞行模式切换,光遇飞行的两种模式区别 飞行模式切换和区别分析
  16. PPP PDP 及GPRS
  17. 批处理文件进行音频格式转换
  18. 点击轮播图片,链接跳转错误
  19. C#,图像二值化(17)——全局阈值的ISODATA算法(亦称作InterMeans法)及其源程序
  20. 基于PyQt5实现的PDF小工具

热门文章

  1. android代理生命周期,了解 Activity 生命周期
  2. 跨设备链路聚合_路由与交换技术(华为设备)第五讲---链路聚合
  3. matlab和python哪个运行快_MATLAB比Python快吗?
  4. 聊聊如何提升推荐系统的结果多样性
  5. spring-boot-starter-swagger 1.3.0.RELEASE:新增对JSR-303的支持和host的配置
  6. 会议交流 | CNCC2021中国计算机大会 —— 知识图谱赋能数字化转型论坛
  7. NLP13-LDA引发的一系活动
  8. 中文实体命名识别工具使用汇总:Stanza、LAC、Ltp、Hanlp、foolnltk、NLTK、BosonNLP
  9. 金融情报挖掘:面向公开文本的期货事件聚合与传导因素分析
  10. 【JavaWeb】JavaScript基础篇+高级篇