返回

在 Windows 上使用 Bitnami Docker Compose 运行 Spark 作业时遇到 Kerberos 验证错误?试试这 5 个步骤

windows

在 Windows 上使用 Bitnami Docker Compose 排除 Spark 作业运行错误

问题

在 Windows 上使用 Bitnami Docker Compose 运行 Spark 作业时,您可能遇到以下错误:

org.apache.hadoop.security.KerberosAuthException: failure to login: javax.security.auth.login.LoginException: java.lang.NullPointerException: invalid null input: name

原因分析

此错误通常是由于 Docker 中的用户 ID 缺少名称造成的。

解决方案

步骤 1:检查用户 ID

在 Docker Desktop 中,前往“设置”>“资源”>“高级”>“Linux Docker 主机配置”。确保“用户名”字段中填写了用户名。如果没有,请输入一个用户名。

步骤 2:重新生成 Docker Compose 文件

编辑 docker-compose.yml 文件,将以下内容添加到 services.worker 部分:

user: <用户名>

<用户名> 替换为您在步骤 1 中添加的用户名。

步骤 3:重新启动 Docker Compose

停止并删除所有正在运行的容器:

docker-compose down

重新启动 Docker Compose:

docker-compose up -d

步骤 4:提交作业

使用 pyspark 提交您的作业,指定端口 7077:

from pyspark.sql import SparkSession

spark = SparkSession \
    .builder \
    .master("spark://<master-hostname>:7077") \
    .appName("My Application") \
    .getOrCreate()

# 编写和提交作业代码...

其他提示

  • 确保 Spark 已配置为使用正确的 Kerberos 配置。
  • 如果问题仍然存在,请尝试使用 --deploy-mode client 选项提交作业。
  • 检查是否正确设置了环境变量,例如 SPARK_HOMEHADOOP_HOME

常见问题解答

1. 我在哪里可以找到 Bitnami Docker Compose 的文档?

官方文档位于 Bitnami 网站

2. 如何配置 Spark 的 Kerberos 安全性?

有关详细说明,请参阅 Spark 文档

3. 为什么我需要重新生成 Docker Compose 文件?

重新生成文件会更新 Docker Compose 配置,包括新添加的用户 ID。

4. --deploy-mode client 选项有什么作用?

此选项会将作业驱动程序运行在客户端,而不是在 Spark 集群中。它通常用于调试和开发目的。

5. 如果我仍然遇到问题,我该怎么办?

如果您遵循了所有步骤但仍然遇到问题,请尝试查看 Spark 社区论坛Bitnami 社区论坛