前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实用调度工具Airflow

实用调度工具Airflow

作者头像
大数据和云计算技术
发布2018-03-08 16:34:10
3.8K0
发布2018-03-08 16:34:10
举报
文章被收录于专栏:大数据和云计算技术

引言

前面写过一篇文章《端午搬砖:聊聊调度云服务》,主要讲云服务的。如果企业也业务上云,可以优先选用这些服务,减少工作量。

而在传统企业内部,数据集成是基础,更是每个企业里面都至少有一个ETL工具或者调度+业务代码实现ETL。

Kettle

说到ETL,开源比较有名的是kettle(Kettle英文是水壶的名字,你要是去美国或者欧洲出差,很多酒店是不提供热水的,你可以电话前台要一个kettle)。现在有一家叫petaho的公司专门做kettle的商业版本。

kettle是纯java工具,Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。这个工具发展很久了,不过感觉很重型,又是个C/S框架的,不是很推荐。Github上看,支持的人还是比较少。

一个通用的ETL工具其实是比较难的,主要是业务逻辑通常会灵活性和复杂度比较高,通过界面能全部配置出来太理想化了。所以反而是一些简单的调度工具会适用范围比较广,业务逻辑由企业开发人员代码实现,只解决基本调度的问题。

Airflow

这里介绍一个Airflow,这个是由Airbnb公司贡献的,(Airbnb,是一个让大众出租住宿民宿的网站,提供短期出租房屋或房间的服务。最近业务也开到中国来了) 。这家公司前面还有一个基于mesos的chronos调度服务,见文章《Chronos:数据中心的任务调度器(job scheduler)》,不过现在已经停止更新了。Airflow是由airbnb的Maxime Beauchemin创建,目前是apache孵化项目,很有特点:

1

主要是由Python实现的。Job定义也是靠python,不提供xml和界面定义的方式。下面是一个pipeline的定义例子,python本身是一种比较简洁的语言,容易上手,所以经过一定的学习还是很容易掌握的。

代码语言:javascript
复制
"""
Code that goes along with the Airflow tutorial located at:
https://github.com/airbnb/airflow/blob/master/airflow/example_dags/tutorial.py
"""
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2015, 6, 1),
'email': ['airflow@airflow.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
# 'queue': 'bash_queue',
# 'pool': 'backfill',
# 'priority_weight': 10,
# 'end_date': datetime(2016, 1, 1),
}
dag = DAG('tutorial', default_args=default_args)
# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)
t2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
dag=dag)
templated_command = """
{% for i in range(5) %}
echo "{{ ds }}"
echo "{{ macros.ds_add(ds, 7)}}"
echo "{{ params.my_param }}"
{% endfor %}
"""
t3 = BashOperator(
task_id='templated',
bash_command=templated_command,
params={'my_param': 'Parameter I passed in'},
dag=dag)
t2.set_upstream(t1)
t3.set_upstream(t1)

2

使用Jinja来做模板引擎,所以支持模板,Jinja也是Python实现的,对Python真是真爱呀。

3

虽然不支持常见的UI定义Pipeline,但是还是有丰富的UI界面来帮助pipeline的维护和管理。

(1)pipeline状态

(2)任务进度

(3)依赖关系管理

(4)甘特图可让您分析任务持续时间和重叠。帮助快速找出瓶颈以及大部分时间花在特定DAG运行中的位置。

(5)过去N批次运行不同任务的持续时间。快速查找异常值,并快速了解在多个运行中在DAG中花费的时间。

(6)更有意思的是,还支持交互式查询,一些基本,简单的数据分析在工具中就可以完成,所见即所得,不用编写pipeline,等任务完成之后才知道结果。

http://airflow.incubator.apache.org/profiling.html

4

扩展性方面支持和Celery和mesos集成

5

最后再看看社区状况,人不少,281个

不过14年的项目,现在还没有毕业,时间有点长了,可能是Airbnb也并不热衷这个事情。一个好的开源软件,背后一定要看到一个商业公司来推动他的发展,否则稳定性和未来的发展可能会一定的问题。

总结建议

最后,我个人的建议是,如果你想对调度工具有很强的掌控力,且有能力维护,就考虑选择airflow吧,否则还是算了吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据和云计算技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档