我与Apache DolphinScheduler社区的故事
我与DolphinScheduler社区的故事
Apache DolphinScheduler 是一个开源的分布式去中心化、易扩展的可视化DAG大数据调度系统。 于2017年在易观数科立项,2019年3月开源,于2019年8月29日通过Apache基金会投票正式成为Apache孵化器项目。社区发展非常迅速,目前已有 400+ 公司在生产上使用,代码+文档贡献者近200位,社区用户4000 +人。
主人翁简介
姓名:黄立
长安汽车-云平台开发部-大数据工程师,负责车联网数据基础平台建设工作,DolphinScheduler Committer,目前专注于物联网数据存储和计算领域。我参与到 DS社区应该刚好一年,是非常典型的从开源用户到了解社区最后参与社区的路线。
初识EasyScheduler(DolphinScheduler的前身):四天上生产
时间回退到2019年8月,公司成为了Cloudera的客户,准备基于EDH构建车联网数据平台。
在大数据任务调度系统选型的时候,初步定了3个组件:Zeus,Azkaban,Airflow。从系统是否开源,二开难度和易用性上最终选型了Azkaban。接下来就是开始对Azkaban测试,Azkaban使用command的方式来描述任务关系,描述方式比较麻烦,不够直观。于是我开始继续寻找大数据批处理调度系统,发现了这个新闻:
分布式工作流任务调度系统Easy Scheduler正式开源
嗯?可视化拖拉拽?支持shell?HA?易观投产两年?java系?
我:琦鹏(EDH实施的小哥),要不咱们整下这个easyscheduler?
琦鹏:哥, 咱这个还一周要上线啊,你现在测?
我:我看网上写得挺不错的,搞搞看?部署应该不复杂的,不行还有Azkaban嘛
琦鹏:。。。。。。。。。
于是我花了4天的时间将easyscheduler从测试环境部署到预生产的POC全部做完,向领导汇报后,得到的反馈是,可以投产。现在,5个节点的ds系统承接了车联网数据平台的所有批处理任务,已经稳定运行了一年四个月。

接触社区:2019年12月8日 DolphinScheduler MeetUp
2019年9月17日,ds进入apache孵化器,开始了第一个apache版本的发版工作。我也开始了这个分支的升级测试工作,因为当时1.2.0支持了一个非常重要的功能:跨项目依赖。由于对ds的了解程度不高,开发环境升级之后,之前做好的定时的任务一直无法调起来,我决定在12月8日到北京去参加Apache DolphinScheduler的MeetUp,目的是找到ds的开发者帮我解决系统升级的问题。这里要感谢一下我的领导,支持我到北京出差参加社区活动。这是当时meetup的照片,也是我第一次参加线下的meetup,有一种程序员开大会的感觉。最后一个topic,各位大佬进行了如何加入Apache社区并成为Committer的圆桌讨论。我了解到了Apache项目的运作方式,有哪些角色,参与到开源项目中的方式。
重点是,会后我拿出电脑让ds的开发者李岗帮我查组件升级的问题,最后发现是包名的升级兼容性问题,现在想起来都觉得很神奇,从重庆到北京,就处理了一个ds的升级问题。

回到重庆之后,我决定开始参与到ds社区中。于是整理对ds的改造点,提了第一个pr,是关于Spark组件支持多版本的功能。PR的日期是2019年12月17日。参加12月8日meetup的决定,让我真正开始动起手来,参与开源。划重点:参加Meetup!!!

参与社区:从细节做起,不光是代码
参与开源项目,贡献社区不单是只有提交代码这一种方式。任何形式参与社区:贡献文档,提交翻译,参与讨论,在邮件列表或issue中回答社区用户的提问,都会被社区记录和认可。期间我发现有部分用户,在参与开源项目的时候,喜欢一来就整个“大Feature”。关于一个Feature,其设计和实现并未经过社区讨论,一个pr就更改了100多个文件,提交上万行代码,这样的pr其review压力巨大,很难得到社区认可。
在开源贡献的层面来说,所做的工作给社区带来微小而美好的改变就是值得的。个人而言,我参与社区的方式比较综合:
- 贡献代码
在issue列表中,寻找自己感兴趣的issue,做力所能及的bug fix和实现feature。
报告bug,参与讨论

贡献文档
提到文档贡献就非常有意思了,在2020年初的时候,DolphinScheduler社区建立了海豚调度的公众号,我贡献给社区的第一篇文档是如何在 CDH5.16.2 中部署 Apache Dolphin Scheduler 1.2.0。后续得到的反馈是有不少用户根据这篇文档,成功部署DS,开始成为小海豚的用户,我感到非常非常高兴。**所以,参与社区,真的不一定需要写代码。**之后,我又陆续向社区贡献文档,涉及版本升级指南,部署参数分析和故障处理。
社区收获
参与社区是要花费一定的休息时间和精力的,在参与社区这件事上,付出和收获一定是成正比的。
引入重要的Bug Fix
最最最重要的是,通过社区用户的实践,我们可以提前发现一些重要的bug,比如在1.3.4中修复的任务卡死问题,如果对社区熟悉就可以在内部的代码中cherry-pick对应的pr,不用等到社区发版,保证生产系统的稳定性。
内部开发保持与社区一致
引用Hbase社区张铎老师的PPT,参与开源,将内部的feature回馈给社区,参与社区开发,可以保证自研代码和社区代码的步调一致,享受到社区最新的功能

写在最后
我一直觉得,做任何事情,学习任何一项技能,都要经历一个:不会到会,会到会用,用到用好,用好到用成自己的,四个阶段。目前,我们正处于将ds用好的一个阶段。个人也会继续参与到开源中,在社区中贡献,收获。
我与Apache DolphinScheduler社区的故事的更多相关文章
- 笃情开源:我和 Apache DolphinScheduler 社区的故事
背景 本文的主人翁是 2 次飞机参会现场交流,四天研究就把 DolphinScheduler 用上生产的来自车联网行业的大数据 boy - 黄立同学.怎么样,听起来是不是有点 crazy?下面就来看看 ...
- Apache DolphinScheduler 社区呼唤志愿者
DolphinScheduler是什么? Apache DolphinScheduler 是一个分布式.易扩展并带有强大的可视化界面的大数据工作流调度系统. 2021 年 03 月 18 日正式成为 ...
- 【喜讯】新一代大数据任务调度 - Apache DolphinScheduler 社区荣获OSCHINA年度 “最佳技术团队”...
新一代大数据任务调度 - Apache DolphinScheduler 继 11 月 19 日由 InfoQ 举办.在 300+ 参评项目中脱颖而出获得 "2020 年度十大开源新锐项目 ...
- Apache DolphinScheduler&ShenYu(Incubating) 联合 Meetup,暖春 3 月与你相约!
云霞出海曙,梅柳渡江春. 2022 年的早春在疫情中显得格外生机勃勃,虽然接下来寒流仍有可能造访国内部分地区,但开源的世界,早已热闹非凡! 2022 年 3 月 26 日(星期六), Apache D ...
- Apache DolphinScheduler之最美好的遇见
关于 Apache DolphinScheduler社区 Apache DolphinScheduler(incubator) 于17年在易观数科立项,19年3月开源, 19 年8月进入Apache ...
- Apache DolphinScheduler 3.0.0 正式版发布!
点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 版本发布 2022/8/10 2022 年 8 ...
- 感谢有你!Apache DolphinScheduler 项目 GitHub star 突破 8k
本周伊始,Apache DolphinScheduler 项目在 GitHub 上的 Github Star 总数首次突破 8K.目前,Apache DolphinScheduler 社区已经拥有 C ...
- Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力
在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...
- 金融任务实例实时、离线跑批Apache DolphinScheduler在新网银行的三大场景与五大优化
在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数.为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战.如今,新网银行多 ...
随机推荐
- 题解 P3831 [SHOI2012]回家的路
什么叫分层图最短路,我不会/kk 感觉自己做法和其他题解不大一样所以过来发篇题解了. 未刻意卡常拿下最优解 题目大意 就是说给你一个 \(n \times n\) 的网格图和 \(m\) 个可换乘点, ...
- 【freertos】009-任务控制
目录 前言 9.1 相对延时 9.1.1 函数原型 9.1.2 函数说明 9.1.3 参考例子 9.2 绝对延时 9.2.1 函数原型 9.2.2 函数说明 9.2.3 参考例子 9.3 获取任务优先 ...
- Eoapi — 一个可拓展的开源 API 工具
在社区中时常会出现"抱怨某商业产品越来越臃肿"的声音,API 工具也是如此.从最早期只做 API 调试的工具,到经过多年的演进后集成全面功能的"庞然大物", ...
- static关键字——JavaSE基础
static关键字 由于static跟随类被加载,因此静态代码块.构造方法.匿名代码块的执行顺序为静态代码块→匿名代码块→构造方法 public class Demo01 { public stati ...
- Java泛型知识总结
泛型 前言 在没有泛型之前,程序员必须使用Object编写适用于多种类型的代码.很繁琐,也不安全. 泛型的引入使Java有了一个很强的类型系统,允许设计者详细地描述变量和方法的类型要如何变化. 在普通 ...
- fpm工具安装
概述 最近在对机房的编译环境做整理,过程曲折而痛苦,记录一下. 之前的一个老项目,在打包的时候用到了一个叫做fpm的工具. 编译环境涉及centos6和centos7,在新的编译环境的过程中,如何安装 ...
- 皓远的第二次博客作业(最新pta集,链表练习及期中考试总结)
前言: 知识点运用:正则表达式,有关图形设计计算的表达式和算法,链表的相关知识,Java类的基础运用,继承.容器与多态. 题量:相较于上次作业,这几周在java方面的练习花了更多的精力和时间,所要完成 ...
- javaEE-IDEA创建项目-使用Mybatis
新建项目 点Next之后给项目命名 创建如下文件夹以及文件 修改pom.xml, 加入 <dependencies> <!-- junit单元测试 --> <depend ...
- WPF开发随笔收录-自定义图标控件
一.前言 1.在以前自学的过程中,软件需要使用到图标的时候,总是第一个想法是下载一个图片来充当图标使用,但实际得出来的效果会出现模糊的现象.后来网上学习了字体图标库的用法,可以在阿里云矢量图网站那里将 ...
- NC14731 逆序对
NC14731 逆序对 题目 题目描述 求所有长度为 \(n\) 的 \(01\) 串中满足如下条件的二元组个数: 设第 \(i\) 位和第 \(j\) 位分别位 \(a_i\) 和 \(a_j\) ...