Airflow极简

1 安装

准备个服务器,先安装个miniconda,然后可以提前配置环境变量export AIRFLOW_HOME=~/airflow,默认安装到当前用户主目录:

pip install apache-airflow

接下来进行配置:

cd ~/airflow
vim airflow.cfg

配置下工作目录,注意工作目录比如dags应该需要手动创建。
然后改下时区default_timezone = Asia/Shanghai
如果已经安装了MySQL,可以改下连接:

sql_alchemy_conn = mysql+mysqldb://username:password@192.168.1.2:3306/airflow # 需要pip install mysqlclient
sql_alchemy_conn = mysql+mysqlconnector://username:password@192.168.1.2:3306/airflow # 推荐 pip install mysql-connector-python

如果不改的话,就是存在本地的sqlite里。
webserver也改下时区default_ui_timezone = Asia/Shanghai
其他hostport什么的自行修改。
接下来重要的core下面的executor可以改成LocalExecutor,这样就可以用到本地的多线程来执行任务,并且网页上也不再Warning:生产环境不要使用SequentialExecutor,注意sqlite无法使用LocalExecutor

2 启动

airflow db init # 默认 sqlite:////Users/username/airflow/airflow.db
# 以下参数一个不能少,也是醉了
airflow users create \
    --username admin \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email spiderman@superhero.org

会提示输入密码,当然也可以用--password引入。
接下里开两个终端分别运行:

airflow webserver --port 8080 # -D后台
airflow scheduler # -D后台

然后服务器安全组设置好,就能访问http://my.ecs.ip:8080/home了。
怎么关服务呢?下面的脚本可以,因为airflow是启动了多个worker的。

ps -ef | egrep 'scheduler|airflow-webserver' | grep -v grep | awk '{print $2}' | xargs kill -15

3 使用MySQL

首先docker安装,比较方便:

docker container run -d --name mysql-container-name -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my_airflow_pwd mysql:5.7

进入容器,初始化:

docker exec -it <mysql container id> bash

然后创建数据库:

CREATE DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

然后在工作目录编辑连接信息:

vim airflow.cfg

找到连接信息,更改一下:

mysql+mysqlconnector://root:my_airflow_pwd@localhost:3306/airflow_db

记得安装包:

pip install mysql-connector-python

重新初始化:

airflow db init

如果报错(42000): Invalid default value for 'updated_at',那是因为不允许时间为0000-00-00,参考:

stack overflow
questions/9192027/invalid-default-value-for-create-date-timestamp-field
mysql > SET @@global.sql_mode ="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"; 

哪个管用得自己试一试。然后再重新跑一下webserverscheduler等。

暂时够用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容