Airflow 入門與定位說明
Apache Airflow 是一套以 Python 為主的工作流程排程與資料管線編排平台,適合用來管理批次任務與 ETL/ELT 流程。它的核心概念是以「程式碼」描述工作流程(DAG),並由排程器與執行器負責依序執行、重試與監控。
Airflow 在整體架構中的角色
在現代軟體與資料平台中,Airflow 通常扮演:
- 資料工作流編排中心:串接多個資料來源、轉換與載入步驟。
- 批次任務排程器:定時執行報表、批次同步、模型訓練等工作。
- 平台整合器:透過各種 Operator 與 Hook,整合雲服務、資料庫、Kubernetes、Spark 等元件。
換句話說,Airflow 不直接對使用者提供 API 或 UI 功能,而是站在「後台」協調各種任務,確保每天/每小時需要執行的流程能可靠完成。
核心概念簡介
- DAG(Directed Acyclic Graph):
一個 DAG 代表一條工作流程,裡面包含多個任務(Tasks)以及它們之間的依賴關係,且不能形成循環。 - Task & Operator:
Task 是可執行單位,Operator 則是任務類型的實作,例如:PythonOperator:執行 Python 函式BashOperator:執行 Shell 指令- 各種資料庫、雲端服務、Kubernetes、Spark 等 Operator
- Scheduler / Executor:
Scheduler 根據排程規則(例如每天 01:00)與依賴狀態決定何時觸發任務;Executor 負責實際執行任務,可以在本機、Celery、Kubernetes 等環境中運作。 - Web UI:
提供 DAG 圖形檢視、執行歷史、Log 查詢、手動觸發與暫停/啟用等管理操作。
典型使用情境
- 每日匯總交易資料並產生報表供 BI 工具使用
- 週期性同步第三方 API 資料至自家資料庫或數據倉儲
- 串接多步驟機器學習流程(資料準備 → 訓練 → 評估 → 部署)
- 串接 Kubernetes 任務(例如啟動容器進行某些批次處理)
和其他主題的關係
- 與 Kubernetes:
可將 Airflow 部署在 Kubernetes 上,或利用 KubernetesPodOperator 將任務以 Pod 形式執行,達到資源隔離與彈性伸縮。 - 與 Superset / BI 工具:
Airflow 負責「先準備好整理過的資料表」,Superset 則建立 Dashboard 與視覺化分析。 - 與 DevOps / 數據平台:
DAG 以程式碼管理,可搭配 Git、CI/CD 等流程,將資料工作流也納入版本控制與部署流程。
接下來的文件會逐步介紹 Airflow 的安裝部署、基本 DAG 寫法、常見 Operator 與實務範例,協助你在實際專案中導入與維運 Airflow。
- DAG(Directed Acyclic Graph)
一個 DAG 就代表一條「工作流程」,裡面定義一組有順序與依賴關係的任務(Tasks),不能有循環。 - Task
DAG 中的最小執行單位,例如:跑一個 Python 函式、執行一段 SQL、啟動一個 Spark Job。 - Operator
對「某種任務類型」的封裝,例如:PythonOperator:執行 Python 函式BashOperator:執行 Bash 指令- 各種資料庫、雲服務、Spark、Kubernetes 等整合 Operator
- Scheduler & Executor
Scheduler 根據時間排程與依賴狀態決定何時觸發任務;Executor 則負責實際在機器或叢集上執行(例如 Local、Celery、Kubernetes Executor)。 - Web UI
提供可視化介面檢視 DAG、執行歷史、Log、重試、手動觸發等。
6.2 常見使用場景
- 每日產製營運報表或數據匯出
- 從多個資料來源擷取資料,轉換後寫入數據倉儲(如 BigQuery、Snowflake、Redshift)
- 排程機器學習訓練與批次預測任務
- 串接多個外部 API 的批次同步流程
6.3 在整體架構中的角色
在整體軟體架構中,Airflow 通常扮演「資料與批次流程的控制中心」:
- 和 應用系統 配合:應用系統負責即時 API / 前台,Airflow 負責背景的批次計算與資料管線。
- 和 Kubernetes 配合:可以將任務跑在 Kubernetes 上(例如 KubernetesPodOperator),達到彈性伸縮與資源隔離。
- 和 Superset 或其他 BI 工具 配合:Airflow 負責事先準備好「乾淨且彙總後」的資料表,讓 Superset 等工具用來建立 Dashboard。