概述
Airflow 是一個我們正在用的工作流排程器,相對於傳統的crontab任務管理,Airflow很好的為我們理清了複雜的任務依賴關係、監控任務執行的情況。我們喜歡它是因為它寫程式碼太容易了,也便於除錯、維護和繼承重用,而不是像xml那樣的配置檔案用來描述DAG。
通過SQL和HQL的臨時查詢,我們還可以快速生成前端圖表,而且順帶連資料的API介面也都生成了,這幾乎要讓的Web開發工程師失業了。
當然Airflow還支援移動端顯示,只要收藏頁面,我們就可以實現”移動監控”。
功能總覽
1. 任務排程系統:DAGs
- 強大的任務排程與管理
- 排程程式碼一覽無餘
2. 資料剖析
- 配置 SQL 語句,以及作圖的option
- 圖表自動生成
- API資料自動生成
將當前的圖表地址 http://localhost:8080/admin/airflow/chart?chart_id=2&iteration_no=40
替換成 http://localhost:8080/admin/airflow/chart_data?chart_id=2&iteration_no=40
即可返回json資料
如果對 API資料自動生成不夠滿意,還可以輕鬆地對原始碼自行定製。
3. 監控管理
- 任務日誌
- 任務監控
- 排程配置化
4. 許可權管理
- 系統配置
- 使用者管理
- 資料來源管理
實戰
步驟一:安裝Airflow
1 |
docker pull airflow |
步驟二:修改預設路徑
這裡如果不修改路徑,預設的配置就是 ~/airflow
臨時修改 AIRFLOW_HOME 環境變數, 這裡的 /home/airflow
可以替換成你想要的資料夾目錄
1 |
export AIRFLOW_HOME=/home/airflow |
永久修改環境變數
1 2 |
echo "export AIRFLOW_HOME=/home/airflow" >> /etc/profile source /etc/profile |
系統預設的配置檔案是從 airflow包的configuration.py
檔案中獲取的,在設定了路徑和airflow.cfg
之後,配置將由airflow.cfg
所替代。
步驟三:修改預設資料庫
找到配置檔案
1 |
vi /home/airflow/airflow.cfg |
修改sql配置
1 |
sql_alchemy_conn = mysql://root:FinanceR@localhost:3306/airflow |
注意到,之前使用的 mysql+driver://root:FinanceR@localhost:3306/airflow
的方式是行不通的。
初始化伺服器的資料庫
1 |
airflow initdb |
1 |
airflow webserver |
就可以開啟後臺管理介面,預設訪問localhost:8080
即可。
步驟四:修改資料來源配置
通過create
按鈕,新增相應的引數
步驟五:解決中文字符集顯示問題
注意到 airflow 的所有.py檔案都宣告瞭 utf-8 字符集
1 |
# -*- coding: utf-8 -*- |
如果需要顯示中文,需要在extra
選項中新增
{"charset":"utf8"}
的配置