<p>1)您可以尝试一下<a href="https://github.com/thieman/dagobah" rel="noreferrer">dagobah</a>,如github页面所述:Dagobah是一个用Python编写的简单的基于依赖关系的作业调度程序。Dagobah允许您使用Cron语法调度周期性作业。然后,每个作业按照依赖关系图定义的顺序启动一系列任务(子流程),您可以在web界面中通过单击和拖动轻松绘制这些任务。与以下三个项目相比,这是最轻量级的调度程序项目。</p>
<p><img src="https://i.stack.imgur.com/2f1kO.png" alt="dagobah's web interface"/></p>
<p>2)在ETL任务方面,Spotify开源的<a href="https://github.com/spotify/luigi" rel="noreferrer">luigi</a>更加关注hadoop作业,如前所述:Luigi是一个Python模块,它帮助您构建复杂的批处理作业管道。它处理依赖解析、工作流管理、可视化等。它还内置了Hadoop支持。</p>
<p><img src="https://i.stack.imgur.com/xFUmZ.png" alt="luigi's web interface"/></p>
<p>这两个模块都主要用Python编写,为了便于管理,还包括了web接口。</p>
<p>据我所知,“luigi”没有为作业任务提供调度模块,我认为这是ETL任务所必需的。但使用“luigi”更容易用Python编写map-reduce代码,Spotify运行时每天都有成千上万的任务依赖于它。</p>
<p>3)与luigi一样,Pinterest也开放了名为<a href="https://github.com/pinterest/pinball" rel="noreferrer">Pinball</a>的工作流管理器。Pinball的架构遵循一个主工作机(或者主客户机,以避免与我们下面介绍的特殊类型的客户机命名混淆)范式,其中有状态的中央主机充当无状态客户机当前系统状态的真实来源。它能顺利地集成hadoop/hive/spark作业。</p>
<p><img src="https://i.stack.imgur.com/HZJ0y.png" alt="pinball's web interface"/></p>
<p>4)<a href="https://github.com/airbnb/airflow" rel="noreferrer">Airflow</a>,另一个由Airbnb开源的dag工作日程项目,很像Luigi和Pinball。后端是基于烧瓶、芹菜等。根据<a href="https://github.com/airbnb/airflow/tree/master/airflow/example_dags" rel="noreferrer">example job code</a>,气流既强大又易于在我身边使用。</p>
<p><img src="https://i.stack.imgur.com/iVNcu.png" alt="airflow's web interface"/></p>
<p>最后但并非最不重要的是,Luigi、Airflow和Pinball可能会得到更广泛的应用。这三者之间有很大的比较:<a href="http://bytepawn.com/luigi-airflow-pinball.html" rel="noreferrer">http://bytepawn.com/luigi-airflow-pinball.html</a></p>