我和Apache DolphinScheduler的缘分

关于 DolphinScheduler社区

Apache DolphinScheduler(incubator) 于17年在易观数科立项,19年3月开源, 19 年8月进入Apache 孵化器,社区发展非常迅速,目前已有IBM、美团、腾讯、360等 400+ 公司在生产上使用,代码+文档贡献者近200位,社区用户4000 +人。DolphinScheduler (简称DS) 致力于使大数据任务调度开箱即用,它以拖拉拽的可视化方式将各种任务间的关系组装成 DAG(有向无环图),并实时监控整个数据pipeline的运行状态,同时支持失败重试、重跑、恢复失败、补数等大数据常用操作

主人翁介绍

温合民,前创业公司技术合伙人,Apache DolphinScheduler Committer,8年互联网研发经验,现专注于大数据平台研发,深入参与开源社区建设

在这里插入图片描述
DolphinScheduler对于我来说,不仅是我们内部引入的一个项目,还是我职业生涯的引路人。

我和DolphinScheduler的缘分

就在2019年之前,我还是一名后端研发工程师,鲜有机会能接触到大数据,但是我一直对大数据有浓厚兴趣,由于我没有实践经验,所以一直也没有尝试从事大数据相关工作。19年我由于参与创业项目进展不顺利,退出后入职了一家新公司,可能面试时沟通不深入,误打误撞就进了一个搞数据分析的部门,工作职责主要是数据工具的研发,就这样,开启了我的大数据之旅。

从参与数据研发到现在,对我帮助最大、影响最大的就是我接触并在我们的数据平台中引入了DS,进而参与到开源。

最开始参与大数据平台建设时,我发现大数据平台中的大部分组件都已经发展成熟。只有大数据平台中的核心系统,大数据调度系统还没有深入人心的产品出现,这样的产品就像Spring之于后端、Vuejs之于前端、Hadoop之于大数据存储。我认为可能的原因是每个团队对调度系统的诉求不一样,比如:任务类型的多样化、系统的可扩展、系统的高可用、对非研发人员友好等,这就对大数据调度系统提出很高的要求,不仅要功能完备,还要便于二次开发,进行技术选型时也要非常谨慎。

我们在引入DS前,团队已经在使用kettle做ETL系统,随着任务越来越多,kettle的脚本管理越发混乱,对ETL系统功能的诉求也越来越多,团队决定替换ETL系统,我承担了技术选型的工作,开始在google、github寻找潜在的项目。

我们对ETL系统的核心需求:

  • 任务管理:B/S架构,支持DAG
  • 任务类型:支持sql(mysql、postgresql、hive)、shell、python、spark
  • 任务编排:多任务按照串行、并行触发;条件触发任务
  • 任务配置:变量注入、失败重跑、暂停、中断、手工触发
  • 任务依赖:自动化处理ETL任务依赖关系
  • 流控:并发、限流
  • 监控:任务状态、结束通知、失败报警
  • 权限:用户管理、权限管理

我通过调研选择了几个备选项目:DolphinScheduler、Azkaban、Airflow、Oozie

参考了当时EasyScheduler官网的横向对比
在这里插入图片描述

我在调研时做的对比图

需求点EasySchedulerazkabanoozieelastic-jobXXL-Job
WEB UI支持支持支持不支持支持
DAG支持不支持不支持不支持不支持
用户权限支持编码配置支持不支持支持
shell任务支持编码配置编码配置编码配置支持
python任务支持不支持不支持编码配置支持
sql任务支持不支持不支持不支持不支持
串行任务编排支持支持未调研未调研支持
并行任务编排支持支持未调研未调研不支持
条件任务编排不支持支持未调研未调研不支持
变量注入支持-未调研未调研支持
手工触发任务支持支持未调研未调研支持
中断任务支持支持未调研未调研支持
失败重跑支持支持未调研未调研支持
状态监控支持支持未调研未调研支持
资源监控支持不支持未调研未调研不支持
通知可配置支持支持未调研未调研支持
完成通知支持支持未调研未调研不支持
失败通知支持支持未调研未调研支持
HA支持支持支持支持支持
插件机制支持支持支持支持支持
github star2.7K(调研时)2.9K525K5.4K10.7K

表格中“未调研”是因为核心需求不满足,就没有花时间继续调研

调研DolphinScheduler的过程非常顺利,DS不仅提供了完善的用户文档,还有demo可以立即上手试一试,这点对用户非常友好,并且DS社区非常活跃,社区里藏龙卧虎。我是因为DS的功能吸引了我,也因为DS社区激发了我对开源的热情。

之前没有参与过开源项目,对开源知之甚少,在社区帮助下逐渐熟悉了开源贡献流程。我先从issue入手,通过回答issue中的问题去熟悉项目功能和源码,然后阅读源码的过程中可能会发现一些问题或bug,提交pr修复发现的问题,人生中第一个被合并的pr对我来说非常有成就感。因为我们内部基于DS做了二次开发,增强了DS的ETL能力,本着受益开源贡献开源的精神,将大家需要的功能提交给社区,通过努力也得到了社区认可,成为Apache Committer是我技术道路的一个里程碑。

参与开源让我有机会能和社区中的高手一起探讨问题,开源不仅打开了自己的视野,同时也提供了一条技术成长的路径。在感受开源魅力和强大的同时,我也非常感谢DS让我有幸能够参与其中。

最后希望DS茁壮成长,我也会伴随DS的成长,看着它每天进步,成为中国开源事业的重要一员。


Who’s using DolphinScheduler?在这里插入图片描述

参与贡献

随着国内开源的崛起,DolphinScheduler迎来了蓬勃发展,为了做更好用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,青春在开源上留下一点印记

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:
在这里插入图片描述
贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度

社区汇总了以下适合新手的问题列表:https://github.com/apache/incubator-dolphinscheduler/issues/4124

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的

如果您想参与贡献,却发现上述方法都搞不明白,也没关系,我们有个开发者种子孵化群,可以添加微信(easyworkflow) 手把手教会您,添加时请说明想参与贡献哈

Apache DolphinScheduler开源社区非常期待您的参与

posted @   海豚调度  阅读(259)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示