namenode的启动过程中,主要做了两件事情:

1、加载fsimage元数据和edits日志文件 更加详细的介绍可以参考我之前的博文Hadoop伪分布式部署之SecondaryNameNode。

2、等待datanode的注册信号和块状态信息报告 namenode启动的过程中,会有30秒的等待时间,等待datanode的注册信号和块状态信息报告。 在这30秒中,hdfs处于安全模式,用户只能对hdfs执行读操作,而不能进行写操作。

2.1 等待datanode注册信号 首先,datanode会向namenode发送心跳信息进行注册。 datanode每3秒会向namenode发送一次心跳信息。如果namenode超过10分钟没有收到某个datanode的心跳信息,便会认为这个datanode不可用。

2.2 等待datanode报告块状态信息 datanode刚启动的时候,会先统计该节点的块状态信息,然后向namenode汇报。此后,datanode默认每个小时向namenode汇报一次。 如果namenode收到某个datanode上某个块已损坏的信息,便会通过心跳信息向该节点发送删除这个损坏的数据块的命令。