背景

本文的主人翁是 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 用好的一个阶段。个人也会继续参与到开源中,在社区中贡献,收获。

最新文章

  1. pt-heartbeat
  2. Objective-C 原型模式 -- 简单介绍和使用
  3. josn
  4. IOS UIView 属性clipsToBounds
  5. pycharm 注册
  6. mongodb学习5--mongo的type类型
  7. Spring概述
  8. [整理]通过AngularJS directive对bootstrap日期控件的的简单包装
  9. windows7 jdk 环境变量添加
  10. Universal-Image-Loader 示例 工具
  11. [移动网关]2G环境下资源下载有一定概率失败,客户端日志显示收到403错误
  12. 03(3) 基于GMM-HMM的SR基础
  13. load和DOMContenLoaded的区别
  14. idea 配置 jdk tomcat
  15. 第四次OO总结
  16. OGC标准服务 WMS WCS WFS WPS
  17. 外显子分析报错解决方案bin field of BAM record does not equal value computed based on alignment start and end, and length of sequence to which read is aligned
  18. bzoj1009 / P3193 [HNOI2008]GT考试
  19. STM32-RS485通信软硬件实现
  20. 基于tiny4412的Linux内核移植(支持device tree)(二)

热门文章

  1. C# 四舍五入中一处易错点
  2. Hadoop入门学习笔记(一)
  3. Kubernetes Job Controller 原理和源码分析(三)
  4. 13. L1,L2范数
  5. 【高并发】通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程
  6. 论文解读(GraphMAE)《GraphMAE: Self-Supervised Masked Graph Autoencoders》
  7. 写个js获取2019博客之星投票活动的名次与投票数
  8. 前端下载图片的N种方法
  9. MAC帧的格式&&wireshark分析MAC帧
  10. NC15553 数学考试