Apache spark 如何使用气流重新启动失败的结构化流媒体spark作业?
我需要在AWS EMR中运行结构化流媒体spark作业。作为弹性要求,如果spark作业由于某些原因失败,我们希望可以在EMR中重新创建spark作业。与ECS中的任务编排类似,如果健康检查失败,可以重新启动任务。然而,EMR更多的是一个计算引擎,而不是编排系统 我正在寻找一些大数据工作流编排工具,例如Airflow。但是,它不能支持DAG中的循环。如何实现以下功能 步进加法器(EmrAddStepsOperator)>>步进检测器(EmrStepSensor)>>步进加法器(EmrAddStepsOperator)Apache spark 如何使用气流重新启动失败的结构化流媒体spark作业?,apache-spark,airflow,amazon-ecs,amazon-emr,Apache Spark,Airflow,Amazon Ecs,Amazon Emr,我需要在AWS EMR中运行结构化流媒体spark作业。作为弹性要求,如果spark作业由于某些原因失败,我们希望可以在EMR中重新创建spark作业。与ECS中的任务编排类似,如果健康检查失败,可以重新启动任务。然而,EMR更多的是一个计算引擎,而不是编排系统 我正在寻找一些大数据工作流编排工具,例如Airflow。但是,它不能支持DAG中的循环。如何实现以下功能 步进加法器(EmrAddStepsOperator)>>步进检测器(EmrStepSensor)>>步进加法器(EmrAddSte
有什么建议可以提高这种工作层面的弹性?欢迎评论 Apache Spark(使用Spark submit提交的作业)已经涵盖了一些恢复能力,但是,当您想要与不同的进程交互时,如果不是使用Spark,则气流可能是一个解决方案。在您的情况下,
传感器
可以帮助检测是否发生了某种情况。基于此,您可以在DAG中做出决定。下面是一个简单的HttpSensor
,它等待批处理作业以查看是否成功完成
wait_batch_to_finish = HttpSensor(
http_conn_id='spark_web',
task_id="wait_batch_to_finish",
method="GET",
headers={"Content-Type": "application/json"},
endpoint="/json",
response_check=lambda response: check_spark_status(response, "{{ ti.xcom_pull('batch_intel_task')}}"),
poke_interval=60,
dag=dag
)
非常感谢。与ECS的healthcheck非常相似。对于ApacheSpark提供的弹性,您是否参考了Spark submit中的maxAttempts之类的东西,它允许在作业失败时重试?