全部产品

HBase多集群实时数据同步

更新时间:2019-06-13 12:38:34

本文主要介绍HBase实时数据同步的使用场景、BDS实时同步的原理以及与HBase Replication相比的优势,帮助云上HBase客户打通多集群之间长期、稳定的实时数据同步的通道

使用场景

  1. 主备容灾,主集群有故障,可以快速切换到备集群,混合云部署
  2. 异地多活,跨地域机房的数据同步
  3. 在线离线业务分离
  4. 新旧集群不停服迁移

BDS实时数据同步架构

1

  • BDS采用分布式的架构,由BDSMaster节点扫描源集群的日志并生成、调度任务给各个BDSWorker节点
  • BDSWorker节点接收到对应的Task会创建TaskTunnel用于同步对应的Log
  • TaskTunnel 包含 Reader、Queue、Writer,Reader 负责读取 log并将读取的log数据丢到queue中,writer异步消费queue中的数据发往目标集群

BDS数据同步 VS HBase Replication

HBase Replication 劣势

  • 数据同步相关逻辑集成在 Region Server 中
    • bug fix,系统更新困难
    • Region Server 读写和数据同步相互影响
    • 同步积压,不太容易通过扩展节点来解决
  • 不同Region Server同步压力不一样
    • Region Server宕机,日志会被另外一台Region Server接管
    • 写热点,写热点的RegionServer会出现同步不过来的现象
  • 不支持跨版本的数据同步
  • 没有一套完善的UI监控页面,难定位同步问题

BDS实时同步的优势

  • 功能性
    • 支持跨版本的同步
    • 支持双向同步、环状同步
  • 稳定性
    • 抗热点,同步的任务平均分配到各个BDSWorker节点
    • 对业务影响更小
      • 独立于HBase,不受RegionServer读写影响
      • 同步过程基本不会访问源HBase集群,只读取源HDFS上的日志
      • 可以控制同步的线程数和节点的并发数
    • 更加完善的failover机制
  • 易运维
    • BDSWorker stateless,便于扩展、系统升级
    • 完善的监控、报警机制
      • 监控同步时延,上下游流量,读写耗时等指标
      • 任务失败,延迟过大报警
  • 性能
    • 可以通过扩展节点数量来提升迁移同步的速度
    • 支持动态配置线程数
    • 读写异步

版本支持

  • Hadoop 版本:2.x
  • HBase:1.x <-> 1.x | 1.x <-> 2.x | 2.x <-> 2.x (不支持开启kerberos的集群、单节点云HBase)
  • Phoenix:4.x <-> 4.x | 5.x <-> 5.x (暂不支持跨版本)

购买推荐规格

一个BDSWorker(4cores 8G)默认能同时处理5个日志,同步节点个数 ≈ 源集群RS节点 / 5 + 1

同步步骤

注意事项

  • 暂不支持开启Kerberos的集群
  • 增量数据的迁移是基于读取HBase WAL并在目标集群进行回放来实现的,不记录到WAL的数据是不能同步到目标集群的,Bulkload加载到表的数据是不会同步到目标集群的
  • 自建HBase、EMR HBase集群增量同步提交前推荐修改一下源集群的日志保留时间,给增量同步出错预留一些处理的时间(hbase-site.xml 的 hbase.master.logcleaner.ttl 调大为12小时以上,重启HMaster )

Apsara HBase 开启日志订阅功能

2

  • 设置 hbase.exporter.enabled 为 true
  • 滚动重启源集群