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

在Kubernetes集群模式提交Spark任务时遭遇KerberosAuthException

问题:Spark on Kubernetes集群模式下Executor Pod触发Kerberos认证异常

在AWS Kubernetes集群中,使用Bitnami Spark 3.5.3版本提交集群模式任务时,Executor Pod出现以下认证异常:

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

版本详情:

  • spark version: 3.5.3
  • Scala version 2.12.18
  • OpenJDK 64-Bit Server VM, 17.0.12

提交命令:

spark-submit --class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.executor.deleteOnTermination=false \
--conf spark.kubernetes.maxFailedPods=0 \
--conf spark.executor.instances=1 \
--conf spark.executor.memory=2g \
--conf spark.executor.cores=1 \
--conf spark.kubernetes.namespace=test-namespace \
--conf spark.kubernetes.container.image=bitnami/spark:latest \
--conf spark.jars=s3a://test-bucket/spark/jars/*/spark-examples_2.12-3.5.3.jar \
--conf spark.kubernetes.file.upload.path=s3a://test-bucket/spark/jars \
--master k8s://https://xxxxxxx-api-server:443 \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.5.3.jar

Driver Pod已正常创建,但Executor Pod触发上述Kerberos认证异常,未配置Kerberos环境,需跳过Kerberos认证流程并成功提交任务。


解决方案

该问题源于Spark依赖的Hadoop客户端默认尝试启用Kerberos认证(尤其是针对S3A存储路径),但未配置有效认证信息导致报错。可通过以下配置强制关闭Kerberos认证逻辑:

  1. 添加Hadoop Kerberos禁用配置
    在spark-submit命令中增加以下--conf参数,直接关闭Kerberos认证:
--conf spark.hadoop.hadoop.security.authentication=simple \
--conf spark.hadoop.fs.s3a.authentication.type=simple \
--conf spark.hadoop.fs.s3a.kerberos.enabled=false
  1. 修正S3路径与权限配置
  • 移除spark.jars中的通配符*,指定具体Jar包路径,避免路径解析异常:
    --conf spark.jars=s3a://test-bucket/spark/jars/spark-examples_2.12-3.5.3.jar
    
  • 确保Kubernetes ServiceAccount已绑定具备S3读写权限的IAM角色(通过IRSA机制),并在提交命令中指定该ServiceAccount:
    --conf spark.kubernetes.driver.serviceAccountName=your-sa-name \
    --conf spark.kubernetes.executor.serviceAccountName=your-sa-name
    
  1. 完整修正后的提交命令
    整合上述配置后的完整命令示例:
spark-submit --class org.apache.spark.examples.SparkPi \
--conf spark.kubernetes.executor.deleteOnTermination=false \
--conf spark.kubernetes.maxFailedPods=0 \
--conf spark.executor.instances=1 \
--conf spark.executor.memory=2g \
--conf spark.executor.cores=1 \
--conf spark.kubernetes.namespace=test-namespace \
--conf spark.kubernetes.container.image=bitnami/spark:latest \
--conf spark.jars=s3a://test-bucket/spark/jars/spark-examples_2.12-3.5.3.jar \
--conf spark.kubernetes.file.upload.path=s3a://test-bucket/spark/jars \
--conf spark.hadoop.hadoop.security.authentication=simple \
--conf spark.hadoop.fs.s3a.authentication.type=simple \
--conf spark.hadoop.fs.s3a.kerberos.enabled=false \
--conf spark.kubernetes.driver.serviceAccountName=your-sa-name \
--conf spark.kubernetes.executor.serviceAccountName=your-sa-name \
--master k8s://https://xxxxxxx-api-server:443 \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.5.3.jar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:01:05