找回密码
 立即注册
查看: 400|回复: 0

【HDFS】EditLogTailer功能及原理(二)-- selectInputStreams细节详解

[复制链接]
发表于 2022-3-26 20:53 | 显示全部楼层 |阅读模式
【HDFS】EditLogTailer功能及原理(一)-- 整体流程

【HDFS】EditLogTailer功能及原理(二)-- selectInputStreams细节详解

在系列文章的第一篇中,我们用通俗的语言描述了EditLogTailer的基本工作过程,然后也留了一些坑待填。今天我们来填第一个坑,selectInputStreams方法细节详解。

本文不会大段的复制源码逐行讲解,而是用图文的方式将自己的理解给描述出来。通过本文你将获得了解如下内容:

① 社区hadoop-3.3.0版本新增observer namenode read特性后,选择editlog的inputStream的细节。

② selectRpcInputStreams:hadoop-3.3.0后新增的通过RPC的方式获取editlog输入流数据,RPC的实现是从journal node的cache里获取的editlog数据。

③ selectStreamingInputStreams:原始版本就有的通过http获取editlog数据输入流的实现。
一、selectInputStreams作用及参数介绍


通过之前的文章我们知道,standby namenode需要从Journal node中获取editlog的输入流,然后在将这些editlog应用到standby namenode的内存中的fsimage中,以保持和active namenode状态的尽可能同步。

那selectInputStreams的作用其实就是从Journal node中选择符合条件的editlog输入流。为什么需要选择呢? 很简单,可能有一些比较老的editlog文件还没来得及被清理,这些数据我们是不需要的,因此是不需要获取这些老的editlog文件的输入流的。什么是符合条件的呢? 举个例子,selectInputStreams方法有一个参数是fromTxid,代表选择出来的stream的第一个txid。我们会将当前stanby namenode的最新txid + 1的值传给这个参数,这样的话,我们选择出来的输入流就能包含新的数据了。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-5-9 11:03 , Processed in 0.134395 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表