HDFS Namenode启动过程

时间:2023-02-06 04:33:18

 

   文章作者:luxianghao

 

   文章来源:http://www.cnblogs.com/luxianghao/p/6564032.html  转载请注明,谢谢合作。

 

   免责声明:文章内容仅代表个人观点,如有不当,欢迎指正。

 

   ---

 

在启动过程中,Namenode在能处理client的请求之前必须完成以下几步:

  1 fsimage文件中读取系统metadata

  2 读取edit logs并把记录在其中的操作合并到系统metadata中去

  3 生成一个新的checkpoint(新的fsimage必须和旧fsimage加上edit log上操作保持一致)

  4 保持safe mode直到Datanodes上报足够数量的block信息

 

在一些情况下 上面的这些动作会消耗很长时间, eg

 1 edit logs很大,这样读取记录到这里面的操作,合并到system metadata会花费很长时间,当secondary nn长时间不工作的时候,这种情况就会发生,

 2 老化的磁盘会拖慢任何受限于io的操作: 读取fsimage,读取 edit logs,生成一个新的checkpoint(包含上面两个动作)

 3 当生成一个新的checkpoint的时候,NN会写所有的被配置存储fsimage的位置,这个动作是并行的,但是NN会阻塞直到所有的写操作完成

    这就意味着一块慢盘会拖慢整个启动过程

 

通常管理员在遇到问题的时候会第一时间去看web UI,但是NN在生成一个新的checkpoint之后才会启动 HTTP server,当重启一个NN而且启动过程慢的时候,

web UI可用之前通常要花费好几分钟,甚至一个小时的时间,也有可能在启动过程中,NN hung住了,但是有经验的工程师,会通过检查thread dumps

来判断NN是否在正常启动

 

针对上面的这个说的这种不能及时看web UI的情况,HDP 2.0加了一个新的feature来解决这个问题,具体可参考 https://issues.apache.org/jira/browse/HDFS-4249

 

参考文档:

  https://zh.hortonworks.com/blog/understanding-namenode-startup-operations-in-hdfs/