为什么Hadoop报告"不健康的节点本地目录和日志目标不好"?

时间:2015-03-18 19:52:09

标签: hadoop yarn

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

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

在运行状况报告中,它提供错误:

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

出了什么问题?

8 个答案:

答案 0 :(得分:46)

local-dirs are bad的最常见原因是节点上的可用磁盘空间超过了纱线的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>

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

FSCK

如果您怀疑目录中存在文件系统错误,可以通过运行

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

答案 1 :(得分:7)

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

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

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

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

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

答案 2 :(得分:3)

也可能是由yarn.nodemanager.log-dirsyarn-site.xml配置的错误日志目录位置引起的。事实目录不存在或设置了错误的权限。

答案 3 :(得分:3)

起初我有类似的问题。

然后我还发现了另一个问题。当我使用jps命令时,缺少诸如NameNode,DataNode等的某些进程。

$jps
13696 Jps
12949 ResourceManager
13116 NodeManager

然后我从以下内容修复了它 solution  并自动修复了不健康的节点问题。

答案 4 :(得分:1)

在使用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

答案 5 :(得分:0)

我遇到了类似的问题,当hdfs达到90%时,sqoop上传才被挂起。更改了max-disk-utilization-per-disk-percentage和警报阈值定义的阈值后,上载再次起作用。 感谢

答案 6 :(得分:0)

当磁盘为90%(使用> df)时,我会遇到这种情况,然后我删除了不必要的文件,因此磁盘变成了85%(yarn.nodemanager.disk-health-checker.max-disk-utilization-per的默认设置-disk-percentage使用了90%的可用磁盘(如果未在yarn-site.xml中指定),则问题已解决。

效果类似于将利用率提高到90%以上(因此,在我的情况下,将额外的可用空间压缩为90%已满),只是为了挤压更多的空间。但是,优良作法是始终不要达到90%以上。

答案 7 :(得分:0)

有同样的问题,请列出我的原因,FYR:

  1. 目录不存在,先mkdir
  2. memory-mb set 比可用的要大
    <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>