Воздушный поток - Как запустить KubernetesPodOperator с несходящей командой - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь настроить группу обеспечения доступности баз данных, которая создаст Spark Cluster в первой задаче, передаст искровые приложения в кластер в промежуточных задачах и, наконец, демонтирует Spark Cluster в последней задаче.

Подход, который я сейчас пытаюсь использовать, заключается в использовании KubernetesPodOperators для создания модулей Spark Master и Worker. Проблема в том, что они запускают демона искры, который никогда не выходит. Тот факт, что команда, вызываемая в модуле, никогда не завершается, означает, что эти задачи застряли в потоке воздуха в рабочей фазе. Итак, мне интересно, есть ли способ запустить демон spark, а затем перейти к следующим задачам в DAG?

1 Ответ

0 голосов
/ 16 января 2020

Подход, который я сейчас пытаюсь использовать, заключается в использовании 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'
    ],
    #...
)
...