HBase Replication的源码解析

本文详细解析了HBase的复制(Replication)机制,包括ReplicationSource、ReplicationSink、ReplicationSourceManager和ReplicationEndpoint的工作原理。ReplicationSource负责读取WAL并按队列发送到目标集群,通过多线程提升发送吞吐量。ReplicationSink在目标端接收并应用到本地集群。ReplicationSourceManager管理所有源,处理RegionServer的增减及配置变更。新加入的集群只能从加入后的时间点开始同步数据。文章还探讨了HLog的角色以及如何处理RegionServer故障和新集群的添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Replication的类结构:

replication的类结构包括了ReplicationSourceReplicationSourceManagerReplicationSinkReplicationSinkManger以及ReplicationEndpoint五部分组成。


ReplicationSource是源端负责读取wal  entry的对象,每个RegionServer对应每个peerid分配一个ReplicationSource,这里每个peerid对应唯一的一个slave集群。ReplicationSource中将待replicatewal log按照prefix name的不同组织成不同的queue,每个queue由一个work thread负责处理该queue中的log entrywork thread会依次读取log file的内容并解析成对象WALEntry(过滤在这里发生),最终经由HBaseInterClusterReplicationEndpoint发送到目标集群。


发送经由HBaseInterClusterReplicationEndpoint实现,实际的处理代码在shipEdits中,发送交由线程池执行的,池中线程的个数由hbase.replication.source.maxthreads定义,默认是10个,这些线程接收实现了Callable接口的Replicator对象,在call方法中将WALEntry序列化后经protobuf同步到目标端集群。每一个ReplicationSource配备一个endpoint执行ship逻辑。


ReplicationSourceHBaseInterClusterReplicationEndpoint的设计,使得源端HLog的读取与发送解耦,并且发送可以由多线程来完成,如此提升了源端的发送吞吐和能力。


目标端集群的每个RegionServer都有一个ReplicationSink对象,该对象同步接收源端传送过来的entries,并将之转化为hbase内部的mutation,调用HTabebatch API应用到本地集群。


ReplicationSourceManager负责管理所有的ReplicationSource,处理RegionS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值