k8s配置spark.kubernetes.driver.podTemplateFile不生效

问题: spark on k8s 需要配置Hosts ,指定 --conf spark.kubernetes.driver.podTemplateFile driver pod不生效,但是指定spark.kubernetes.executor.podTemplateFile pod生效

spark版本3.2.0 k8s版本1.16

提交命令:

bin/spark-submit
--master k8s://https://10.x.x.x:6443
--deploy-mode cluster
--name spark-pi
--class org.apache.spark.examples.streaming.HdfsWordCount
--conf spark.executor.instances=1
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark1
--conf spark.kubernetes.container.image=spark-example:v5
--conf spark.kubernetes.driver.podTemplateFile=/opt/spark/host_add.yaml
--conf spark.kubernetes.executor.podTemplateFile=/opt/spark/host_add.yaml
local:///opt/spark/examples/jars/spark-examples_2.12-3.2.0.jar hdfs:/x.x.x.xx:8020/jars/wordcount.txt

yaml文件:

apiVersion: v1 kind: Pod metadata: name: hostaliases-pod spec: restartPolicy: Never hostAliases: -ip: "10.x.xx.xx" hostnames: -"cdh104" containers: -name: cat-hosts image: spark-example:v5

分别查看driver/executor的yaml: kubectl get po spark-pi-1640312803968-driver -o yaml (未生效,没有hostAliases配置)

kubectl get po hdfswordcount-ad53e97dea43281c-exec-1 -o yaml (生效存在hostAliases配置)

查看相似问题,我试用了spark3.0/3.2两个版本driver pod都未生效

https://stackoverflow.com/questions/58169780/pod-template-for-specifying-tolerations-when-running-spark-on-kubernetes

展开
收起
niceboy_feng 2021-12-24 10:46:18 1131 分享 版权
阿里云 AI 助理回答

在Spark on Kubernetes环境中,配置spark.kubernetes.driver.podTemplateFilespark.kubernetes.executor.podTemplateFile是为了让Spark Driver和Executor Pods根据指定的YAML模板文件来创建。然而,你遇到的问题是Driver Pod没有应用该模板中的hostAliases配置,而Executor Pods却成功应用了。

这个问题可能与Spark版本、Kubernetes版本的兼容性或者Spark提交作业时的执行模式有关。尽管你已经尝试了不同版本的Spark,但问题依旧存在。以下是一些可能的解决方向:

  1. 检查YAML模板格式:确保你的host_add.yaml文件格式正确无误,特别是indentation(缩进),因为YAML对格式非常敏感。此外,确认hostAliases部分是否放置在正确的层级下,直接位于spec之下。

  2. Spark版本与Kubernetes版本兼容性:虽然你已尝试了不同Spark版本,但也要注意Kubernetes 1.16已经是较旧的版本,可能存在某些特性支持不完全或有已知的兼容性问题。查阅Spark官方文档或社区讨论,看是否有针对特定K8s版本的已知问题或建议。

  3. Spark配置参数:确认是否还有其他Spark配置参数可能影响到Pod模板的应用。例如,检查是否有可能覆盖默认配置的其他参数设置。

  4. 日志分析:查看Spark Driver的日志,可能会有错误信息或警告提示为何driver pod的podTemplateFile未生效。这可以通过Spark UI或者直接从Kubernetes集群中获取日志来完成。

  5. 使用Spark Operator:考虑使用Spark Operator来管理Spark应用,它提供了更高级的配置选项和更好的Kubernetes集成,可能能绕过当前遇到的问题。

  6. 手动验证YAML模板:独立于Spark之外,直接使用kubectl命令根据你的host_add.yaml模板创建一个Pod,验证YAML模板本身是否有效且能够正确应用hostAliases配置。

  7. 社区和官方资源:鉴于你在Stack Overflow上找到了类似问题但未找到解决方案,可以尝试在Spark用户邮件列表或Spark的GitHub仓库中开issue,寻求更专业的帮助。

如果以上步骤都无法解决问题,可能需要深入研究Spark源码或等待相关组件的更新来修复潜在的bug。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

阿里云EMR是云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、Flink、Presto、ClickHouse、StarRocks、Delta、Hudi等开源大数据计算和存储引擎,计算资源可以根据业务的需要调整。EMR可以部署在阿里云公有云的ECS和ACK平台。

还有其他疑问?
咨询AI助理