通过本文可以获得如下知识点:
① 写editlog的调用链路,从namenode侧->journal侧方法调用链路图。
② journal RPC源码解析
③ sendEdits源码、waitForWriteQuorum源码等细节。
此接口是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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)