我需要管理大量的工作流的ETL任务,执行取决于时间,数据可用性或外部事件。 工作流的执行过程中的一些作业可能会失败,并且系统应该有重新启动失败的流程分支,而不必等待整个工作流程执行完成的能力。
是否有蟒蛇,可以处理这个任何框架?
我看到几个核心功能:
- DAG BULDING
- 节点的执行(有等待运行shell CMD,记录等)
- 能力执行期间重建在父DAG子图
- 能力为手动执行的节点或子图,而亲本图是运行
- 暂停图执行,同时等待外部事件
- 清单作业队列和工作细节
像Oozie的 ,但更多的通用和蟒蛇。
1)你可以给达戈巴一试,因为它的GitHub的网页上描述:达戈巴是用Python编写一个简单的基于依赖性的作业调度程序。 达戈巴允许您使用cron语法来安排定期的作业。 然后,每个工作由依赖关系图,你可以很容易地在网络界面点击并拖动绘制定义的顺序揭开序幕一系列任务(子过程)的。 这是最轻量级的调度项目的三个比较如下。
2)在ETL任务而言, 路易吉这是开放的Spotify的来源更多的精力放在Hadoop作业,如下所述:路易吉是一个Python模块,可以帮助你建立批处理作业的复杂管道。 它处理依赖性解析,工作流管理,可视化等,也有自带的Hadoop的支持。
无论两个模块的主要用Python编写的网络接口包括方便管理。
据我所知,“路易”不提供工作任务,我认为这是必要的ETL任务调度模块。 但是,使用“路易吉”更容易写的map-reduce在Python代码和数千个任务每天在Spotify的运行依赖于它。
3)路易吉一样,Pinterest的开源了其命名工作流管理弹球 。 弹球的体系结构遵循主 - 工人(或主客户端,以避免命名与我们下面介绍一种特殊类型的客户端的混乱)范例,其中有状态的中央主作为真理的当前系统状态源无状态的客户。 它平滑地集成Hadoop的/蜂房/火花的作业。
4) 气流 ,另一个DAG作业计划项目通过制作的Airbnb开源,还是比较喜欢Luigi和弹球。 后端是建立在瓶中,芹菜等。 根据该示例代码工作 ,气流是功能强大,易于在我身边使用。
最后但并非最不重要的,路易吉,气流和弹球可以得到更广泛的使用。 还有就是这三者之间有很大的比较: http://bytepawn.com/luigi-airflow-pinball.html
有一吨的这些; 似乎每个人都自己写。 有在一个良好的名单https://github.com/common-workflow-language/common-workflow-language/wiki/Existing-Workflow-systems 。 其中包括起源于工业界和学术界两个系统。
你看Ruffus ?
我与它没有任何经验,但它似乎做一些项目的清单上。 它还看起来很容易被破解,所以你也许可以实现您的其他要求自己。