Apache Airflow 是一個非常棒的開源工作流程協調工具,並由活躍的社群支持。它提供了開箱即用的排程工作流程所需的所有功能。此外,DAG 可以輕鬆地用 Python 編寫。回填歷史資料和根據配置重試失敗的任務有助於減輕任何上游問題,並更好地處理延遲到達的資料。

Suganya Varadarajan

問題是什麼?

主要的挑戰是缺乏標準化的 ETL 工作流程協調工具。目前使用內部建置的基於 PowerShell 和 Python 的 ETL 框架來排程和執行分析工作負載。然而,沒有 Web UI 可以讓我們監控這些工作流程,並且維護此框架需要額外的工作。這些基於外部依賴關係的排程任務不太適合現代大數據平台及其複雜的工作流程。雖然我們針對某些工作流程試驗了 Apache Oozie,但它無法正確處理失敗的任務。對於延遲資料到達的情況,這些工具不夠靈活,無法強制重試失敗的任務。

Apache Airflow 如何幫助解決這個問題?

Apache Airflow 幫助我們以程式化的方式在 Python 中控制我們的工作流程,方法是在 Web UI 中設定任務依賴關係並監控每個 DAG 內的任務。Airflow 允許我們查看這些複雜工作流程中每個任務的詳細日誌。它內建了 Hive、MySQL、Google Cloud APIs 和其他連接器。它還讓我們可以靈活地使用 JDBCHook 和 JDBCOperator 創建我們自己的自訂連接器(例如,用於 Netezza 資料庫),或擴展現有的運算子,例如 Hive Operator。對於複雜的工作流程,我們可以透過僅在平日運行某些任務來使用 Airflow 設計 ETL。Airflow 的一個強大功能是它對回填資料的支援:當我們向 DAG 添加新任務時,我們可以僅針對該任務進行回填。Airflow 還允許我們設定外部 DAG 依賴關係,以及在資料庫表上使用 SQLSensor 等功能來運行特定任務。

結果是什麼?

我們尋求使用 Apache Airflow 運行具有 DAG 的並行任務和並行 DAG,以期更快地運行我們的整個 ETL 工作負載。Airflow 幫助我們的分析師和開發人員專注於分析,而不是費力構建 ETL 框架來排程和監控我們的應用程式。Airflow 促進了 ETL 無縫遷移到 Google Cloud Platform (GCP),因為 GCP 維護了 Cloud Composer,這是一個 Apache Airflow 託管服務。