【HDFS】QJournalProtocol——journal:写JournalNode相关的RPC

【HDFS】QJournalProtocol——journal:写JournalNode相关的RPC,第1张

通过本文可以获得如下知识点:
① 写editlog的调用链路,从namenode侧->journal侧方法调用链路图。
② journal RPC源码解析
③ sendEdits源码、waitForWriteQuorum源码等细节。

一、QJournalProtocol RPC接口简介

此接口是QuorumJournalManager和每个JournalNode之间通信的协议,主要负责发送editlog,协调journal node节点的恢复。

1.1 写editlog的调用链路

当我们对HDFS的FSNamesystem做出了修改时,就会产生一条editlog记录这次修改。由于HDFS的HA(高可用)特性,不光要在Active NN本地写editlog文件,还要写journal node(JN)。我用一幅图总结出了写editlog的调用链路,如下图所示:


JournalSetOutputStream类是EditLogOutputStream的子类, 在JournalSetOutputStream对象上调用的所有EditLogOutputStream接口方法都会被转到FSEditLog.journalSet字段中保存的editlog文件在所有存储位置上的输出流对象(通过调用mapJournalsAndReportErrors()方法实现) 。

FSEditLog的editLogStream字段就是JournalSetOutputStream类型的(是在startLogSegme

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/942443.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-18
下一篇 2022-05-18

发表评论

登录后才能评论

评论列表(0条)

保存