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

标签 apache-spark kubernetes openshift airflow kubernetes-pod

我正在尝试设置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/

相关文章:

mysql - 如何在 OpenShift 中使用 NodeJS 服务器连接到 MySQL?

scala - Spark DataFrame 过滤器无法按预期与随机一起工作

python-3.x - 如何在pyspark函数中使用全局变量

python - pyspark 中数学函数和 numpy 函数的区别

azure - 使用私有(private)注册表中的镜像进行 k8s 部署

Kubernetes StatefulSets 和 livenessProbes

openshift - OKD(OpenShift Origin)可以安装在RHEL 8上吗?

scala - 找不到:在spark scala中键入MultipleTextOutputFormat

amazon-web-services - Kubernetes 和 AWS : Set LoadBalancer to use predefined Security Group

linux - 我无法获得适用于 linux (ubuntu) 的 Openshift oc 命令行工具 32 位版本