大数据调度系统为什么选型Apache 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 , 跟公司的技术栈不匹配. 所以先排除掉 .

对比情况如下 :

DolphinSchedulerAzkabanOozie
社区状况
所属社区apacheLinkedinapache
社区活跃度
稳定性
单点故障去中心化的多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 数量
Airflow22.6k8.9k167951654人
DolphinScheduler6.1k2.2k5930222 人
Azkaban3.8k1.5k2903108人
Oozie0.615k0.445k17人

七.性能数据参考

  • 生产环境

易观千帆是每天需要处理数百亿条数据,月活 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://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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值