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

Windows下使用Bitnami Docker Compose运行Spark作业报错

问题根源与解决方法

是,这就是问题的核心根源。Spark和Hadoop的底层逻辑会尝试获取当前运行用户的用户名,当容器内的用户ID(UID)在/etc/passwd文件中没有对应的用户条目时,就会抛出NullPointerException,进而触发Kerberos认证失败的错误,这和你测试whoami命令失败的现象完全吻合。

解决方法

下面是几种针对Bitnami Spark Docker镜像的可行修复方案:

  • 利用Bitnami镜像内置的用户配置变量
    Bitnami的Spark镜像支持通过USER_ID和GROUP_ID环境变量自动创建匹配的用户,只需在docker-compose.yml的spark-master和spark-worker服务中添加以下配置:

    services:
      spark-master:
        environment:
          - USER_ID=1000
          - GROUP_ID=1000
      spark-worker:
        environment:
          - USER_ID=1000
          - GROUP_ID=1000
    

    重启集群后,镜像会自动生成对应UID的用户条目,解决用户名缺失问题。

  • 手动在容器启动时添加用户条目
    如果上述变量不生效,可以直接在worker的启动命令中先写入用户信息到/etc/passwd,再启动Spark服务:

    services:
      spark-worker:
        command: >
          bash -c "echo 'spark:x:1000:1000::/home/spark:/bin/bash' >> /etc/passwd && /opt/bitnami/scripts/spark/run.sh"
    
  • 自定义entrypoint生成临时用户
    通过修改entrypoint,在容器启动时动态创建匹配当前UID的用户:

    services:
      spark-worker:
        entrypoint: ["bash", "-c", "useradd -u $(id -u) -o -m spark && exec /opt/bitnami/scripts/spark/run.sh"]
    

验证方法

修改配置重启集群后,进入worker容器执行whoami命令,若返回spark则说明用户配置生效,此时重新提交PySpark作业就不会再出现Kerberos相关的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:47:24