又是一年开源之夏,八大课题项目奖金等你来拿!
又是一年【开源之夏】季。今年,Apache DolphinScheduler 同样参与到了【开源之夏】活动中来,希望有更多学生群体关注到 Apache DolphinScheduler,并踊跃参与项目共建拿奖金!
No.1 活动介绍
开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,由中国科学院软件研究所与 openEuler 社区共同举办,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。
学生可自主选择感兴趣的项目进行申请,并在中选后获得社区导师亲自指导。根据项目的难易程度和完成情况,参与者还将获取开源之夏活动奖金和结项证书。
开源之夏活动官网:https://summer.iscas.ac.cn/
No.2 活动日程
No.3 项目介绍
Apache DolphinScheduler 是一个云原生易扩展的可视化 DAG 工作流任务调度系统。致力于解决数据处理流程中复杂的任务依赖关系,使各种任务类型(Spark /Flink/MR/Shell/Python/SQL等)在工作流编排中开箱即用。
No.4 奖金设置
- 进阶:奖金人民币 12000 元
- 优化类的任务,例如提高性能,降低资源占有
- 基础:奖金人民币 8000 元
- 功能类的任务,例如为本社区开源项目增加一个或若干个重要特性等
No.5 八大课题
本次活动,Apache DolphinScheduler 开源社区共设有 8 个项目课题具体如下,欢迎参与:
01 为 DolphinScheduler Python API 添加资源文件
【项目编号】222290294
【项目难度】进阶/Advanced
【编程语言】Python
【项目描述】目前,DolphinScheduler Python API 只能传递字符串格式传递任务的参数,例如我们的 tutorial
dolphinscheduler/dolphinscheduler-python/pydolphinscheduler/src/pydolphinscheduler/examples/tutorial.py
我们只将一个字符串传递给shell任务类型。但通常来说,用户希望具体的执行代码储存在其他系统中(希望更好维护和集成),例如将具体文件存储在本地文件系统、GitHub、GitLab、Amazon S3、阿里云 OSS 等。也许我们可以添加语法糖让用户更加简单的操作外部文件
任务 task_parent 将从 URL https://github.com/apache/dolphinscheduler/blob/dev/script/install.sh 加载文件内容并将其传递给参数 command,它使我们的 DAG 文件更容易和可维护
【项目产出要求】
实现 Resource 的插件化
实现具体的插件 Resource 包括但不限于本地文件系统,GitHub, GitLab, Amazon S3, 阿里云 OSS
Python API 的通过测试覆盖率,当前阈值为 90%
文档,包括开发(如何二开实现插件)和使用(每个 Resource 插件使用)
【项目技术要求】
熟悉python,包括decorator、io、network、unittest、document
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】钟嘉杰
联系方式:zhongjiajie955@gmail.com
02 资源中心优化
【项目编号】222290456
【项目难度】进阶/Advanced
【编程语言】Java、Shell
【项目描述】重构 Dolphinscheduler 资源中心的读写逻辑
目前资源中心读写 HDFS/S3/本地目录 通过在数据库表中 t_ds_resources 记录文件/文件夹目录来实现文件记录,但是在用户初始化DS或者用户在DS的外部修改了第三方存储的内容的时候DS无法进行实时同步,希望能够与第三方存储的内容保证实时同步(调用第三方的API对文件增删改查)
【项目产出要求】
DS 不存储资源中心中文件的路径,对于资源中心的读写全都通过调用第三方API实现,只保存任务实例依赖到的内容路径于数据库用于文件删除校验。
实现现有的资源中心的所有功能,其中包括 文件/文件夹 增删改查,任务实例调用资源中心
后端API文档
【项目技术要求】
了解 Linux 系统,对 Linux 文件管理有一定的熟悉
了解 HDFS/S3 组件,能够较快速的根据官方文档学习API的使用
熟悉 Java 语言
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】向梓豪
联系方式:zihaoxiang@apache.org
03 master/worker/api模块日志优化
【项目编号】222290457
【项目难度】进阶/Advanced
【编程语言】Java
【项目描述】由于DS日志不方便真实定位问题,需要将打印日志进行规范及优化
【项目产出要求】
整理出DS打印日志规范指导文档,并提交到文档库
将master/worker/api模块按照规范文档进行落地并提交到开发分支
【项目技术要求】
熟悉 Java 语言
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】进勇
联系方式:jiny.li@foxmail.com
04 自动收集、保存作业提交的Yarn作业的application id
【项目编号】222290458
【项目难度】进阶/Advanced
【编程语言】Java
【项目描述】DolphinScheduler支持各种各样的作业,比如Python、Shell等,其中一个很基础的功能就是收集这些作业创建的Yarn Job的application id。现在的实现方式是用一个正则表达式从作业的日志中解析,但这并不是一个完美的实现方式,本课题的任务就是用一种新的方式去自动收集、报错Yarn Job的application id信息,当然了,必须对用户透明,即对用户创建的作业无侵入。
【项目产出要求】
自动收集、报错Yarn Job的application id信息
必须对用户透明,即对用户创建的作业无侵入
【项目技术要求】
熟悉 Java, Yarn, Hive, Spark SQL, AOP
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】gabrywu
联系方式:gabrywu@apache.org
05 为 DolphinScheduler 添加服务初始化的工作流demo
【项目编号】222290459
【项目难度】进阶/Advanced
【编程语言】Java、Shell
【项目描述】用户在启动DolphinScheduler服务后,可以使用demo-tool程序预置工作流demo,包括但不限于简单的shell任务、逻辑组件任务(switch、dependent、subprocess、condition)、参数传递等功能, 引导用户更方便地使用DolphinScheduler。
【项目产出要求】
预置工作流demo的tool程序
服务启动脚本添加 init模式
工作流demo包括但不限于shell任务、逻辑组件任务(switch、dependent、subprocess、condition)、参数传递等
【项目技术要求】
熟悉 Java、Shell
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】蔡顺峰
联系方式:caishunfeng2021@gmail.com
06 为 DolphinScheduler 添加 Java 任务类型
【项目编号】222290460
【项目难度】进阶/Advanced
【编程语言】Java、Shell、Vue、TypeScript
【项目描述】提供Java类型的调度任务,包括Jar和自定义Java代码两种方式,通过WEBUI定义Java运行时所需要的Resources、Libs资源文件和JVM参数,覆盖定时任务调用Java程序场景并提升用户方便配置。
【项目产出要求】
可执行的Java类型任务插件
Java类型插件支持Jar方式,提供Resources、Libs资源文件和JVM参数的动态参数输入
Java类型插件支持WebUI自定义Java代码方式,提供Java类即时编译,执行
【项目技术要求】
熟悉Shell、Java、SPI、Java compiler、VUE3、TypeScript
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】Kerwin
联系方式:zhuangchong6@163.com
07 支持测试任务
【项目编号】222290461
【项目难度】进阶/Advanced
【编程语言】Java、Vue
【项目描述】
目前新增/修改的工作流在上线前很难验证工作流配置是否正确,只能通过在线上环境执行来验证,所以有必要支持测试环境执行任务。
数据源中心支持配置测试环境源,线上环境源可绑定一个测试环境源。任务执行及工作流执行支持“是否测试”选项,选择测试时,Worker节点在任务执行前,自动替换线上环境源为绑定的测试环境源,再配合Worker分组实现线上、测试环境的隔离,最终达到支持测试任务的目标。
【项目产出要求】
数据源配置页面增加线上、测试选项,支持绑定测试源
工作流执行页面、任务执行页面新增线上、测试选项
Master节点、Worker节点解析执行环境标识,替换数据源为测试数据源
工作流实例、任务实例页面增加执行环境标识
【项目技术要求】
熟悉Java、Spring、VUE3
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】温合民
联系方式:whm_777@163.com
08 为 DolphinScheduler 的项目和资源中心增加读写权限的授权管理
【项目编号】222290462
【项目难度】基础/Basic
【编程语言】Java、Vue、TypeScript
【项目描述】当前DolphinScheduler对于权限的管控相对比较简单,希望在进行项目和资源中心授权时增加操作权限管控来进行读写权限的分离。
【项目产出要求】
针对单个项目的全部内容进行读写权限区分,对单个用户针对单个项目授权只读或者读写权限
针对资源中心的全部内容进行读写权限区分,基于当前资源中心的授权内容区分出只读或者读写权限
进行授权时前端页面增加只读和读写的授权操作
【项目技术要求】
熟悉Java、Spring、Vue3、TypeScript
【项目成果仓库】
https://github.com/apache/dolphinscheduler
https://github.com/apache/dolphinscheduler-website
【项目主导师】孙朝和
联系方式:sunzhaohe0825@gmail.com
No.6 申请参与项目
01 申请资格
本活动面向年满 18 周岁在校学生。
暑期即将毕业的学生,只要在申请时学生证处在有效期内,就可以提交申请。
海外学生可提供录取通知书/学生卡/在读证明证明学生身份。
02 参与流程
03 申请建议
欢迎主动向导师发送邮件进行沟通,附上自己的方案和简历,更加了解你~
认真了解社区项目文档,与导师充分沟通。
欢迎加入交流群交流
参与贡献
随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。
参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:
贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。
社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689
非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A"volunteer+wanted"
如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。
参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。
添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。
活动推荐
当数据资源成为生产发展乃至于生存过程中必不可少的要素,企业该如何通过数据集成帮助企业数据服务全生命周期落地呢?5月14日,数据集成框架 Apache SeaTunnel(Incubating)将邀请一站式数据集成平台 Apache InLong(Incubating)的技术专家与开源贡献者们,一同来到直播间,与大家畅谈使用Apache SeaTunnel(Incubating)与Apache InLong(Incubating)后的实践经历与心得体会。
直播链接:https://live.bilibili.com/24523914?broadcast_type=0&is_room_feed=1&spm_id_from=333.999.0.0