EKS上向YARN提交Spark应用遇目录不存在错误求助
问题描述
在EKS上向YARN提交Spark应用,相关配置:
spark.yarn.stagingDir: file:///project/fs/apps/spark
提交时出现错误:
org.apache.hadoop.util.Shell$ExitCodeException: chmod: cannot access '/project/fs/apps/spark/subprojectname/.sparkStaging/application_1728900890114_0014': No such file or directory
以root用户(环境变量CORE_CONF_hadoop_http_staticuser_user的值)登录ResourceManager和NodeManager节点时,可正常访问共享文件系统/project/fs/apps/spark/,无法定位问题。需了解负责创建Spark应用暂存目录.sparkStaging/application_1728900890114_0014的进程。
解答
创建暂存目录的进程
是执行spark-submit命令的Spark客户端进程。在提交应用的初始化阶段,Spark客户端会先在配置的spark.yarn.stagingDir路径下创建.sparkStaging/[application-id]目录,用于上传应用的Jar包、依赖文件、配置等资源,后续YARN ResourceManager会基于这些资源启动应用实例。可能的问题排查方向
- 运行用户权限不匹配:Spark客户端进程的执行用户并非root,而共享目录
/project/fs/apps/spark/subprojectname/对该用户无写入权限,导致无法创建.sparkStaging子目录。即使root能访问,客户端进程的运行用户可能没有对应权限。 - 文件系统协议错误:配置中使用
file://协议指向的是Spark客户端所在Pod的本地文件系统,而非集群共享的分布式文件系统。如果/project/fs/apps/spark是共享存储(如NFS、EFS),需确保客户端Pod已挂载该存储,或改用HDFS等分布式文件系统的URI(如hdfs://namenode:port/project/fs/apps/spark)。 - 路径有效性问题:检查
subprojectname目录是否确实存在于/project/fs/apps/spark/下,或路径中是否存在大小写、特殊字符等拼写错误。
- 运行用户权限不匹配:Spark客户端进程的执行用户并非root,而共享目录
内容的提问来源于stack exchange,提问作者JBoy
相关产品推荐
相关产品推荐

