天天看點

airflow配置資訊

airflow 1.10+安裝

本次安裝airflow版本為1.10+,其需要依賴python和db,本次選擇的db為mysql。

本次安裝元件及版本如下:airflow == 1.10.0

python == 3.6.5

mysql == 5.7

整體流程

建表

安裝

配置

運作

配置任務

庫名為airflow

'create database airflow;'

建使用者

使用者名為airflow,并且設定所有ip均可以通路。

create user 'airflow'@'%' identified by 'airflow';

create user 'airflow'@'localhost' identified by 'airflow';

使用者授權

這裡為建立的airflow使用者授予airflow庫的所有權限

這裡通過 virtualenv 進行安裝。

----- 通過virtualenv安裝

$ mkdir /usr/local/virtual_env && cd /usr/local/virtual_env # 建立目錄

$ virtualenv --no-site-packages airflow --python=python # 建立虛拟環境

$ source /usr/local/virtual_env/airflow/bin/activate # 激活虛拟環境

----- 安裝指定版本或者預設

$ pip install apache-airflow -i ​​https://pypi.douban.com/simple​​

在安裝完一堆的依賴後,就需要配置 airflow_home 環境變量,後續的 dag 和 plugin 都将以該目錄作為根目錄查找,如上,可以直接設定為 /tmp/project 。

報錯

error: flask 1.1.1 has requirement jinja2>=2.10.1, but you'll have jinja2 2.10 which is incompatible.

error: flask 1.1.1 has requirement werkzeug>=0.15, but you'll have werkzeug 0.14.1 which is incompatible.

執行:pip3 install -u flask1.0.4

執行:pip3 install -u pika0.13.1

重新執行 :pip install apache-airflow -i ​​https://pypi.douban.com/simple​​

----- 設定環境變量

(airflow) $ export airflow_home=/tmp/airflow

----- 檢視其版本資訊

(airflow) $ airflow version

____ |( )_______ / /________ __

____ /| |_ /__ / / __ / __ _ | /| / /

___ ___ | / _ / _ / _ / / // / |/ |/ /

// |// // // // _/____/|__/

v1.8.0

執行了上述的指令後,會生成 airflow.cfg 和 unittests.cfg 兩個檔案,其中前者是一個配置檔案 。

----- 修改airflow db配置

pip install "apache-airflow[mysql]"

這裡可以簡單說下,airflow依賴的其他元件均可以此方式安裝。在之後安裝password元件同樣是通過此方式。

修改airflow db配置

修改${airflow_home}/airflow.cfg

sql_alchemy_conn = mysql+mysqldb://airflow:airflow@localhost:3306/airflow

參數的格式為mysql://帳号:密碼@ip:port/db

初始化db

建立airflow依賴的表。

本文采用的使用者認證方式為password方式,其他方式如ldap同樣支援但是本文不會介紹。筆者在安裝時實驗過ldap方式但是未成功過。

此配置設定的是dag的task失敗或者重試時發送郵件的發送者。配置如下:

設定executor

修改:airflow.cfg

在 airflow 中,每個節點都是一個任務,可以是一條指令行 (bashoperator),可以是一段 python 腳本 (pythonoperator) 等等,然後這些節點根據依賴關系構成了一條流程,一個圖,稱為一個 dag 。

預設會到 ${airflow_home}/dags 目錄下查找,可以直接在該目錄下建立相應的檔案。

如下是一個簡單的示例。

該檔案建立一個簡單的 dag,隻有三個運算符,兩個 baseoperator ,也就是執行 bash 指令分别列印日期以及休眠 5 秒;另一個為 pythonoperator 在執行任務時調用 print_hello() 函數。

檔案建立好後,放置到 ${airflow_home}/dags,airflow 自動讀取該dag。

----- 測試是否正常,如果無報錯那麼就說明正常

$ python /tmp/project/dags/hello_world.py