方案:Azure HDInsight 中群集节点的磁盘空间不足

本文介绍在与 Azure HDInsight 群集交互时出现的问题的故障排除步骤和可能的解决方法。

问题

作业可能失败并出现如下所示的错误消息:/usr/hdp/2.6.3.2-14/hadoop/libexec/hadoop-config.sh: fork: No space left on device.

或者,可能收到如下所示的 Apache Ambari 警报:local-dirs usable space is below configured utilization percentage

原因

Apache Yarn 应用程序缓存可能占用了所有可用磁盘空间。 Spark 应用程序可能运行效率低下。

解决方法

  1. 使用 Ambari UI 确定哪个节点的磁盘空间不足。

  2. 确定有问题的节点中哪个文件夹占用了大部分磁盘空间。 首先通过 SSH 连接到该节点,然后运行 df 列出所有装入点的磁盘用量。 通常,它是 /mnt,即 OSS 使用的一个临时磁盘。 可以进入某个文件夹,然后键入 sudo du -hs 显示该文件夹的总文件大小。 如果看到类似于 /mnt/resource/hadoop/yarn/local/usercache/livy/appcache/application_1537280705629_0007 的文件夹,此输出表示应用程序仍在运行。 此输出可能与 RDD 持久性或中间随机文件相关。

  3. 若要缓解此问题,请终止应用程序,以释放该应用程序使用的磁盘空间。

  4. 如果此问题在工作器节点上频繁发生,则可以调整群集上的 YARN 本地缓存设置。

    打开 Ambari UI 并导航到 YARN ->“配置”->“高级”。
    将以下两个属性添加到自定义 yarn-site.xml 部分并进行保存:

    yarn.nodemanager.localizer.cache.target-size-mb=2048
    yarn.nodemanager.localizer.cache.cleanup.interval-ms=300000
    
  5. 如果上述方法不能永久解决该问题,请优化应用程序。

后续步骤

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:

  • 如果需要更多帮助,可以从 Azure 门户提交支持请求。 从菜单栏中选择“支持” ,或打开“帮助 + 支持” 中心。