和小白一起啃干货|DolphinScheduler当下好用的任务调度系统
1、什么是DolphinScheduler?
根据官方的描述:Dolphinscheduler是一款开源的分布式调度系统,支持多种任务类型,如Hadoop任务、Spark任务、Shell任务等, 分布式易扩展的可视化 DAG 工作流任务调度,致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
它的发展迅速,从2017年项目启动,到2019年初具基础功能,截止2023年3月已经在Github上累积10.1K的star,成为市场上中小型任务调度的首选之一。也有很多历史项目逐步转型,将目光瞄准dolphinscheduler,相信ds的热度一定会不断攀升。
其发展历程如下:
- 2017年,DolphinScheduler项目启动,由中国移动通信集团公司数据中心发起,旨在构建一个分布式、易扩展的任务调度系统。
- 2018年,DolphinScheduler项目开源。并在同年发布了0.1.0版本,实现了任务调度的基本功能。
- 2019年,DolphinScheduler发布了1.0.0版本,支持了多种任务类型和任务调度方式,并且增加了多租户、灵活的扩展机制等功能。此外,DolphinScheduler还实现了与Hadoop、Spark等大数据生态系统的无缝集成。
- 2020年,DolphinScheduler发布了1.3.0版本,新增了任务流程定义、任务重试等功能,并且优化了任务调度的性能和可用性。此外,DolphinScheduler还在社区建立了多个技术交流群,吸引更多的开发者和用户参与到项目中来。
- 2021年,DolphinScheduler发布了2.0.0版本,全面升级了架构和代码设计,提升了系统的性能和可扩展性。此外,DolphinScheduler还加强了与Kubernetes、Flink等新兴技术的集成,进一步扩展了应用场景。
- 目前,DolphinScheduler在国内外已经获得了广泛的应用和认可,成为了国内领先的分布式任务调度系统之一。
2、DS有什么特点,有什么优缺点,和同类任务调度系统比较有什么区别
具体聊聊DolphinScheduler的特点
-
支持多种调度任务类型,例如 Shell、SQL、Python 等;
-
支持任务依赖关系,可以定义任务之间的依赖关系,保证任务的执行顺序;
-
支持任务的失败重试,可以设置任务失败后的重试次数和时间间隔;
-
支持任务的超时控制,可以设置任务的最长执行时间;
-
支持任务的动态参数配置,可以根据不同的环境和场景,灵活地配置参数;
-
支持 Web UI 界面管理,可以方便地查看和管理任务的状态和执行记录。
-
分布式架构:DolphinScheduler 的 Master 和 Worker 都是可横向扩展的,可以支持大规模任务的并发执行;相比airflow/azkaban这样可能存在调度侧单点故障的架构来说,分布式的架构是一个优点。
-
任务调度方式:DolphinScheduler 支持 DAG(有向无环图)调度方式,支持多级嵌套,更加灵活。
-
任务执行模式:DolphinScheduler 支持任务的本地模式和远程模式,可以灵活地执行任务。
-
任务调度粒度:DolphinScheduler 的任务调度粒度可以到秒级,更加细致。
-
任务监控和告警:DolphinScheduler 支持多种任务监控方式,例如日志监控、告警监控、心跳监控等。
基本通过这些维度,就可以进行任务调度框架的选型了,从真实任务的量级、复杂程度、对接数据源类型、选型成本以及附加的监控告警等,选择最适合的调度框架。
对于高阶玩家,希望针对平台进行扩展的,由于DolphinScheduler语言使用的广泛的JAVA,受众也较大,入门门槛低
- 定制化任务类型,增加新的任务类型。
- 定制化报警方式,除了现有支持多种报警方式,可以进行二次开发对接更多预警形式。
- 定制化UI界面:如果你需要更加美观、易用的UI界面,可以进行UI界面的二次开发。
- 定制化插件:Dolphinscheduler中支持多种插件,如数据源插件、任务插件等,如果你需要其他插件,可以进行二次开发。
- 此外还可以基于API,抛开开发语言,使用Dolphinscheduler的后端能力。
3、为什么选择DS
一定是基于它的优点
- 架构设计:DolphinScheduler采用分布式的任务调度架构,支持高可用的任务调度,在生产中不会容许存在单点故障的问题。如果选择的不是DS,也必须要有主备切换的额外方案来保障高可用。
- 调度方式:DolphinScheduler支持多种任务调度方式,包括时间调度、依赖调度、手动调度等。基本上能够满足中小型任务调度规模的日常所需。
- 执行引擎:DolphinScheduler采用多种执行引擎,包括Shell、Python、Java等,支持更多的任务类型。
- 可视化界面:DolphinScheduler提供了更加友好的可视化界面,支持更多的操作和查看方式。而Azkaban的界面相对简单,功能也相对受限。
- 社区活跃度:DolphinScheduler目前的社区活跃度相对较高,有较多的开发者和用户参与,更新频率较高。
4、如何使用DolphinScheduler
从Docker单点部署,到配置一个基本的数据操作入手