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

EKS部署spark-operator运行spark-pi时报无法创建临时目录错误如何解决

问题根因说明

前面的非法反射访问警告属于Spark 3.1.x与Java 11及以上版本的兼容性提示,不会导致任务失败,可以直接忽略。
核心报错java.io.IOException: Failed to create a temp directory (under /tmp) after 10 attempts!的原因是Spark提交进程没有/tmp目录的写入权限,可通过以下方案解决:


解决方案

  • 方案1:配置Spark任务运行身份为root用户,直接获得/tmp写入权限
    在你的spark-pi.yaml的spec字段中添加driver和executor的安全上下文配置:
spec:
  driver:
    securityContext:
      runAsUser: 0
  executor:
    securityContext:
      runAsUser: 0
  • 方案2:修改Spark临时目录路径,规避/tmp权限限制
    在spec的sparkConf中指定自定义临时目录位置(Spark工作目录默认有写入权限):
spec:
  sparkConf:
    "spark.driver.extraJavaOptions": "-Djava.io.tmpdir=/opt/spark/work-dir/tmp"
    "spark.executor.extraJavaOptions": "-Djava.io.tmpdir=/opt/spark/work-dir/tmp"
    "spark.local.dir": "/opt/spark/work-dir/tmp"
  • 方案3:调整集群Pod安全策略
    如果你的EKS集群开启了Pod安全准入/ Pod安全策略,将spark-operator服务账号所在命名空间的安全限制调整为baseline级别,或给对应服务账号授予写入/tmp目录的权限。

  • 方案4:修改Spark镜像的/tmp目录权限
    如果使用自定义Spark镜像,可在Dockerfile中添加一行配置,放开/tmp目录的全局写入权限:

RUN chmod 1777 /tmp

内容的提问来源于stack exchange,提问作者Anand Jain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:15:06