`
brianf
  • 浏览: 37090 次
  • 来自: 杭州
社区版块
存档分类
最新评论

HBase replication 代码分析

阅读更多
随着HBase的大规模应用,HBase的容灾显得特别的重要。

本文主要从代码层面分析HBase replication (基于HBase0.94.3)

分为正常replication处理逻辑和RS Fail两块。


1.正常replication处理逻辑


首先是HLog的rollwrite方法,调用prelogRoll, 在ZK上加上新的Hlog

再调用postlogRoll,调用Replication的postLogRoll


/**

* Gateway to Replication.  Used by {@link org.apache.hadoop.hbase.regionserver.HRegionServer}.

*/

public class Replication implements WALActionsListener,

  ReplicationSourceService, ReplicationSinkService {



Replication  实现了WALActionsListener接口,类似于提供给RS来调用的一些方法,类似于gateway.


当有新hlog生成时,会调用相应的方法来处理,在此方法中,

  @Override

  public void postLogRoll(Path oldPath, Path newPath) throws IOException {

    getReplicationManager().postLogRoll(newPath);

Replication会调用ReplicationSourceManager的postLogRoll->ReplicationSource的enqueueLog方法,将新的hlog加入到一个queue中,同时更新Metrics,   ReplicationSource是一个线程,负责读取,解析,发送和记录Hlog

,同时会根据replication ration来随机选择几台slave 集群的region servers来,然后将数据push到对应的RS上,若超过无法联系slave的RS,就认为此RS已经挂掉了。

在ReplicationSource的run中,通过ZK获得对应Peer的RS,按照比例随机选择几台Slave RS放入一个LIST中,poll queue,获得一个hlog,open reader,按照配置项读取一定数目的entries存在HLog.Entry[] entriesArray中,然后在调用 shipEdits方法,选择之前LIST的一台 RS,然后通过RPC获得一台RS,然后调用

HregionServer的replicateLogEntries,

HRegionInterface rrs = getRS();

        LOG.debug("Replicating " + currentNbEntries);

        rrs.replicateLogEntries(Arrays.copyOf(this.entriesArray, currentNbEntries));


在RS的 replicateLogEntries方法中,会调用RS的Replication.replicateLogEntries

this.replicationSinkHandler.replicateLogEntries(entries);

最终会调到ReplicationSink的replicateLogEntries方法,此方法中,会将一个个Hlog.Entry解析出来,生成一个Map>,key为tablename, value为与此tablename相关的row, row生成的put或者deletec对象,然后根据各个table 调用ReplicationSink.batch,最终调用 Hbase的client.HTableInterface.batch 来将     

相应的row写入到对应的table。


调用HregionServer的replicateLogEntries方法完成后,会设置hlog的position

------




2.RS Fail

NodeFailoverWorker


OtherRegionServerWatcher.nodeDeleted -> ReplicationSourceManager.transferQueues-> NodeFailoverWorker.run

在run中,在ZK上先lock Fail的RS,将Fail的RS对应的zk上的Hlog队列全部copy到自己下面,然后重新加入queue( ReplicationSource的enqueueLog方法 )


  • 大小: 124 KB
  • 大小: 39.2 KB
0
0
分享到:
评论

相关推荐

    HBase 应用平台 Replication 功能

    对于源码级别的理解,可以查看HBase的源代码,了解Replication的具体实现细节。同时,HBase提供了命令行工具以及Admin API来管理和监控复制状态。 总的来说,HBase的Replication功能是保证数据可靠性和一致性的...

    Hbase权威指南源码

    《HBase权威指南》是一本深入探讨分布式列式数据库HBase的专业书籍,其源码提供了对HBase工作原理和实现细节的深入理解。HBase,作为Apache Hadoop生态系统中的一个关键组件,是为大规模数据存储设计的高性能、...

    Hbase同步数据到Solr的方案

    为了实现HBase到Solr的数据同步,我们可以使用HBase Indexer,这是一个由NGDATA开发的开源项目,它简化了这个过程,避免了手动编写同步代码的需求,从而减少了开发工作量和并发环境下的性能问题。在CDH 5.0.2版本中...

    hbase-0.98.6.1-src.zip

    HBase是Apache软件基金会开发的一个开源、分布式、版本化、基于列族的NoSQL数据库,设计用于处理海量数据。这个“hbase-0.98.6.1-...总之,HBase 0.98.6.1的源码分析是理解大数据处理和NoSQL数据库设计的宝贵学习材料。

    hbase1.0.3_part1

    2. **列式存储**:不同于传统的行式存储,HBase以列族(Column Family)的形式组织数据,同一列族内的列可以共享相同的存储策略,有利于进行大数据分析。 3. **实时查询**:HBase支持实时读写操作,通过内存缓存和...

    hbase-0.92.1.tar.gz

    11. **Replication**:HBase 0.92.1版本已经支持数据复制,可以创建集群之间的数据备份,提高数据的可用性和容错性。 12. **故障恢复**:当Region Server出现故障时,Master节点会自动检测并重新分配其管理的Region...

    Hadoop2.7.5-HBase1.2.6伪分布式安装

    2. **下载源码**:从Apache官方网站下载Hadoop2.7.5和HBase1.2.6的源码包,解压到指定目录。 3. **配置Hadoop**:在解压后的Hadoop目录下,修改`etc/hadoop`下的`core-site.xml`,设置`fs.defaultFS`为`hdfs://...

    大数据系列-Hbase

    - ** Coprocessors**: 在Region Server上运行的用户自定义代码,可以扩展HBase的功能。 ### 7. 文件名称解析 从提供的压缩包子文件名来看,可能包含三个部分的教程: - "0401 HBase 初窥使用":这部分可能会介绍...

    hadoop-0.20.205.0和hbase-0.90.5,集群和单机 安装配置

    ### Hadoop与HBase集群及单机安装配置详解 #### 一、背景介绍 随着大数据技术的发展,Hadoop和HBase成为了处理...这些步骤确保了Hadoop和HBase可以在单机或集群环境下稳定运行,为后续的大数据分析提供了坚实的基础。

    Hadoop-2.4.0+Hbase-0.94.18+Nutch-2.3集群爬虫配置攻略

    要将其与Hadoop和Hbase集成,首先需要从GitHub获取最新版本的Nutch-2.x源码,并根据项目文档编译Nutch。 在`conf/nutch-site.xml`中,配置Nutch的基本参数,如抓取间隔、抓取策略等。还需在`conf/hadoop-site.xml`...

    基于cdh5.7.5集群的solr(4.10.3-cdh5.7.5)+hbase(1.2.0-cdh5.7.5)构建二级索引方案

    5. **实时同步**:当HBase中的数据发生变化时,通过HBase Indexer或SolrCloud的HBase Replication功能,确保Solr中的索引与HBase数据保持同步。 6. **查询优化**:利用Solr的查询API,可以进行复杂查询,如多字段...

    第7章 HBase组件安装与配置.pptx

    HBase 的安装与配置需要根据实际情况进行选择,可以选择使用 HBase 的二进制包,也可以从源代码编译安装。HBase 的配置包括配置 RegionServer、HMaster、ZooKeeper 等组件的配置,以及 Region 的分配和负载均衡的...

    精品--毕业设计-基于HBase实现的手机数据备份系统,实现了手机关键信息的备份,如短信、联系人、重要文件等。.zip

    8. **故障恢复**:备份系统必须具备故障恢复机制,例如通过HBase的region replication或HDFS的副本策略来保证数据的完整性。 9. **监控与维护**:系统可能会集成监控工具,如HBase的Metrics2和Zabbix,用于监控系统...

    hadoop和hbase分布式配置及整合eclipse开发.pdf

    4. **编写代码**: 根据需求编写MapReduce作业或HBase客户端应用等。 5. **编译与运行**: 在Eclipse中编译项目,并通过Hadoop或HBase提供的工具提交并运行程序。 #### 七、总结 通过本文档的学习,读者可以了解到...

    03侧田HBase迁移方案的设计与实践12.pdf

    - **Replication**:使用HBase自带的复制功能来迁移实时增量数据,其优点包括错误重试机制和增量数据的不丢失保证。缺点包括不同版本间可能存在的兼容问题、bug修复和升级困难以及同步积压问题难以通过扩展节点解决...

    英特尔Hadoop发行版 2.2 开发者指南

    - **HBase Replication**:展示HBase的复制机制。 - **HBase Aggregate**:介绍如何使用聚合函数进行数据统计。 - **HBase Parallel Scanning**:演示并行扫描数据的方法。 - **HBase Group-by**:展示如何使用...

Global site tag (gtag.js) - Google Analytics