笃情开源:我和 Apache DolphinScheduler 社区的故事
背景
本文的主人翁是 2 次飞机参会现场交流,四天研究就把 DolphinScheduler 用上生产的来自车联网行业的大数据 boy - 黄立同学。怎么样,听起来是不是有点 crazy?下面就来看看黄同学艺高人胆大的开源故事。
主人翁:黄立,长安汽车 - 云平台开发部 - 大数据工程师,负责车联网数据基础平台建设工作,DolphinScheduler Committer。目前专注于物联网数据存储和计算领域。
我参与到 DS 社区应该刚好一年,是非常典型的从开源用户到了解社区最后参与社区的路线。
01
四天上生产
初识EasyScheduler(DolphinScheduler的前身):四天上生产
时间回退到 2019 年 8 月,公司成为了 Cloudera 的客户,准备基于 EDH 构建车联网数据平台。
在大数据任务调度系统选型的时候,初步定了3个组件:Zeus,Azkaban,Airflow。从系统是否开源,二开难度和易用性上最终选型了 Azkaban。接下来就是开始对 Azkaban 测试,Azkaban 使用 command 的方式来描述任务关系,描述方式比较麻烦,不够直观。于是我开始继续寻找大数据批处理调度系统,发现了这个新闻:
分布式工作流任务调度系统Easy Scheduler正式开源
https://blog.csdn.net/odailidong/article/details/88904364
嗯?可视化拖拉拽?支持shell?HA?易观投产两年?java 系?
我:琦鹏( EDH 实施的小哥),要不咱们整下这个 easyscheduler?
琦鹏:哥, 咱这个还有一周就要上线啊,你现在测?
我:我看网上写得挺不错的,搞搞看?部署应该不复杂的,不行还有 Azkaban 嘛
琦鹏:。。。。。。。。。
于是我花了 4 天的时间将 easyscheduler 从测试环境部署到预生产的 POC 全部做完,向领导汇报后,得到的反馈是,可以投产。现在,5 个节点的 ds 系统承接了车联网数据平台的所有批处理任务,已经稳定运行了一年四个月。
02
接触社区
参加社区 2019 年 12 月 8 日第一次 Meetup
2019 年 9 月 17 日,ds 进入 apache 孵化器,开始了第一个 apache 版本的发版工作。我也开始了这个分支的升级测试工作,因为当时 1.2.0 支持了一个非常重要的功能:跨项目依赖。由于对 ds 的了解程度不高,开发环境升级之后,之前做好的定时的任务一直无法调起来,我决定在 12 月 8 日到北京去参加 Apache DolphinScheduler & ShardingSphere 的联合 Meetup,目的是找到 ds 的开发者帮我解决系统升级的问题。这里要感谢一下我的领导,支持我到北京出差参加社区活动。这是当时 Meetup 的照片,也是我第一次参加线下的 Meetup,有一种程序员开大会的感觉。最后一个 topic,各位大佬进行了如何加入 Apache 社区并成为Committer 的圆桌讨论。我了解到了 Apache 项目的运作方式,有哪些角色,参与到开源项目中的方式。
重点是,会后我拿出电脑让 ds 的开发者李岗帮我查组件升级的问题,最后发现是包名的升级兼容性问题,现在想起来都觉得很神奇,从重庆到北京,就处理了一个ds 的升级问题。
回到重庆之后,我决定开始参与到 ds 社区中。于是整理对 ds 的改造点,提了第一个 pr,是关于 Spark 组件支持多版本的功能。PR 的日期是 2019 年 12月 17日。参加 12 月 8 日 Meetup 的决定,让我真正开始动起手来,参与开源。划重点:参加 Meetup!!!
03
参与社区
从细节做起,不光是代码
参与开源项目,贡献社区不单是只有提交代码这一种方式。任何形式参与社区:贡献文档,提交翻译,参与讨论,在邮件列表或 issue 中回答社区用户的提问,都会被社区记录和认可。期间我发现有部分用户,在参与开源项目的时候,喜欢一来就整个 “大 Feature” 。关于一个 Feature,其设计和实现并未经过社区讨论,一个 pr就更改了 100 多个文件,提交上万行代码,这样的 pr 其 review 压力巨大,很难得到社区认可。
在开源贡献的层面来说,所做的工作给社区带来微小而美好的改变就是值得的。个人而言,我参与社区的方式比较综合:
贡献代码
在 issue 列表中,寻找自己感兴趣的 issue,做力所能及的 bug fix 和实现 feature。
报告 bug,参与讨论
贡献文档
提到文档贡献就非常有意思了,在 2020 年初的时候,DolphinScheduler 社区建立了海豚调度的公众号,我贡献给社区的第一篇文档是
Eights,公众号:海豚调度如何在 CDH5.16.2 中部署 Apache Dolphin Scheduler 1.2.0
后续得到的反馈是有不少用户根据这篇文档,成功部署 DS,开始成为小海豚的用户,我感到非常非常高兴。“ 所以,参与社区,真的不一定需要写代码。” 之后,我又陆续向社区贡献文档,涉及版本升级指南,部署参数分析和故障处理。
04
社区收获
参与社区是要花费一定的休息时间和精力的,在参与社区这件事上,付出和收获一定是成正比的。
4.1 引入重要的 Bug Fix
最最最重要的是,通过社区用户的实践,我们可以提前发现一些重要的 bug,比如在 1.3.4 中修复的任务卡死(https://www.oschina.net/news/125150/apache-dolphinscheduler-1-3-4-released)问题,如果对社区熟悉就可以在内部的代码中 cherry-pick 对应的 pr,不用等到社区发版,保证生产系统的稳定性。
4.2 内部开发保持与社区一致
引用HBase社区张铎老师的 PPT,参与开源,将内部的 feature 回馈给社区,参与社区开发,可以保证自研代码和社区代码的步调一致,享受到社区最新的功能
05
写在最后
我一直觉得,做任何事情,学习任何一项技能,都要经历一个:不会到会,会到会用,用到用好,用好到用成自己的,四个阶段。目前,我们正处于将 ds 用好的一个阶段。个人也会继续参与到开源中,在社区中贡献,收获。
笃情开源:我和 Apache DolphinScheduler 社区的故事的更多相关文章
- 我与Apache DolphinScheduler社区的故事
我与DolphinScheduler社区的故事 Apache DolphinScheduler 是一个开源的分布式去中心化.易扩展的可视化DAG大数据调度系统. 于2017年在易观数科立项,2019年 ...
- Apache DolphinScheduler 社区呼唤志愿者
DolphinScheduler是什么? Apache DolphinScheduler 是一个分布式.易扩展并带有强大的可视化界面的大数据工作流调度系统. 2021 年 03 月 18 日正式成为 ...
- 【喜讯】新一代大数据任务调度 - Apache DolphinScheduler 社区荣获OSCHINA年度 “最佳技术团队”...
新一代大数据任务调度 - Apache DolphinScheduler 继 11 月 19 日由 InfoQ 举办.在 300+ 参评项目中脱颖而出获得 "2020 年度十大开源新锐项目 ...
- Apache DolphinScheduler&TiDB联合Meetup | 聚焦开源生态发展下的应用开发能力
在软件开发领域有一个流行的原则:Don't Repeat Yourself(DRY),翻译过来就是:不要重复造轮子.而开源项目最基本的目的,其实就是为了不让大家重复造轮子. 尤其是在大数据这样一个高速 ...
- 暑期 2021 参与社区:新一代工作流调度——Apache DolphinScheduler
在众多企业都在进行数字化转型的大背景下,大数据.人工智能等行业有着十分广阔的前景,其发展也可谓如火如荼.发展过程中这其中当然离不开数据采集.数据流通和数据价值挖掘等各种环节,而各环节的打通需要一个坚实 ...
- 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在新网银行的三大场景与五大优化
在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数.为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战.如今,新网银行多 ...
- Apache DolphinScheduler 2.X保姆级源码解析,中国移动工程师揭秘服务调度启动全流程
2022年1月,科学技术部高新技术司副司长梅建平在"第六届中国新金融高峰论坛"上表示,当前数据量已经大大超过了处理能力的上限,若信息技术仍然是渐进式发展,则数据处理能力的提升将远远 ...
随机推荐
- 分布式任务调度ScheduleMaster
1.什么是ScheduleMaster ScheduleMaster是分布式任务调度系统.简称:集中任务调度系统,最简单的理解ScheduleMaster,就是对不同的系统里面的调度任务做统一管理的框 ...
- CF1682D Circular Spanning Tree
题意: 构造题,节点1~n顺时针排列成圆形,告诉你每个点度数奇偶性,让你构造一棵树,树边不相交. 思路: 因为每条边给总度数贡献2,因此如果度数为1的点有奇数个,直接输出no.显然0个度数为1的,也输 ...
- Eureka服务下线太慢,电话被告警打爆了
某年某月的某一天,就像一张破碎的脸... 错了,重来. 某天,忽然发现大量的告警,经过多番调查研究考察(此处省略3000字),发现是由于 Eureka 服务下线太慢,而仍然有大量的请求打进来导致的报错 ...
- mysql数据恢复 根据旧备份的sql文件和当前data下的ibd文件恢复innodb引擎数据
1.使用navicat fro mysql数据库工具进行恢复 2.将原有备份的sql文件导入数据库 3.新建一个空数据库 4将备份数据库的数据表复制到新建数据库(只复制表格式) 5.在命令行模式中 u ...
- 【Redis】字典
Redis 字典 基本语法 字典是Redis中的一种数据结构,底层使用哈希表实现,一个哈希表中可以存储多个键值对,它的语法如下,其中KEY为键,field和value为值(也是一个键值对): HSET ...
- go程序添加远程调用tcpdump功能
最近开发的telemetry采集系统上线了.听起来高大上,简单来说就是一个grpc/udp服务端,用户的机器(路由器.交换机)将它们的各种统计数据上报采集.整理后交后端的各类AI分析系统分析.目前华为 ...
- 你是否有一个梦想?用JavaScript[vue.js、react.js......]开发一款自定义配置视频播放器
前言沉寂了一周了,打算把这几天的结果呈现给大家.这几天抽空就一直在搞一个自定义视频播放器,为什么会有如此想法?是因为之前看一些学习视频网站时,看到它们做的视频播放器非常Nice!于是,就打算抽空开发一 ...
- go-zero微服务实战系列(七、请求量这么高该如何优化)
前两篇文章我们介绍了缓存使用的各种最佳实践,首先介绍了缓存使用的基本姿势,分别是如何利用go-zero自动生成的缓存和逻辑代码中缓存代码如何写,接着讲解了在面对缓存的穿透.击穿.雪崩等常见问题时的解决 ...
- 用Python爬取文章,并转PDF格式电子书
wkhtmltopdf [软件],这个是必学准备好的,不然这个案例是实现不出来的 获取文章内容代码 (https://jq.qq.com/?_wv=1027&k=QgGWqAVF) 发送请求, ...
- Jenkins + maven + svn 自动部署项目
1.安装Jenkins sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins. ...