Apache DolphinScheduler 是一个分布式的开源调度系统,它提供了一种可视化、可扩展、高可用的任务调度和数据处理方案。它支持多种任务类型,包括 Hadoop MapReduce、Spark、Hive、Flink、Python 等,可以在集群上进行任务调度和管理。
DolphinScheduler 还提供了丰富的监控和告警功能,可以帮助用户快速发现和解决问题,提高任务的稳定性和可靠性。它是由中国开发者社区共同开发的,目前已成为 Apache 软件基金会的顶级项目之一。
特性
DolphinScheduler 可以帮助我们达成以下目标:
- 轻松管理复杂的任务工程
- 支持跨项目和跨工作流程的任务依赖
- 支持Kill、暂停和恢复操作
- 任务支持以租户、Worker分组组和环境中隔离运行
- 每个任务都可以修改输出参数,并将其传递给后续任务
DolphinScheduler 有几个特性:
- 可靠性高:去中心化的多 Master 和多 Worker 服务对等架构, 避免单 Master压力过大,另外采用任务缓冲队列来避免过载
- 简单易用:DAG 监控界面,所有流程定义都是可视化,通过拖拽任务完成定制 DAG,通过 API 方式与第三方系统集成, 一键部署
- 丰富的使用场景:支持多租户,支持暂停恢复操作. 紧密贴合大数据生态,提供 Spark, Hive, M/R, Python, Sub_process, Shell 等近 20 种任务类型
- 高扩展性:支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master 和 Worker 支持动态上下线
界面
我们可以看下 DAG 的界面截图,界面功能很丰富。
其他框架
类似于 DolphinScheduler 的框架有不少,我们列出几个:
- Apache Airflow:一个用于创建、调度和监控工作流的开源平台,支持 Python 编写任务,具有可视化的任务调度界面和强大的扩展性。
- Apache Oozie:一个基于Hadoop的分布式工作流引擎,可以用于调度 Hadoop 作业、Pig 作业、Hive 作业等,支持多种任务类型。
- Apache NiFi:一个基于数据流编程概念的数据集成工具,可以用于数据采集、处理、转换和传输,具有可视化的界面和强大的扩展性。
- Azkaban:一个开源的批量工作流任务调度器,可以用于调度 Hadoop 作业、Java 作业、Shell 脚本等,支持可视化的任务调度界面和告警功能。
如果仅就调度器而言,国内的 xxl-job 也是功能做得很丰富的框架了。
小结
DolphinScheduler 本身生态发展很好,官方都支持了 Docker。而它本身已经成为 CNCF 的云原生组件了。
而截止目前,DolphinScheduler 在 GitHub 上已获得超过 10000 的 star 了,而Apache 甚至在 2022 年做了第一场 Apache DolphinScheduler Meetup,属实很优秀了。
在国内或国际上,有很多企业选择使用了 DolphinScheduler,比较知名的有:IBM、NOKIA、DELL、亚信、长安汽车、中国电信、华为等。
如果你有调度的需求,可以试试 DolphinScheduler,也许你会发现它真的很好用。