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

Spark on Kubernetes中krb5与Hadoop ConfigMap仅挂载至Driver Pod而非Executor Pod的问题咨询

问题分析与解决方案

你碰到的这个情况不是Spark的预期行为——问题出在你只配置了Driver端的Kerberos/Hadoop ConfigMap挂载参数,漏掉了Executor对应的专属配置项。

Spark 3.0.x在Kubernetes环境下,spark.kubernetes.kerberos.*和spark.kubernetes.hadoop.*这类参数仅作用于Driver Pod;如果要让Executor Pod也挂载对应的ConfigMap和Kerberos凭证,需要添加带executor前缀的配置参数:

1. 补充Executor的ConfigMap挂载配置

需要添加以下两个核心配置,和你给Driver设置的ConfigMap名称保持一致即可:

  • spark.kubernetes.executor.kerberos.krb5.configMapName:指定要挂载到Executor的krb5配置ConfigMap名称(对应你用的hadoop-kerberos-config)
  • spark.kubernetes.executor.hadoop.configMapName:指定要挂载到Executor的Hadoop配置ConfigMap名称(对应你用的spark-hadoop-config)

2. 配置Executor的Kerberos票据获取

如果需要Executor自动获取Kerberos票据来访问数据源,还需要补充以下配置:

  • spark.kubernetes.executor.kerberos.keytab.secretName:存储Kerberos Keytab的Secret名称(对应你Driver用的kerberos-keytab)
  • spark.kubernetes.executor.kerberos.principal:Kerberos认证的主体名称(比如spark@YOUR-REALM.COM)
  • spark.executorEnv.KRB5_CONFIG:指定Executor进程读取krb5配置的路径,和挂载路径保持一致(比如/etc/krb5.conf)

完整配置示例(spark-submit参数)

spark-submit \
  --conf spark.kubernetes.kerberos.krb5.configMapName=hadoop-kerberos-config \
  --conf spark.kubernetes.hadoop.configMapName=spark-hadoop-config \
  --conf spark.kubernetes.kerberos.keytab.secretName=kerberos-keytab \
  --conf spark.kubernetes.kerberos.principal=your-principal@YOUR-REALM.COM \
  # Executor专属配置
  --conf spark.kubernetes.executor.kerberos.krb5.configMapName=hadoop-kerberos-config \
  --conf spark.kubernetes.executor.hadoop.configMapName=spark-hadoop-config \
  --conf spark.kubernetes.executor.kerberos.keytab.secretName=kerberos-keytab \
  --conf spark.kubernetes.executor.kerberos.principal=your-principal@YOUR-REALM.COM \
  --conf spark.executorEnv.KRB5_CONFIG=/etc/krb5.conf \
  # 其他作业部署参数
  --deploy-mode cluster \
  --class com.yourcompany.YourJobClass \
  local:///path/to/your/job.jar

验证方法

提交作业后,查看Executor Pod的描述信息:

kubectl describe pod <executor-pod-name>

在Mounts和Volumes部分应该能看到hadoop-properties、krb5-file以及kerberos-keytab的挂载记录,和Driver Pod的对应部分一致。

这个问题的核心是Spark 3.0.x将Driver和Executor的Kerberos配置做了分离,很多人容易忽略Executor端的专属参数,导致只有Driver能正常获取Kerberos凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:12:40