篤情開源:我和 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 用好的一個階段。個人也會繼續參與到開源中,在社區中貢獻,收穫。

本文分享自微信公衆號 - 海豚調度(dolphin-scheduler)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章