DataNode 是以 Block 形式存储真正数据地地方。
如何让 NameNode 知道 DataNode 自身存在与否及自身所保存的数据是DataNode工作机制的核心。
- 在集群启动后,所有 DataNode 会向 NameNode 进行注册并向 NameNode 上报自己机器上所有的块信息(Block包含数据、数据长度、校检和、时间戳);
- 注册成功后,DataNode 会以一小时(dfs.blockreport.intervalMsec 默认3600000毫秒) 为周期性的向NameNode上报所有的块信息;
- 之后,DataNode 会每三秒(dfs.heartbeat.interval 默认3秒)周期性对 NameNode 发送心跳,汇报自己还活着和自身存储空间剩余等信息,而 NameNode 收到心跳可能返回带有自己指令信息给DataNode,让DataNode *** 作,最终完成一次心跳;
- 而当 DataNode 因为网络阻塞或宕机了不再对NameNode服务的依据也是 DataNode 超时时长(timeout) 默认10分钟(2 * dfs.namenode.heartbeat.recheck-interval 默认为300000毫秒)+30秒(10 * dfs.heartbeat.interval 默认3 秒) 不和 NameNode 进行心跳互动,NameNode 就会认定 DataNode 已经不再工作。
因为NameNode 和 DataNode 之间存在 主从关系,让 NameNode 知道自己的存在和自身的作用是 DataNode 最主要的事情。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)