HDFS 源码阅读(NameNode,DataNode)

本文深入探讨HDFS的NameNode和DataNode。NameNode的FSNamesystem管理PendingReplicationBlocks和UnderReplicatedBlocks,通过ReplicationMonitor进行复制任务调度。DataNode则启动DataXceiverServer负责数据接收与存储,执行来自NameNode的复制和失效任务。
摘要由CSDN通过智能技术生成

NameNode

  • FSNamesystem
// 包括三个守护线程
private void initialize(NameNode nn, Configuration conf){
	// 心跳监控
	this.hbthread = new Daemon(new HeartbeatMonitor());
	// 租约管理
	this.lmthread = new Daemon(leaseManager.new Monitor());
	// 复制文件块
	this.replmon = new ReplicationMonitor();
	this.replthread = new Daemon(replmon);
}

// NameNode 接收到 DataNode 的 block 回复后,更新等待列表和 block 位置信息。
pendingReplications.remove(block);    
addStoredBlock(block, node, delHintNode );
	
  • PendingReplicationBlocks:保存当前正在复制的块的状态。守护线程 PendingReplicationMonitor 记录复制超时的块。

    • PendingBLockInfo,用来记录正在复制的副本数量,每复制好一个就减一个,减到 0 就复制好了。
  • ReplicationMonitor:定期启动复制工作

    • UnderReplicatedBlocks:保存当前需要复制的块的状态。根据一个块的现有状态(当前副本数,失联副本数,预期副本数)设定优先级,共有三个优先级。
    • computeDatanodeWork():计算 DataNode 的任务,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值