Airflow是什么
- Airflow 是 Airbnb 開發(fā)的用于工作流管理的開源項目逊躁,自帶 web UI 和調(diào)度沼瘫。它支持編程方式創(chuàng)建工作流秩霍,同時在平臺上管理和監(jiān)控工作流程的狀態(tài)款违。
- Airflow 于2016年3月加入了Apache Software Foundation的孵化計劃诸老,所以它未來的持續(xù)維護(hù)性有保障伍纫。
- 官方地址:https://github.com/apache/airflow宗雇,現(xiàn)有11318個star,732個貢獻(xiàn)者莹规,是一個熱門的開源項目赔蒲。
- 先看下這篇介紹 :淺談?wù){(diào)度工具——Airflow
為什么使用Airflow
- 智能調(diào)度
- 圖形化展示任務(wù)關(guān)系
- 程序化流水線定義
- 流水線間數(shù)據(jù)交互
- 擴(kuò)展性強(qiáng)
- 分布式,可靠性高
- 執(zhí)行方式多樣化良漱,除了定時執(zhí)行還可手動觸發(fā)舞虱,api觸發(fā)等
Airflow常用的場景
Airflow主要用于執(zhí)行預(yù)定的批處理作業(yè)。它能夠很好地管理不同的批量作業(yè)的關(guān)系母市,并給將復(fù)雜的關(guān)系圖形化展示矾兜。
- 系統(tǒng)或運用的日常維護(hù)任務(wù),批量作業(yè)
- CD部署任務(wù)患久,灰度發(fā)布椅寺,藍(lán)綠部署等
- 數(shù)據(jù)分析浑槽,數(shù)據(jù)流管道管理
一句話:任何批量任務(wù)或者需要手動去觸發(fā)執(zhí)行的任務(wù)都可以考慮一下Airflow
Airflow安裝
airlow使用ansible role方式安裝 https://github.com/idealista/airflow-role
- 安裝準(zhǔn)備軟件ansible、gcc返帕、python-devel
$ yum install ansible gcc python-devel -y
- 創(chuàng)建文件
requirements.yml
- src: idealista.airflow-role
version: 1.0.0
name: airflow
- 下載airflow role
$ ansible-galaxy install -p roles -r requirements.yml -f
- 更改role中的install.yml
將roles/airflow/tasks/install.yml中的apt
模塊改成package
模塊
將roles/airflow/tasks/install.yml中的Copy Daemon scripts中的when條件去掉
$ cat roles/airflow/tasks/install.yml
...
- name: Airflow | Installing dependencies
package:
name: "{{ item }}"
state: present
with_items: "{{ airflow_required_libs }}"
...
- name: Airflow | Copy Daemon scripts
template:
src: "{{ item.key }}.service.j2"
dest: /lib/systemd/system/{{ item.key }}.service
mode: 0644
notify: restart {{ item.key }}
with_dict: "{{ airflow_services }}"
更改role下的config.yml及templates/airflow-***.service.j2文件
將/usr/local/bin/airflow
改為/usr/bin/airflow
$ cat roles/airflow/tasks/config.yml
...
- name: Airflow | Initializing DB
shell: AIRFLOW_HOME={{ airflow_home }} airflow initdb
...
$ cat roles/airflow/templates/airflow-webserver.service.j2
...
ExecStart=/usr/bin/airflow webserver --pid /run/airflow/webserver.pid
...
目的該role使用pkg只能在Debian 或 Ubuntu 環(huán)境下安裝桐玻,更改后,可以在centos環(huán)境下安裝
- 更新ansible的hosts文件
$ cat /etc/ansible/hosts
127.0.0.1 ansible_connection=local
- 創(chuàng)建部署airflow的ansible yaml
$ cat airflow.yml
---
- hosts: all
roles:
- { role: airflow }
- 安裝airflow
$ ansible-playbook airflow.yml
執(zhí)行完以上操作后本機(jī)就安裝好了airflow荆萤,同時也配置好了service等镊靴。
- 手動初始化db
$ HOME=/etc/airflow; airflow initdb
- 更新配置/etc/airflow/airflow.cfg
$ cat /etc/airflow/airflow.cfg
...
max_threads = 1
dagbag_import_timeout = 30
...
- 啟動airflow-worker
$ systemctl restart airflow-worker
安裝好后展示
問題記錄
- 如果使用CeleryExecutor,可以安裝Celery管理器flower链韭。偏竟,默認(rèn)會安裝tornado最新版本,需要限定tornado版本需限制在4.2.0梧油。安裝完成后運行
AIRFLOW_HOME=/etc/airflow airflow flower
- 使用Mysql作為后臺數(shù)據(jù)庫時,安裝mysql擴(kuò)展請安裝mysql-python州邢。
同時broker_url設(shè)置為broker_url = mysql://airflow:airflow@localhost:3306/airflow
- 測試Airflow中的DAG時儡陨,需要在界面上將它先把狀態(tài)改為On后,再點擊運行量淌。
相關(guān)文章
Airflow中文文檔
任務(wù)調(diào)度神器 airflow 之初體驗
airflow 安裝骗村,部署,填坑
airflow 配置 CeleryExecutor
淺談?wù){(diào)度工具——Airflow
如何部署一個健壯的 apache-airflow 調(diào)度系統(tǒng)
Airflow工作模式及適用場景
淺談?wù){(diào)度工具——Airflow