You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EMR集群执行Hadoop DistCP失败:缺失YARN日志目录

解决DistCP执行时YARN容器日志目录不存在的问题

我之前在EMR集群上执行DistCP时碰到过完全一样的错误,核心原因是YARN NodeManager的日志目录要么不存在,要么权限配置不对,导致容器启动时无法创建stdout日志文件。给你几个实用的排查和解决步骤:

1. 检查YARN日志根目录的存在性与权限

首先登录到错误提示中/mnt/yarn/logs所在的集群节点,执行以下命令确认目录状态:

ls -ld /mnt/yarn/logs
  • 如果返回"No such file or directory",说明根目录不存在,手动创建并设置正确权限:
    sudo mkdir -p /mnt/yarn/logs
    sudo chown yarn:yarn /mnt/yarn/logs
    sudo chmod 755 /mnt/yarn/logs
    
  • 如果目录存在但权限不对(比如owner不是yarn用户),直接执行上面的chown和chmod命令修正权限。

2. 验证YARN配置中的日志路径

打开YARN的核心配置文件yarn-site.xml(通常在/etc/hadoop/conf目录下),检查yarn.nodemanager.log-dirs参数是否指向正确的路径:

<property>
  <name>yarn.nodemanager.log-dirs</name>
  <value>/mnt/yarn/logs</value>
</property>

如果配置的路径和实际目录不一致,修改后重启NodeManager服务:

sudo stop yarn-nodemanager
sudo start yarn-nodemanager

3. 临时应急:手动创建缺失的容器日志目录

如果需要快速验证任务是否能执行,可以先手动创建错误中指定的具体容器日志目录:

sudo mkdir -p /mnt/yarn/logs/application_1524773139099_0003/container_1524773139099_0003_02_000001
sudo chown yarn:yarn /mnt/yarn/logs/application_1524773139099_0003/container_1524773139099_0003_02_000001

之后重新执行你的DistCP命令:

hadoop distcp s3a://your-source-path hdfs://host/data/your-target-path

不过这只是临时方案,建议还是从前面两步彻底解决日志目录的配置问题。

4. 额外检查:S3A访问配置

虽然这个错误是日志路径导致的,但如果S3A的配置不正确(比如未设置AWS密钥),也可能间接导致容器启动异常。可以检查core-site.xml中的相关配置:

<property>
  <name>fs.s3a.access.key</name>
  <value>your-aws-access-key</value>
</property>
<property>
  <name>fs.s3a.secret.key</name>
  <value>your-aws-secret-key</value>
</property>

内容的提问来源于stack exchange,提问作者Sam Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:53:16