airflow 从入门到放弃

airflow是什么

Airflow 被 Airbnb 内部用来创建、监控和调整数据管道。任何工作流都可以在这个使用 Python 编写的平台上运行(目前加入 Apache 基金会孵化器)。

Airflow 允许工作流开发人员轻松创建、维护和周期性地调度运行工作流(即有向无环图或成为DAGs)的工具。在Airbnb中,这些工作流包括了如数据存储、增长分析、Email发送、A/B测试等等这些跨越多部门的用例。这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres和S3交互的能力,并且提供了钩子使得系统拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个 基于Web的用户界面让您可以可视化管道的依赖关系、监控进度、触发任务等。

在ETL(Extract-Transform-Load)中会经常使用脚本(bash/python)+ crontab来运行数据处理任务,然而这种方案存在以下问题 - 查看任务执行情况不直观方便,只能登录机器、或者写一个界面/监控 - 存在依赖关系的任务没办法保证,或者保证的方法成本太高 - 任务量达到一定量级,任务的管理将极其棘手

而airflow有如下优点: - Airbnb开源的工作流管理平台 - 工作流依赖关系的可视化 - 日志追踪 - 用Python编写,易于扩展 - 开箱即用的ETL调度管理平台 - 运维/作业管理平台 - 调度平台设计

在一个机器学习建模的工程项目中,数据的ETL处理非常需要airflow。

airflow怎么得到

安装airflow原则上不需要多说,但实际操作的过程中出现一些问题。笔者在windows 10的ubuntu 子系统上用python3安装airflow,最开始就出现了如下问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
pip3 install apache-airflow

Collecting apache-airflow
Using cached https://files.pythonhosted.org/packages/e4/06/45fe64a358ae595ac562640ce96a320313ff098eeff88afb3ca8293cb6b9/apache-airflow-1.10.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-465wd_ew/apache-airflow/setup.py", line 429, in <module>
do_setup()
File "/tmp/pip-build-465wd_ew/apache-airflow/setup.py", line 287, in do_setup
verify_gpl_dependency()
File "/tmp/pip-build-465wd_ew/apache-airflow/setup.py", line 53, in verify_gpl_dependency
raise RuntimeError("By default one of Airflow's dependencies installs a GPL "
RuntimeError: By default one of Airflow's dependencies installs a GPL dependency (unidecode). To avoid this dependency set SLUGIFY_USES_TEXT_UNIDECODE=yes in your environment when you install or upgrade Airflow. To force installing the GPL version set AIRFLOW_GPL_UNIDECODE

我们可以看到后面给出相关的解决方法,设置SLUGIFY_USES_TEXT_UNIDECODE=yes,如下:

1
export SLUGIFY_USES_TEXT_UNIDECODE=yes

再次用pip3 install apache-airflow安装,成功! 按照官方步骤执行:

1
2
3
export AIRFLOW_HOME=~/airflow
airflow initdb
airflow webserver -p 8080

在浏览器地址栏输入http://localhost:8080,得下图: airflow界面安装成功

整个airflow的安装在细节上还会有比较多的小问题,要细心排查。上面如果安装后找不到airflow的命令,则找到airflow的脚本所在路径,加入系统PATH即可。 实际项目中路径可能会不一样,需要灵活处理。 airflow的使用相关的内容请点击airflow使用

参考链接

瑾锋 wechat
心明录公众号