之前试用了azkaban一小段时间,虽然上手快速方便,但是功能还是太简单,不够灵活。
Airflow使用代码来管理任务,这样应该是最灵活的,决定试一下。
我是python零基础,在使用airflow的过程中可谓吃尽了苦头。。好歹最后实现所有要求,两三周的时间没有白费
看完这篇文章,可以达到如下目标:
安装airflow
如何修改界面右上角显示的时间到当前时区
如何添加任务
调试任务python代码
如何启动spark任务
如何限定任务同时执行的个数
如何手动触发任务时传入参数
如何在airflow界面上重新运行任务
如何查看任务log及所有任务的运行记录
如何在任务失败时发邮件(腾讯企业邮箱)
如何在任务失败时发消息到企业微信
以下过程已经过去了有一段时间,当时记录的也不一定很全面,如果有的不能执行,请留言告知。
安装airflow
系统:Ubuntu 16
python: 3.7
airflow版本:1.10.10
保持pip3到最新版本
pip3 install --upgrade pip
安装使用pip3
切换到root用户执行: pip3 install apache-airflow
你以为敲完这条命令就可以去把个妹或者撩个汉再回来就装好了,请坐下。
我碰到的错误:
Python.h not found
运行
sudo apt-get install python3.7-dev
某些依赖版本不对:
ERROR: pendulum 1.4.4 has requirement python-dateutil<3.0.0.0,>=2.6.0.0, but you'll have python-dateutil 2.4.2 which is incompatible.
ERROR: pandas 0.25.3 has requirement python-dateutil>=2.6.1, but you'll have python-dateutil 2.4.2 which is incompatible.
运行
pip install python-dateutil --upgrade
哪个包版本不对,更新哪个
数据库使用mysql
相信你看这个文章的时候应该不会还没有尝试装过airflow,所以airflow.cfg这个文件已经有了,在哪也很清楚
修改airflow.cfg:
sql_alchemy_conn = mysql://airflow:password@jjh1810:3306/airflow
使用root用户连接到mysql:
create user 'airflow'@'%' identified by '123';
grant all privileges on airflow.* to 'airflow'@'%';
flush privileges;