通过气流计划在Kubernetes上运行的Spark作业

时间:2019-10-24 09:28:29

标签: apache-spark kubernetes airflow

我有一个通过Kubernetes pod运行的火花作业。到目前为止,我一直使用Yaml文件手动运行我的作业。 现在,我想通过气流计划我的火花作业。 这是我第一次使用气流,无法弄清楚如何在气流中添加Yaml文件。 据我了解,我可以通过Airflow中的DAG安排我的工作。 dag的例子是这样的:

from airflow.operators import PythonOperator
from airflow.models import DAG
from datetime import datetime, timedelta

args = {'owner':'test', 'start_date' : datetime(2019, 4, 3), 'retries': 2, 'retry_delay': timedelta(minutes=1) }
dag = DAG('test_dag', default_args = args, catchup=False)

def print_text1():
    print("hell-world1")

def print_text():
    print('Hello-World2')

t1 = PythonOperator(task_id='multitask1', python_callable=print_text1, dag=dag)
t2 = PythonOperator(task_id='multitask2', python_callable=print_text, dag=dag)
t1 >> t2

在这种情况下,一旦我播放DAG,上述方法将在其他方法之后执行。 现在,如果我要执行火花提交作业,该怎么办? 我正在使用Spark 2.4.4

1 个答案:

答案 0 :(得分:0)

气流具有operators的概念,代表气流任务。在您的示例中,使用PythonOperator,它仅执行Python代码,并且很可能不会执行您感兴趣的代码,除非您在Python代码中提交Spark作业。您可以使用多种运算符:

  • BashOperator,它将为您执行给定的bash脚本。您可以直接使用kubectlspark-submit
  • SparkSubmitOperator,是调用spark-submit的特定运算符
  • KubernetesPodOperator,为您创建Kubernetes吊舱,您可以直接使用它启动您的Driver吊舱
  • 混合溶液,例如。 HttpOperator + Livy on Kubernetes,您在Kubernetes上启动了Livy服务器,该服务器充当Spark Job Server,并提供了由Airflow HttpOperator调用的REST API。

注意:对于每个运营商,您需要确保您的Airflow环境包含执行所有必需的依赖项以及配置为访问必需服务的凭据。

还可以引用现有线程: