gpt4 book ai didi

apache-spark - Airflow -如何使用不退出的命令运行KubernetesPodOperator

转载 作者:行者123 更新时间:2023-12-02 12:02:18 24 4
gpt4 key购买 nike

我正在尝试设置DAG,它将在第一个任务中创建一个Spark集群,在临时任务中将Spark应用程序提交到该集群,最后在最后一个任务中拆除Spark集群。

我现在正在尝试的方法是使用KubernetesPodOperators创建Spark Master和Worker容器。问题是他们运行了一个不会退出的spark守护程序。 pods 上调用的命令永不退出的事实意味着这些任务在运行阶段会卡在气流中。因此,我想知道是否有一种方法可以运行spark守护程序,然后继续执行DAG中的下一个任务?

最佳答案

The approach I'm attempting right now is to use KubernetesPodOperators to create Spark Master and Worker pods.



Apache Spark provides working support用于在Kubernetes集群中执行作业。它提供了一个驱动程序,该驱动程序能够启动Pod中的执行程序来运行作业。

您无需直接在Airflow中创建Master和Worker pods 。

而是构建一个 Docker image containing Apache Spark with Kubernetes backend
项目中提供了一个 example Dockerfile

然后通过使用 KubernetesPodOperatorsubmit the given jobs基于该镜像发送到容器中的集群。以下示例作业是从Apache Spark中提供的文档改编而成的,以将Spark作业直接提交到Kubernetes集群。

from airflow.operators.kubernetes_pod_operator import KubernetesPodOperator


kubernetes_full_pod = KubernetesPodOperator(
task_id='spark-job-task-ex',
name='spark-job-task',
namespace='default',
image='<prebuilt-spark-image-name>',
cmds=['bin/spark-submit'],
arguments=[
'--master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port>',
'--deploy-mode cluster',
'--name spark-pi',
' --class org.apache.spark.examples.SparkPi',
'--conf spark.executor.instances=5',
'--conf spark.kubernetes.container.image=<prebuilt-spark-image-name>',
'local:///path/to/examples.jar'
],
#...
)

关于apache-spark - Airflow -如何使用不退出的命令运行KubernetesPodOperator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59756357/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com