分布式工作流任务调度系统Easy Scheduler正式开源
1、背景
在多位技术小伙伴的努力下,经过近2年的研发迭代、内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler终于迎来了第一个正式开源发布版本 -- 1.0.0。 相信做过数据处理的伙伴们对开源的调度系统如oozie、azkaban、airflow应该都不陌生,在使用这些调度系统中可能会有这样的体验:比如配置工作流任务不能可视化、任务的运行状态不能实时在线查看、 任务运行时不能暂停、不能支持参数传递、不能补数、不能多租户使用、调度系统不高可用等等问题所烦扰过。Easy Scheduler正是在这种背景下应运而生,其目标就是为使调度更加easy,更可以从其中文名“易调度”看出我们的初衷。
2、设计特点
Easy Scheduler是一个分布式工作流任务调度系统,主要解决数据研发ETL错综复杂的依赖关系所带来的各种问题。 其主要目标如下:
- 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
- 支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql),Python,Sub_Process、Procedure等
- 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
- 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
- 支持工作流全局参数及节点自定义参数设置
- 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
- 支持任务日志在线查看及滚动、在线下载日志等
- 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化
- 支持对
Master/Worker
cpu load,memory,cpu在线查看 - 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
- 支持补数
- 支持多租户
- 支持国际化
- 还有更多等待伙伴们探索
4、与同类调度系统的对比
5、系统部分截图
6、文档
更多文档请参考: Easy Scheduler中文在线文档
7、感谢
Easy Scheduler使用了很多优秀的开源项目,比如google的guava、guice、grpc,netty,ali的bonecp,quartz,以及apache的众多开源项目等等,我们也非常感谢oozie、azkaban、airflow等优秀调度作品的出现带给我们的启发, 正是由于站在这些开源项目的肩膀上,才有Easy Scheduler的诞生的可能。对此我们对使用的所有开源软件表示非常的感谢!我们也希望自己不仅是开源的受益者,也能成为开源的 贡献者,于是我们决定把易调度贡献出来,并承诺长期维护。也希望对开源有同样热情和信念的伙伴加入进来,一起为开源献出一份力!
8、后记
Easy Scheduler于2019.03.28号正式开源后,仅仅一周时间,我们就感受到了伙伴们对Easy Scheduler的极大热情,很多伙伴提出使用反馈,还有一些伙伴是直接就找到相应的源代码来提问题或给出更好的建议、甚至直接在Easy Scheduler上撸袖子写代码, 这给我们目前的主要开发者予以极大的精神鼓舞,非常感谢伙伴们这么热情和信任我们,我们会和大家一道继续奔走在使调度系统开箱即用
这条大道上,为使"数据能力平民化"添砖加瓦,为数据时代贡献自己的激情和汗水!
码云地址: https://gitee.com/easyscheduler/EasyScheduler
开源github地址:https://github.com/analysys/EasyScheduler