HBase多集群实时数据同步
本文主要介绍HBase实时数据同步的使用场景、BDS实时同步的原理以及与HBase Replication相比的优势,帮助云上HBase客户打通多集群之间长期、稳定的实时数据同步的通道
使用场景
- 主备容灾,主集群有故障,可以快速切换到备集群,混合云部署
- 异地多活,跨地域机房的数据同步
- 在线离线业务分离
- 新旧集群不停服迁移
BDS实时数据同步架构
- 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
同步步骤
- 购买及环境准备
- 客户 - 购买BDS迁移服务,并绑定指定VPC(VPC下的HBase集群可以相互迁移)
- 协商 - 环境打通(详见网络环境打通)
- 迁移
- 客户 - 登陆BDS操作页面
- 客户 - 添加HBase集群
- 客户 - 修改源集群日志保留策略
- 自建HBase、EMR HBase -
hbase-site.xml
配置的hbase.master.logcleaner.ttl
调大为12小时以上 - 云HBase - 开启日志订阅功能
- 自建HBase、EMR HBase -
- 客户 - 创建增量同步通道,同步表的实时增量写入数据到目标集群
注意事项
- 暂不支持开启Kerberos的集群
- 增量数据的迁移是基于读取HBase WAL并在目标集群进行回放来实现的,不记录到WAL的数据是不能同步到目标集群的,Bulkload加载到表的数据是不会同步到目标集群的
- 自建HBase、EMR HBase集群增量同步提交前推荐修改一下源集群的日志保留时间,给增量同步出错预留一些处理的时间(hbase-site.xml 的 hbase.master.logcleaner.ttl 调大为12小时以上,重启HMaster )
Apsara HBase 开启日志订阅功能
- 设置 hbase.exporter.enabled 为 true
- 滚动重启源集群
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论