Подход, который я сейчас пытаюсь использовать, заключается в использовании KubernetesPodOperators для создания модулей Spark Master и Worker.
Apache Spark обеспечивает рабочую поддержку для выполнения рабочие места в кластере Kubernetes. Он предоставляет драйвер, способный запускать исполнителей в модулях для выполнения заданий.
Вам не нужно создавать Master и Worker стручков непосредственно в Airflow.
Скорее создайте Docker изображение, содержащее Apache Искра с бубендом Kubernetes . В проекте предоставляется пример Dockerfile .
Затем отправляет заданные задания в кластер в контейнере на основе этого образа с помощью KubernetesPodOperator
. Следующий пример задания адаптирован из документации, предоставленной в Apache 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'
],
#...
)