開源之夏 2023 學生報名已經正式開啟!Apache DolphinScheduler 今年繼續參與開源之夏的活動,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同學們可以在開源之夏官網 https://summer-ospp.ac.cn/ 找到 Apache Dolph ...
開源之夏 2023 學生報名已經正式開啟!Apache DolphinScheduler 今年繼續參與開源之夏的活動,2023 年 4 月 29 日-6 月 3 日 15:00 UTC+8,同學們可以在開源之夏官網 https://summer-ospp.ac.cn/ 找到 Apache DolphinScheduler 下的項目,挑選自己感興趣的課題,通過項目相對應導師聯繫方式與導師溝通並準備申請資料,提交申請。
開源之夏 2023 介紹
開源之夏是由中科院軟體所“開源軟體供應鏈點亮計劃”發起並長期支持的一項暑期開源活動,旨在鼓勵在校學生積极參与開源軟體的開發維護,培養和發掘更多優秀的開發者,促進優秀開源軟體社區的蓬勃發展,助力開源軟體供應鏈建設。
開源之夏聯合國內外開源社區,針對重要開源軟體的開發與維護提供項目任務,面向全球高校學生開放報名。中選學生將在項目資深開發者(項目導師)的指導下,參與開源貢獻,完成開發工作並貢獻給開源社區。
零距離體驗頂級開源項目、跟著技術大牛提升研發能力、用成果贏取豐厚獎金和證書等,都是此次活動的亮點,非常值得一試。
獎金設置
● 進階難度:學生結項獎金稅前人民幣 12000 元。
● 基礎難度:學生結項獎金稅前人民幣 8000 元。
活動流程
當前,活動已經進行到學生註冊、遇到事溝通項目、提交項目申請的階段,滿足條件的學生均可報名參加。今年 11 月,活動將進入尾聲,公佈年度優秀學生名單。
可參考學生指南查看報名詳細流程:https://summer-ospp.ac.cn/help/student/
Apache DolphinScheduler社區介紹
Apache DolphinScheduler基於Apache開源社區理念打造,是全球知名的DataOps領域開源項目。作為一個雲原生分散式去中心化,易擴展的可視化DAG工作流任務調度平臺,它致力於解決數據處理流程中錯綜複雜的依賴關係,使調度系統在數據處理流程中開箱即用。獨特的架構設計和產品設計,使得其具備高可靠性、簡單易用、高擴展性、豐富的使用場景等特性。
- 高可靠性:去中心化的多Master和多Worker服務對等架構, 避免單Master壓力過大,並採用任務緩衝隊列來避免過載;
- 簡單易用:DAG監控界面讓所有流程定義可視化,通過拖拽任務完成定製DAG,通過API方式與第三方系統集成, 一鍵部署;
- 豐富的使用場景:支持多租戶,支持暫停恢復操作. 緊密貼合大數據生態,提供Spark, Hive, M/R, Python, Sub_process, Shell等近20種任務類型;
- 高擴展性:支持自定義任務類型,調度器使用分散式調度,調度能力隨集群線性增長,Master和Worker支持動態上下線。
截至目前,Apache DolphinScheduler社區在開源力量的推動下發展迅速,已有460+ Contributors 積极參与到社區的共建中,GitHub Star 已達10.4k,以開源社區的模式集合全球頂尖高科技公司的共同貢獻,打造全球極致簡單易用、穩定可擴展的DataOps平臺。
Apache DolphinScheduler已累計在1000多家公司生產環境中作為企業的核心調度系統,包括IBM、騰訊、科大訊飛、美團、360、聯通、順豐等,覆蓋金融、電信、零售、雲計算、數據處理等廣泛領域。
項目官網:https://dolphinscheduler.apache.org/
GitHub:https://github.com/apache/dolphinscheduler
加入Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg
DolphinScheduler項目課題介紹
本次活動,Apache DolphinScheduler 開源社區共有 6 個項目課題經過組委會評審,同學們可在鏈接頁面中挑選自己感興趣的項目:
https://summer-ospp.ac.cn/org/orgdetail/22999f09-2be2-4dd8-b10f-bc4d6610cc25?lang=zh
01 重構依賴任務模式
項目鏈接:https://summer-ospp.ac.cn/org/prodetail/232290219?list=org&navpage=org
項目難度:進階
支持語言:中文&英文
項目社區導師:進勇
導師聯繫郵箱:[email protected]
技術領域:Java
開源協議:Apache License 2.0
項目簡述:
當前狀況:當前的依賴是依賴單個任務和All,這裡的All其實是依賴工作流,並不是依賴所有的任務。
計劃改造:
1、依賴單個任務的方式不變,All改造成依賴工作流中所有任務,新增一種類型依賴工作流。
2、前端在依賴的地方增加個單選框,選擇依賴任務或者工作流,如果選擇依賴任務,任務的選擇框顯示出來,如果現在依賴工作流,任務的選擇框隱藏
3、對於後端,All對於的任務code還是0,依賴工作流時,對應的任務code可使用-1或其他表示。
項目產出要求:
實現dependent任務既能依賴全部的任務,又能依賴工作流。
項目技術要求:
● 熟悉 java語言
● 對任務調度系統有瞭解
項目成果倉庫:
https://github.com/apache/dolphinscheduler
02 Dolphinscheduler master/worker
恢復容錯優化
項目鏈接:
https://summer-ospp.ac.cn/org/prodetail/23b660198?list=org&navpage=org
項目難度:進階
支持語言:中文&英文
項目社區導師:向梓豪
導師聯繫郵箱:[email protected]
技術領域:Bash、Linux、Java
開源協議:Apache License 2.0
項目簡述:
當前主/工作節點掛起時。它將執行容錯操作,併在主/工作節點重新啟動後重新啟動失敗的任務。這將導致用戶在Linux進程或yarn應用程式中執行的Shell/Spark/Flink任務重覆運行。
因此,我建議在主/工作程式重新啟動後,如果這些任務處於正常執行狀態,則不會重新執行。
Shell節點,因為當前DS任務節點的進程的執行路徑是唯一的。因此,我們可以通過 ps-ef | grep XXX 查詢該進程是否存在。如果是,則不會重新啟動任務。
Yarn 相關的任務節點通過 yarn application-status application_id 檢查任務是否正在運行。如果是,則不會重新啟動任務。
項目產出要求:
在容錯恢復過程中,Shell節點能夠正常獲取其先前的運行狀態。
在容錯恢復過程中,Yarn 相關的任務能夠正常獲取其先前的運行狀態。
項目技術要求:
熟悉 Linux 進程管理
理解 Hadoop Yarn 組件並且能根據官方文檔快速學習使用相應API
熟悉 Java 語言
項目成果倉庫:
https://github.com/apache/dolphinscheduler
03 pydolphinscheduler任務增加
minix機制
項目鏈接:
https://summer-ospp.ac.cn/org/prodetail/232290221?list=org&navpage=org
項目難度:基礎
支持語言:中文
項目社區導師:zhongjiajie
導師聯繫郵箱:[email protected]
技術領域:Python
開源協議:Apache License 2.0
項目簡述:
pydolphinscheduler 是 apache dolphinscheduler 的 python sdk,允許用戶通過 python 語法定義工作流和任務。目前,pydolphinscheduler 任務的代碼都是進行單獨定義的,如 shell 任務
class Shell(Task):
_task_custom_attr = {
"raw_script",
}
ext: set = {".sh", ".zsh"}
ext_attr: str = "_raw_script"
def __init__(self, name: str, command: str, *args, **kwargs):
self._raw_script = command
super().__init__(name, TaskType.SHELL, *args, **kwargs)
我們發現有部分任務需要有特定的屬性,如 Kubernetes 任務 https://github.com/apache/dolphinscheduler-sdk-python/issues/25 。我們希望引用 minix 類來解決這部分問題,關於minix 可以參考 https://www.pythontutorial.net/python-oop/python-mixin/
項目產出要求:
通過 minix 解決這個類似的問題
保證單元測試及覆蓋率
項目技術要求:
瞭解 python 基礎,對 OOP 有一定認識
瞭解 pytest 相關
項目成果倉庫:
https://github.com/apache/dolphinscheduler
04 數據源中心擴展成源中心
項目鏈接:
https://summer-ospp.ac.cn/org/prodetail/232290223?list=org&navpage=org
項目難度:進階
支持語言:中文&英文
項目社區導師:高楚楓
導師聯繫郵箱:[email protected]
技術領域:Vue.js、Spring、BootDatabase、Java
開源協議:Apache License 2.0
項目簡述:
DolphinScheduler 有一個 Datasource Center 的組件,用於管理 sql 任務的外部連接,如 mysql、hive、spark 等。
但是不只是sql任務,其他一些 DolphinScheduler 任務插件也需要外部連接,比如AWS EMR任務、Zeppelin任務、K8S任務等。我們可以豐富需要 Datasource Center 來管理連接的場景,尤其是 那些具有憑據的外部系統並將其升級到連接中心。
相關問題:[Feature] Add connection center feature for DS #10283(https://github.com/apache/dolphinscheduler/issues/10283)
目標:
將 Datasource Center 的名稱更改為 Connection Center。
重構部分AWS EMR、Zeppelin、K8S、Sagemaker任務插件,方便用戶在連接中心管理外部連接。
去掉安全中心的Cluster Management和K8S Namespace Manage,因為管理K8S集群不是大數據編排工具的工作。用戶可以在連接中心為 K8S 任務插件配置 K8S 連接。
項目產出要求:
一個或多個提交到github倉庫
項目技術要求:
[後端] 熟悉Java編程。
[後端] 對 Spring Boot Framework 有一定的瞭解。
[前端] 對VUE有所瞭解
項目成果倉庫:
https://github.com/apache/dolphinscheduler
05 增加跨工作流的參數傳遞功能
項目鏈接:
https://summer-ospp.ac.cn/org/prodetail/232290357?list=org&navpage=org
項目難度:進階
支持語言:中文
項目社區導師:鮑亮
導師聯繫郵箱:[email protected]
技術領域:Vue.js、Spring Boot、Java
開源協議:Apache License 2.0
項目簡述:
- 工作流可以選擇自己的輸出參數,作為工作流的輸出參數,輸出給下游任務使用。
場景1:shellA -> subprocessB -> shellC
shellA 查出所有學生信息 (a,b,c) 並將 users 輸出給下游任務subprocessB
subprocessB 是一個子工作流, 負責計算所有學生個數 userCount,並將userCount 作為工作流的輸出傳遞給下游
shellC 負責將 userCount 輸出到控制台
2. 依賴任務也可以選擇將被依賴任務的輸出參數繼承過來使用。增加依賴參數繼承功能
需要在依賴任務上增加一個欄位:是否繼承被依賴任務的參數
場景2:
工作流A :taska1 -> taska2, taska2 輸出了參數 count=10
工作流B : taskb1 -> dependentb2 -> taskb3
dependentb2 依賴了taska2 就可以將count繼承過來作為dependentb2的輸出參數,給taskb3使用
備註:前端知識不用太多,只是簡單的效果
項目產出要求:
實現以上兩個場景的需求,並將代碼提交到開發分支上
詳細的設計文檔以及使用文檔
詳盡的UT測試類
項目技術要求:
熟悉 Java 語言
熟悉 spring boot
可以實現簡單的前端效果
項目成果倉庫:
https://github.com/apache/dolphinscheduler
06 DolphinScheduler Listener機制
項目鏈接:
https://summer-ospp.ac.cn/org/prodetail/232290593?list=org&navpage=org
項目難度:進階
支持語言:中文
項目社區導師:孫朝和
導師聯繫郵箱:[email protected]
技術領域:SpringBoot、Java
開源協議:Apache License 2.0
項目簡述:
當工作流/任務執行時,第三方系統希望可以通過接收消息的方式(而非輪詢)來實時獲取工作流/任務的狀態和相關信息,可以通過添加自定義Listener的方式來實現獲取需要的信息推送到特定的目的地(消息隊列、外部系統介面等)的目標。
項目產出要求:
完成Listener機制設計和開發、並將代碼提交到開發分支上
詳細的設計文檔和使用文檔
詳盡的UT測試類
項目技術要求:
熟悉Java語言
熟悉SpringBoot
項目成果倉庫:
https://github.com/apache/dolphinscheduler
歡迎同學們報名 Apache DolphinScheduler 的項目,為社區建設添磚加瓦的同時,獲得豐富的開源經歷和豐厚的獎金回報!
為加快項目報名申請速度,建議同學們可以主動嚮導師發送郵件進行溝通,附上自己的方案和簡歷,讓我們更加瞭解你,並認真瞭解社區項目文檔,與導師充分溝通。
我們還有專門的開源之夏活動交流群,給大家解答關於項目和參與活動的疑惑,添加小助手 17743592110 微信,並備註“開源之夏 2023”,我們將拉您進入交流群。
本文由 白鯨開源 提供發佈支持!