为什么 Hadoop 报告 "Unhealthy Node local-dirs and log-dirs are bad"?

Why does Hadoop report "Unhealthy Node local-dirs and log-dirs are bad"?

我正在尝试在我的 PC 上设置单节点 Hadoop 2.6.0 集群。

在访问 http://localhost:8088/cluster 时,我发现我的节点被列为 "unhealthy node"。

在健康报告中,它提供了错误:

1/1 local-dirs are bad: /tmp/hadoop-hduser/nm-local-dir; 
1/1 log-dirs are bad: /usr/local/hadoop/logs/userlogs

怎么了?

请尝试在yarn中添加配置-site.xml

<property>
   <name>yarn.nodemanager.disk-health-checker.enable</name>
   <value>false</value>
</property>

它可以在我的网站上运行。

并 rm /usr/local/hadoop/logs。 例如:

rm -rf /usr/local/hadoop/logs
mkdir -p /usr/local/hadoop/logs

local-dirs are bad 的最常见原因是节点上的可用磁盘 space 超过了 yarn 的 max-disk-utilization-per-disk-percentage 默认值 90.0%

要么清理不健康节点运行正在运行的磁盘,要么在yarn-site.xml

中提高阈值
<property>
  <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
  <value>98.5</value>
</property>

避免禁用磁盘检查,因为当磁盘最终 运行 超出 space 或存在权限问题时,您的作业可能会失败。有关详细信息,请参阅 yarn-site.xml Disk Checker section

FSCK

如果怀疑目录有文件系统错误,可以通过运行ning

检查
hdfs fsck /tmp/hadoop-hduser/nm-local-dir

也可能是yarn-site.xmlyarn.nodemanager.log-dirs配置的日志目录位置错误导致的。事实上目录不存在或设置了错误的权限。

我遇到了类似的问题,sqoop upload 在 hdfs 达到 90% 时就挂了。在我更改了 max-disk-utilization-per-disk-percentage 的阈值和警报阈值定义上传后再次工作。 谢谢

在使用 brew 安装 Hadoop 的 macOS 上,我必须更改 /usr/local/Cellar/hadoop/2.8.1/libexec/etc/hadoop/yarn-site.xml 以包含以下内容:

<property>
  <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
  <value>0</value>
</property>

设置基本上已经完全关闭了磁盘健康检查

我使用 brew list hadoop 找到了文件。

$ brew list hadoop | grep yarn-site.xml
/usr/local/Cellar/hadoop/2.8.1/libexec/etc/hadoop/yarn-site.xml
/usr/local/Cellar/hadoop/2.8.1/libexec/share/hadoop/tools/sls/sample-conf/yarn-site.xml

我一开始也有类似的问题。

然后我又发现了一个问题。当我使用 jps 命令时,一些进程(如 NameNode、DataNode 等)丢失了。

$jps
13696 Jps
12949 ResourceManager
13116 NodeManager

然后我从下面修复了它 并且自动修复了不健康的节点问题。

我在磁盘为 90%(使用 >df)时遇到过这种情况,我删除了不必要的文件,因此它变成了 85%(yarn.nodemanager.disk-health-checker.max-disk 的默认设置-utilization-per-disk-percentage is using 90% of available disk if you do not specify in yarn-site.xml) and the problem is solved.

效果类似于将利用率提高到 90% 以上(因此在我的情况下挤压额外的可用 space 是 90% 满)只是为了挤压额外的 space。然而,最好不要超过 90%。

有同样的问题,列出我的课程,针对:

  1. 不存在,mkdir第一个,
  2. memory-mb 集太大了
    <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/tmp/yarn/nm</value>
    </property>
    <property>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/tmp/yarn/container-logs</value>
    </property>

    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>364000</value>
    </property>