美文网首页
HDFS NameNode BlockReportLease 问

HDFS NameNode BlockReportLease 问

作者: xudong1991 | 来源:发表于2021-09-05 11:16 被阅读0次

    概述

    HDFS 在 HDFS-7923 中,引入了 block report lease 这个新的特性,目标是避免集群中 DN 集中进行全量 block report,从而导致 NN 阻塞的情况,一般这种情况在 NN 刚启动时比较多见。

    按照这个 patch,目前 NN 最多允许6个 DN 同时做 FBR(Full Block Report),且 DN 最多有5分钟的时间来完成这次 FBR。

    问题

    这个特性的出发点是好的,但是它做的完成度很低,存在很多问题。

    1. 功能问题
      没有考虑到许多临界情况,导致在那些情况下,DN 无法完成 FBR,最终导致

      1. NN 启动之后,由于始终无法完成 block report,因此长时间无法退出安全模式 。
      2. 由于 DN block report 可能出现问题(例如:DN 上报不完整,12块盘只能成功上报6块,等等),可能导致 NN 上可能突然出现许多 missing block
      3. 其它

      这些问题,直到 DN 下次成功进行 FBR 后,才有可能恢复。 目前已知的 bug 有:

      • HDFS-12914. Block report leases cause missing blocks until next report
      • HDFS-14314. fullBlockReportLeaseId should be reset after registering to NN
    2. 性能问题
      该特性引入了两个新的配置项,但是默认值都取的有问题:

      • Block Report Lease 过期时间
        默认值 5min,如上所述,这意味着一个拿到了 lease 的 DN 有5分钟来完成此次 FBR,这在一般情况下是够的,但是在一些特殊情况下(如 NN 刚启动时),这是不够的,此时会引起 lease expired 错误,进而导致 DN FBR 失败,如下图所示:


      • Block Report Lease 颁发个数
        默认值6,同样如上所述,NN 同时最多颁发6个 lease,即最多同时允许6个 DN 进行 FBR,NN 在 DN 执行心跳时颁发 lease,按照现网配置,心跳间隔为 10s,也就是说,最坏的情况下,NN 在长达10s 左右的时间里只能处理6个 DN 的 FBR,在集群规模较大时(1000 DN+),这将严重拖慢 NN 启动之后,退出 safeMode 的速度。

    解决办法

    1. 功能问题
      先合入上面的两个 patch,后面如果出现问题,继续解决。

    2. 性能问题

      1. Block Report Lease 过期时间拉长为半小时:
        NameNode 侧,hdfs-site.xml 中,做如下配置
      <property>
      <name>dfs.namenode.full.block.report.lease.length.ms</name>
      <value>1800000</value>
      </property>
      
      1. Block Report Lease 颁发个数增大10倍,配置为60
        NameNode 侧,hdfs-site.xml 中,做如下配置
      <property>
      <name>dfs.namenode.max.full.block.report.leases</name>
      <value>60</value>
      </property>
      

    相关文章

      网友评论

          本文标题:HDFS NameNode BlockReportLease 问

          本文链接:https://www.haomeiwen.com/subject/asgxwltx.html