Apache DolphinScheduler大数据调度系统对比(转)

时间:2021-7-4 作者:qvyue

table of contents
一 .背景
二 .定位
三 .案例
四 .竟品对比
五 .DolphinScheduler简介
六 .社区发展
七.性能数据参考
一 .背景
今天跟客户聊天的时候,聊到了调度系统,抛出三个顾虑 :

调度系统现在市面上的调度系统那么多,比如老牌的Airflow, Oozie,Kettle,xxl-job ,Spring Batch等等, 为什么要选DolphinScheduler ?

其他的调度产品用的都是主流的语言比如java,调度底层都是用的quartz,稳定性都不错啊,功能/技术都差不多啊,为啥选他 ?

DolphinScheduler我之前都没听过,这么新的东西我为什么要选他,为他承担风险 ? 别人来质疑我的选型的时候,咋怼回去 ?

仔细一听都没毛病.是差不多啊. 那么为啥要选DolphinScheduler ???

在我的观念里面,没有最好的, 只有结合自身的业务/技术情况挑选最合适的技术产品.
那么接下来, 我从自身的使用情况来说一下,为什么要选型DolphinScheduler ?

注 : 本文的内容仅仅是个人观点,如果有不合适的地方欢迎指正…
二 .定位
为什么上来就说定位呢, 主要是为了缩小对比的范围.

DolphinScheduler 的定位是 大数据 工作流 调度 .

我把 大数据 和 工作流 做了重点标注. 从而可以知道 DolphinScheduler的定位是针对于大数据体系.

我这搞的是大数据平台, 目前主流的大数据调度组件有 : Oozie、Azkaban、Airflow 所以本文只是针对这三个技术做对比.

注 : kettle,xxl-job ,Spring batch 的定位任务调度,非大数据体系,对大数据体系的支持较弱,而且普遍都非HA,存在单点故障. 因为产品定位的不同,所以不做对比.

三 .案例
市场的认可度是检验产品价值的唯一真理.
我在调研技术的时候,如果市场认可度不高,那么基本就直接放弃了.
老牌调度Oozie、Azkaban、Airflow 我就不细说了,毕竟是老牌调度.市场的认可度和使用情况大家应该都使用过或者听说过.

DolphinScheduler从2019年3月正式发布第一个开源1.0.0版本到现在, 貌似到现在才两年的时间, 所以重点说一下.

Apache DolphinScheduler 部分用户 (排名不分先后)
看到下面的图我们发现很多大的企业在使用调度, 据不完全统计,至少有400家企业在使用. 官方统计地址

易观千帆

360奇安信

优路科技

T3 出行

四 .竟品对比
在大数据领域, DolphinScheduler 对标的开源产品是 oozie、Azkaban、Airflow .

因为公司的主流开发语言是Java , 考虑到成本维护之类的因素,因为Airflow使用的语言是Python , 跟公司的技术栈不匹配. 所以先排除掉 .

对比情况如下 :

DolphinScheduler Azkaban Oozie
社区状况
所属社区 apache Linkedin apache
社区活跃度 高 中 低
稳定性
单点故障 去中心化的多Master和多Worker 是
单个Web和调度程序组合节点 是
HA 支持
(HA需要依赖ZK,资源中心 支持 不支持[待确认]
过载处理 任务队列+多种任务分配策略+自我保护机制 任务过多服务器卡顿 任务过多服务器卡顿
易用性
DAG监控界面 任务状态、任务类型、重试次数、任务运行机器、可视化变量等关键信息一目了然 部分任务相关信息 部分任务相关信息
可视化流程定义 支持
[所有的流程定义都是可视化的,通过拖拽任务来绘制DAG, 配置数据源以及资源.对于第三方系统,提供api操作] 否[编码配置] 否[编码配置]
快速部署 一键部署 部署相对复杂 部署相对复杂
容器化部署 支持 否 否
功能
是否支持暂停和恢复 支持 否 否
是否支持多租户 支持 否 否
任务类型 传统的shell 、python任务, 同时支持大数据平台任务调度: MR、Spark、Flink、SQL、DataX、Sqoop等等 shell、gobblin、hadoopJava、java、hive、pig、spark、hdfsToTeradata、teradataToHdfs等 Pig,Hive,Sqoop和Distcp,Spark
可视化数据源管理 支持 不支持 不支持
可视化文件管理 支持
[需要依赖外部存储比如HDFS,S3A,minIO] 不支持 不支持
手动/定时触发任务 支持 支持 支持
告警 支持 [ 邮件/企业微信/钉钉/自扩展 ] 支持 待确认
扩展
自定义任务类型 支持 支持 不支持
支持集群扩展 是
调度器使用分布式调度,整体的调度能力会随集群的规模线性增长,Master/Worker支持动态扩容/缩容 是 [相对复杂] –
表格中的信息如果有不严谨的地方,欢迎指正.

我们在看一下DolphinScheduler技术栈 :

后端: SpringBoot (2.x)
前端: VUE
编译: Maven(3.3+) ,
元数据存储: Mysql5.5+
分布式无中心化设计: ZooKeeper(3.4.6+)
统一资源管理 : 共享存储[HDFS、S3A、MinIO]

主流技术栈,二次开发基本零门槛 .

五 .DolphinScheduler简介
Apache DolphinScheduler 于 17 年在易观数科立项, 19 年 3 月开源,8 月进入 Apache 孵化器, 已累计有 400+ 公司在生产上使用.

一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

其主要目标如下:

    * 以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在线查看
    * 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
    * 支持补数
    * 支持多租户
    * 其他....

系统优势

主要能力

可视化流程

K8s 支持

六 .社区发展
DolphinScheduler为国内开源项目,相对其他国外项目,有天然的本土优势.
截止目前 DolphinScheduler 共建立了8个用户群,1个开发种子群,1个开发者群. 总人数4000+, 截止目前对DolphinScheduler做过贡献的开发者有220+ . 社区活跃度很高.

目前开源对比情况如下(数据统计时间截止月2021年2月底):

项目名称 Start数量 Fork数量 Issue数量 Contributors 数量
DolphinScheduler 5.1k 1.8k 4862 180 人
Azkaban 3.6k 1.4k 2769 104人
Oozie 0.59k 0.43k – 16人
Airflow 20.5k 8k 2837 2836人
七.性能数据参考
生产环境
易观千帆是每天需要处理数百亿条数据,月活 6.2亿,6.8 PB 的大数据集群经过每天上万个任务 ETL 处理加工而产生的 SaaS 服务应用。

压测
因为执行任务的类型不同,所消耗的cpu/内存/网络/磁盘的资源也不同,因为执行大数据体系任务都是将任务统一提交到Yarn集群,仅仅是提交一个shell指令. 为了模拟, 所以该测试数据仅为执行shell脚本, 数据仅为参考,请以实际环境为准.

机配置为 :
5台物理 16核 32g内存 千兆网卡.

线程总数: 16 * 5 = 80 
内存总数: 32 * 5 = 160G 

压测结果:

并行任务数量在 8000+
数据库连接数据: 1100+

cpu占用 10% +
内存占用 40%+

调整参数:
master.exec.threads=6000
master.exec.task.num=20

worker.exec.threads=6000

内存配置:
Api : 4G
Master : 4G
Worker: 4G

https://blog.csdn.net/zhanglong_4444/article/details/114017156
参考资料来源清单:
https://github.com/apache/incubator-dolphinscheduler
https://github.com/apache/incubator-dolphinscheduler-website
https://mp.weixin.qq.com/s/s0oi5woJs_gb1Sgkp1jkyA
https://blog.csdn.net/DolphinScheduler/article/details/112174473
https://github.com/azkaban/azkaban
https://github.com/apache/airflow

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。