我正在使用 Hadoop 3.2.0 并尝试在 docker 容器中运行一个简单的应用程序,并且我在yarn-site.xml和container-executor.cfg中都进行了所需的配置更改,以选择 LinuxContainerExecutor 和 docker 运行时。
我在 hortonworks 博客之一中使用了分布式 shell 的示例。https://hortonworks.com/blog/trying-containerized-applications-apache-hadoop-yarn-3-1/
我在这里遇到的问题是,当应用程序提交到 YARN 时,它会失败,原因与目录创建问题有关,并出现以下错误
2019-02-14 20:51:16,450 INFO Distributedshell.Client:从 ASM 获取应用程序报告,appId=2,clientToAMToken=null,appDiagnostics=Application application_1550156488785_0002 失败 2 次,因为 appattempt_1550156488785_0002_000002 的 AM 容器以 exitCode:-100 退出这次尝试。诊断:[2019-02-14 20:51:16.282]Application application_1550156488785_0002 初始化失败(exitCode=20),输出:main:提供的命令 0 main:用户是 myuser main:请求的纱线用户是 myuser 无法创建目录/data/yarn/local/nmPrivate/container_1550156488785_0002_02_000001.tokens/usercache/myuser - 不是目录
我在 yarn-site.xml 中配置了 yarn.nodemanager.local-dirs,我可以在 YARN web ui localhost:8088/conf中看到同样的内容
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/yarn/local</value>
<final>false</final>
<source>yarn-site.xml</source>
</property>
我不明白为什么它试图在 nmPrivate 目录中创建用户缓存目录。
注意:我已经验证了 myuser 对目录的权限,并且还尝试按照相关帖子中的建议手动清除目录。但没有果实。我没有在任何其他日志中看到有关容器启动失败的任何其他信息。
如何调试为什么用户缓存目录没有正确解析?
非常感谢您对此的任何帮助。