Airflow 安装

airflow 测试安装

系统环境

centos 7

python 2.7.15

apache-airflow 1.10.0

yum install -y bzip2
yum install -y gcc-c++
yum install -y mysql-devel

创建系统用户

检查是否存在

id airflow

存在则删除

userdel -r airflow
groupdel airflow

创建用户

groupadd airflow
useradd -g airflow airflow
passwd airflow

切换用户

su - airflow

安装 python 环境

为避免编译麻烦及可能对系统环境产生影响,此处使用 miniconda

pip install configparser

安装 airflow

配置 airflow 环境变量

cd
vi .bashrc
----
export AIRFLOW_HOME=~/airflow
export SLUGIFY_USES_TEXT_UNIDECODE=yes
----
source .bashrc

安装 airflow

使用 pip 安装

pip install apache-airflow
pip install "apache-airflow[kubernetes]"

选择安装 Extra Packages

pip install "apache-airflow[crypto, password]"
pip install "apache-airflow[mysql]"
pip install "apache-airflow[celery]"
pip install "apache-airflow[redis]"

apache-airflow 1.9.0 默认安装的 sqlarchemy

初始化元数据库

airflow initdb

修改配置

默认 metastore 使用 sqlite,建议使用 mysql or postgres,以便使用 LocalExecutorCeleryExecutorDaskExecutor ,此处使用 mysql

初次初始化元数据库是产生的 airflow.db 文件可以删除

cd ~/airflow
rm -f airflow.db

修改配置文件

vi airflow.cfg
[core]
airflow_home = /home/airflow/airflow
dags_folder = /home/airflow/airflow/dags
base_log_folder = /home/airflow/airflow/logs
default_timezone = Asia/Shanghai
executor = LocalExecutor
sql_alchemy_conn = mysql://username:password@host:port/database
[webserver]
authenticate = True
auth_backend = airflow.contrib.auth.backends.password_auth  # 需要自己添加这个参数
filter_by_owner = True

重新初始化元数据库

airflow initdb

创建 dag 目录

mkdir /home/airflow/airflow/dags

创建 web 用户

进入 python 命令行

>>> import airflow
>>> from airflow import models, settings
>>> from airflow.contrib.auth.backends.password_auth import PasswordUser
>>> user = PasswordUser(models.User())
>>> user.username = 'admin'
>>> user.email = 'example@example.com'
>>> user.password = 'admin'
>>> session = settings.Session()
>>> session.add(user)
>>> session.commit()
>>> session.close()
>>> exit()

启动 airflow

airflow webserver -p 8080
airflow scheduler