跳至主要内容

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。