因为ReplicationMonitor 依赖了其他4个所以这里先分析下DecommissionManager$Monitor
DecommissionManager主要是负责节点退役或者说节点停用,而Monitor负责定时来检测这些节点的退役状态,在DecommissionManager里其实也只有Monitor在真正执行功能,我们来看下Monitor的检测实现,
首先看下影响检测的几个参数
/** recheckInterval is how often namenode checks
* if a node has finished decommission
*/
private final long recheckInterval;
/** The number of decommission nodes to check for each interval */
private final int numNodesPerCheck;
/** firstkey can be initialized to anything. */
private String firstkey = "";
因为需要检测全部的datanode,然后datanode又比较多,所以采用迭代的步长检测,例如每次只检测n个机器,下次检测时就是相对上次检测的的后n个机器,又为了保证检测的连续性,所以检测的数据构成一个环形数据结构,然后需要记录每次迭代的起始点,所以有个firstkey,然后环形数据结构由hadoop自己实现的CyclicIteration来提供(其实就是首尾数据相连)
看下检测的逻辑
1:判断节点是否处于DECOMMISSION_INPROGRESS状态
2:如果处于DECOMMISSION_INPROGRESS状态,则检测该节点上的所有数据块是否已经到了复制因子
3:如果已经到了复制因子块的个数则说明这个节点上的所有块都是多余了,也就是说这个节点可以退役了,将节点状态设置为退役
从上面的检测逻辑可以看出,其实就是为了确定是否这个节点上的数据块已经被完全复制过了到了复制因子,如果完全复制过了,那这个节点其实就没用了,所以就标示为退役了,主要起到一个审查的目的。
好上面有个状态常量
DECOMMISSION_INPROGRESS
那这个值是谁设置的呢,一般在什么情况会触发呢,主要是DFSAdmiin负责触发
DFSAdmin的 -refreshNodes 命令或者说传递这个命令参数的其他调用者例如Balancer ,DFSck等。
refreshNode会依据exclude文件里配置的ip来更新node节点的状态,例如这里是调用setDECOMMISSION_INPROGRESS(datanode)
分享到:
相关推荐
NameNode职责
Hadoop Namenode性能诊断及优化
hdfs的namenode的元数据管理机制,简要画出了元数据管理的流程分析
[bigdata@namenode1 scripts]$ pwd /home/bigdata/software/hadoop/share/scripts [bigdata@namenode1 scripts]$ python configuration-utils.py -c 2 -m 8 -d 30 -k True Using cores=2 memory=8GB disks=30 hbase=...
未知原因导致namenode 的fsimage等文件丢失,namenode重启失败的参考解决
NameNode及SecondaryNameNode分析
NULL 博文链接:https://snv.iteye.com/blog/1884565
hadoop NameNode 源码解析
王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第九讲Hadoop图文训练课程:剖析NameNode和Secondary NameNode的工作机制和流程. 此教程来自于王家林免费发布的3本Hadoop教程:云计算分布式大数据...
大家都知道HDFS的架构由NameNode,SecondaryNameNode和DataNodes组成,其源码类图如下图所示:正如上图所示,NameNode和DataNode继承了很多的protocol用于彼此间的通信,其实nameNode还实现了...实现了ClientProtocol...
今天小编就为大家分享一篇关于Hadoop之NameNode Federation图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Hadoop Namenode恢复
详细讲解了Hdfs中NameNode节点的配置,备份和恢复,以及secondNamenode的配置
(1)第一次启动 NameNode 格式化后,创建 fsimage 和 edits 文件 (2)客户端对元数据进行增删改的请求 (3)NameNode 记录操作
第5章 NameNode和SecondaryNameNode(面试开发重点) 5.1 NN和2NN工作机制 思考:NameNode中的元数据是存储在哪里的? 首先,我们做个假设,如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应...
最新的hdfs namenode主备安装文档,详细,命令只需要copy执行即可
■ NameNode 服务器线程数 ■ 用于来自客户端和DataNode 的RPC 调用的线程(心跳和元数据操作) ■ CM默认是30(非CM默认值为10) ■ 推荐:集群节点数x 20 的自然对数 ■ 设置太低的症状:DataNode 日志中的...
1. Hadoop 2.0 2. 部署在2个Ubuntu上 3. 2个namenode 2个datanode
(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件 (2)客户端对元数据进行增删改的请求 (3)NameNode记录操作日志,更新滚动