认识airflow
目前在一家互联网金融公司数据部门工作,人员很少,很多大数据的架构没有经验,一切只能自己研究。
做数据分析就得涉及到数据的ETL,OLTP的数据库不能拿来直接分析,所以首先就是数据extraction,老同事用了kettle作为导数工具,用cron定时运行。
不得不说kettle的GUI确实强大,但我却对它没有太多好感。crontab也有缺点,如果数量很庞大,比如上百行定时任务,再加上各种脚本,很不方便维护和升级。
直到在网上发现了airflow这款流程管理工具,Python写的,类似于Luigi, Oozie, Azkaban。目前还在Apache孵化中,社区和gitter都很活跃。
安装很简单直接pip install airflow
,然后根据使用目的不同还需要安装其他组件。如果做分布式架构,还需要安装mysql, celery或者Mesos。
安装完成后会在home目录下生成一个airflow文件夹。这样就算安装成功了。如果要做分布式,需要在每一台机器上都安装同样的。
常用概念
- DAG:翻译过来是有向无环图,做过大数据处理的都知道。下面是airflow官方解释
In Airflow, a DAG – or a Directed Acyclic Graph – is a collection of all the tasks you want
to run, organized in a way that reflects their relationships and dependencies. - webserver:这个是airflow的数据可视化页面
- scheduler:流程调度器,负责监控所有任务和dag,并触发任务
- worker:和celery worker概念一样,负责在分布式环境下对任务进行处理
- airflow.cfg:airflow所有配置都在这里了, 需要重点学习
- connections:airflow为你预置了一些数据库和各种服务的连接模板,你只需要在一个集中的位置管理好这些连接,就可以在任意地方使用了
配置airflow.cfg
需要分别对webserver和celery sections进行配置, 直接上我的配置
1 | [core] |
我用了rabbitmq作为broker, 安装在master机器上。配置文件要在不同机器间保持一致。
初始化并运行
初始化命令:airflow initdb
然后在master上分别运行airflow scheduler
, airflow webserver
,这时访问浏览器localhost:port就可以看到airflow的可视化页面了