| Invalid Date
字数 0阅读时长 1 分钟
Column
Dec 23, 2021 04:55 PM
Column 1
Description
Apache Airflow 是一個由 Airbnb 開源的工作流程管理平台,普遍被使用於 ETL (extract, transform, load ) 或 data cleaning 等數據處理 pipeline
Field
Data engineer
Status
Done
 
 
notion image
 
 
 

簡介

What's Airflow

Apache Airflow 是一個由 Airbnb 開源的工作流程管理平台,普遍被使用於 ETL (extract, transform, load ) 或 data cleaning 等數據處理 pipeline
圖片為 Airflow 的 Web UI
圖片為 Airflow 的 Web UI
 

組成

在 Airflow 每個工作流程被定義為一個 有向無循環圖 Directed Acyclic Graph(以下簡稱為 DAG),每個 DAG 包含了各種工作的集合,而 DAG 定義了工作和工作之間的關係、執行順序等
每個綠色方框為一個 Task,許多Task 依照彼此間不同的相依性連結起來 即為一個DAG
每個綠色方框為一個 Task,許多Task 依照彼此間不同的相依性連結起來 即為一個DAG
 

優點 (相對於其他排程器)

  • Backfilling:可針對特定區間做資料回補
  • 模組化:Task 可以被重複使用,也可以組合成不同的工作流程
  • 支援單個任務重跑:一個工作流程會包含很多不同的任務,有些流程如果失敗了不需要整個重啟,只需執行特定任務即可,測試起來也較為方便
  • Web UI:直觀的UI可以操作、監控執行狀態和 logs 等資訊
 

架構

接下來可以看一下 Airflow 的架構圖,主要分成四個部分 WebServer, Scheduler, Executor 以及 Worker,我們分別來看看這四個 Components。
 
notion image
接下來可以看一下 Airflow 的架構圖,主要分成四個部分 WebServer, Scheduler, Executor 以及 Worker,我們分別來看看這四個 Components。

WebServer

WebServer 顧名思義,就是提供網頁功能的伺服器,WebServer 是可以單獨運作的,所以可以被分開部署,但如果只有 WebServer 而沒有下面三個 Components,也就只能查看 DAG、Task 及 Connections 等一些資訊而已。

Scheduler

Scheduler 負責排程,這裡的排程並不是直接指定哪個 Task 給哪個 Worker 運行,而是從 Metadata Database 中找尋 DAG 跟 Task 的狀態,並判斷是否將哪些 Task 傳送給 Executor 安排執行。

Executor

Executor 是一個 Queue Process,從 Scheduler 接收要執行的 Task,並將這些資訊存進 Queue,並從 Queue 中取出 Task 安排給閒置的 Worker 執行。

Worker

Worker 負責實際執行Task。
 
配合 Task 狀態來看
  • No status: 當我們手動 Trigger DAG 或是 Scheduler 排程 DAG 後,這時 DAG 的 Task 會先被創造成 Task Instance 並寫進 Database ,這時 Task 的狀態就是 no status。
  • Scheduled: 當 Scheduler 確認某個 Task 需要被執行時,這時 Task 的狀態就會變成 Scheduled,像是當我們使用 BranchPythonOperator,執行結束後,Scheduler 會就依照執行的結果決定下一個 Task,這時那個 Task 的狀態就會是 Scheduled。
  • Queued: 當 Scheduler 把確定要執行的 Task 發送給 Executor 時,相當於把 Task 放入 Queue 裡,所以 Task 的狀態會變成 Queued。
  • Running: 當 Executor 把 Task 發送給閒置的 Worker 時,Task 的狀態就會變成 Running。
  • Success/ Failed: 最後依據 Workere 執行的結果,Executor 會把 Task 標示成 Success 或是 Failed。
notion image
 
 
Loading...
目录