簡體   English   中英

如何使用 Airflow 重新啟動失敗的結構化流式 Spark 作業?

[英]How to use Airflow to restart a failed structured streaming spark job?

我需要在 AWS EMR 中運行結構化流式 Spark 作業。 作為彈性要求,如果 Spark 作業由於某些原因失敗,我們希望可以在 EMR 中重新創建 Spark 作業。 類似於 ECS 中的任務編排,如果健康檢查失敗,可以重新啟動任務。 然而,EMR 更像是一個計算引擎而不是編排系統。

我正在尋找一些大數據工作流編排工具,例如Airflow。 但是,它不能支持 DAG 中的循環。 如何實現以下一些功能?

step_adder (EmrAddStepsOperator) >> step_checker (EmrStepSensor) >> step_adder (EmrAddStepsOperator)。

提高這種工作水平彈性的建議方法是什么? 歡迎任何意見!

Apache Spark(使用 spark-submit 提交的作業)已經涵蓋了一些彈性,但是當您想要與不使用 Spark 的不同進程交互時,Airflow 可能是一個解決方案。 在您的情況下, Sensor可以幫助檢測是否發生了某種情況。 基於此,您可以在 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
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM