前言(30秒等待)
namenode的启动过程中,主要做了两件事情:
1、加载fsimage元数据和edits日志文件
更加详细的介绍可以参考我之前的博文Hadoop伪分布式部署之SecondaryNameNode。
2、等待datanode的注册信号和块状态信息报告
namenode启动的过程中,会有30秒的等待时间,等待datanode的注册信号和块状态信息报告。
在这30秒中,hdfs处于安全模式,用户只能对hdfs执行读操作,而不能进行写操作。
等待datanode注册信号
首先,datanode会向namenode发送心跳信息进行注册。
datanode每3秒会向namenode发送一次心跳信息。如果namenode超过10分钟没有收到某个datanode的心跳信息,便会认为这个datanode不可用。
等待datanode报告块状态信息
datanode刚启动的时候,会先统计该节点的块状态信息,然后向namenode汇报。此后,datanode默认每个小时向namenode汇报一次。
如果namenode收到某个datanode上某个块已损坏的信息,便会通过心跳信息向该节点发送删除这个损坏的数据块的命令。