背景
没错,本文的主人翁就是那个在多个 DolphinScheduler 用户群超级活跃,”孜孜不倦“ 地给用户各种答疑的小伙,如果你在群里问过问题,伯毅多半概率回答过,哈哈,今天就是这样一个不仅贡献代码而且愿意帮助别人成长的小伙子的心路历程分享给大家。
主人翁:张伯毅,某上市公司大数据工程师, 目前主要负责大数据平台研发. 技术控,喜欢阅读源码, CSDN 博客专家.
DolphinScheduler 从开源算起马上 2 岁了,很荣幸与它一起成长, 离春节就剩几天了, 记录一下, 就当是对这一年多的成长做了一个回忆。
01
相遇
2019 年 10 月公司决定开展中台方面的业务,基于大数据体系,要搞一套从数据接入到数据输出一站式的 "全家桶". 在大数据体系,其实各项技术已经相对成熟了. 之前公司用的技术栈是 HDP 体系,所以一直使用 Oozie 作为调度系统. 在调研阶段,出于各种原因吧,但是我觉得 Oozie 并不是很好用,比如在考虑到定制开发的时候,觉得前端开发成本有点高以及最重要的是觉得在 DAG 可视化方面并不是很好等等各种原因,所以就开始寻找其他的解决方案.
机缘巧合之下,我在 Gitee 上找到了人气爆棚的 Easy Scheduler (DolphinScheduler的前身). 然后就被它的两张图所吸引.
当时的界面,至今收藏
整体采用分布式无中心化设计: ZooKeeper(3.4.6+)
元数据存储: Mysql5.5+
前端: VUE
后端: Java, 也用到了很多优秀的项目,比如 google guava/guice, grpc, netty, quartz等
以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态
支持丰富的任务类型:Shell、MR、Spark、SQL(mysql、postgresql、hive、sparksql), Python, Sub_Process、Procedure 、Datax、Sqoop、Waterdrop 等
支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作
支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败
支持工作流全局参数及节点自定义参数设置
支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑
支持任务日志在线查看及滚动、在线下载日志等
实现集群HA,通过 Zookeeper 实现 Master 集群和 Worker 集群去中心化
支持对 Master/Worker cpu load,memory,cpu 在线查看
支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计
支持补数
支持多租户
支持国际化
02
相识
03
相知
人生是由无数个第一次组成的,总有那么一些事情值得回忆~
3.1. 贡献PR
3.2. 文章入选公众号
2020 年过年因为疫情的原因,在家办公. ( ps :所以这也是我自从毕业之后,陪爸妈最久的一次. 待久了真容易遭嫌弃. )
在家搞调度的设计文档,需要工作流定义创建时有关于 task 任务数据结构的说明.当前的版本工作流里面的 DAG 图是拼装一个很大很大的 Json 字符串, 我需要对这里数据做一个梳理,可以给外部系统调用. 但是官方没有,就自己梳理了一下,习惯性的写了一篇文章, 方便以后查找. 正好当时微信群里有一个哥们也需要,就共享了一下. 官方在征求我的同意之后,转发到了官方 [海豚调度] 公众号上. 开心是肯定的,不过想起来很久之前立下的要写公众要的 flag, 脸疼.
现在, 更疼…
3.3. 基于源码开发
3.4. 贡献文档
正常在提交的代码时,正常来说首先要先提一个 issue,每个 PR 用于处理 issue
中的问题, 每个 PR 只能处理一个问题. 如果有多个问题,需要拆分为多个 PR
又反馈: 资源中心配置的时候, 你关于 kerberos 的配置怎么给删了 ? 现在用 kerberos 的人还是蛮多的, 把这个加上吧. 修改 + 1
个人觉得用 kerberos 的人比较少,直接就把 kerberos 部分的配置就先删了,
只保留了几条非 kerberos 配置…
我把关于 hdfs 的大部分需要改的配置都列上了, 嗯, 这是嫌多了… _
同步修改英文的文档, 蹭了一个PR O(∩_∩)O哈哈~
3.5. 配置 checkstyle
checkstyle 参考[https://checkstyle.sourceforge.io/]是一种帮助开发者编写遵循编码规范的 Java 代码开发工具。它可以自动化检查 Java 代码的方法以及格式,使得开发者不用再做这项无聊(但很重要)的任务。它非常适合于希望实施编码标准的项目。
在 DolphinScheduler 中配置 checkstyle 和 code-style 的方式:
checkstyle 和 code-style 配置文件
checkstyle: https://github.com/apache/incubator-dolphinscheduler/blob/dev/style/checkstyle.xml
code-style: https://github.com/apache/incubator-dolphinscheduler/blob/dev/style/intellij-java-code-style.xml
3.6. 群管理
9 月初, 有伙伴在开发群里的说 DolphinScheduler 已经有 10 来个群了, 想找一些人帮忙代为管理, 正好我在用户群里面,就主动报了名, 感谢信任. 我顺利成为了二,五,七这三个用户群里的管理员. DolphinScheduler 的发展很快,前一阵又开通了 DolphinScheduler 的第八个用户群(8 群也已 300+ 人了). 当新任的管理员问需要注意哪些事项, 我就梳理了一些, 发了出来.
1.管理一下群里的日常.给大家提供一个积极向上的环境.
2.新人审核,邀请时验证信息需要填写验证信息“公司+职位+姓名” 。(有效过滤广告神器)
3.回答问题,解决用户遇到的问题,当初我就是在社区大佬的帮助下走过来的,投桃报李.
4.微信群的特权只有国内的用户享有. apache 组织对微信群是不提倡的,
一般只是认可 issue 或者邮件. 微信记录不利于知识的沉淀,
考虑到社区的良性发展,需要引导发Issue, 积累久了,
有问题可以做到搜索issue直接获取答案.简单高效.
毕竟微信群里的答疑的人都是义务性质的,都有自己的工作要忙.
回复的时效性没有办法保障. 而issue会有专人来处理,肯定不会遗漏…
5.群里发招聘信息的让他配 100 元红包,10 分钟内不发的也可以送飞
03
相守
自从参与了 DolphinScheduler 之后, 觉得社区的技术氛围会特别好, 尤其是一个技术人, 跟一堆牛人在一起, 相互成长是一件蛮幸福的事情.
04
后记
至此,我与开源社区这一年的故事就讲完了,期待与您的相遇,让我们一起携手,让本土开源一起壮大。我在 DolphinScheduler 社区等您来。
本文分享自微信公众号 - 海豚调度(dolphin-scheduler)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。