Learning by contributing!訪 StarRocks Committer 周康、馮浩桉

語言: CN / TW / HK

身處技術創新驅動的時代,只有開放協作才能帶來巨大進步,創造非凡成就。

We are learning by contributing. 

We crowdsource from community.

StarRocks 社群的發起和發展,正是立足於各個開發者的“貢獻”和“集智”。

周康,馮浩桉。一個是在雲廠商從業多年的超級奶爸,一個是步入職場不久的“萌新”技術宅。兩人都在 StarRocks 社群成立第一天加入,過去五個多月裡為 StarRocks 專案作出了重要貢獻。

近期,經過 StarRocks 社群 PMC 提名與投票,兩位開發者接受 StarRocks 社群邀請,正式成為 StarRocks 專案的 Committer。

他們在技術上有哪些癖好,如何看待當下的 OLAP 產品,又如何走上了社群之路?StarRocks 社群和兩位有故事的男同學聊了聊。

周康:公有云時代,要善用業務優勢提出創新架構

就職於阿里雲開源大資料平臺,負責 EMR OLAP 產品研發,包括 StarRocks、ClickHouse、Presto(Trino)等開源元件。曾參與基於開源元件構建的分散式排程平臺、分散式計算平臺、資料分析平臺的建設。

他熱情幫助社群夥伴解決實際使用問題,在專案上的主要貢獻有:

  • 支援通過外表的方式查詢 Apache Iceberg 資料湖中的資料;

  • 支援讀取 CSV 檔案格式;

  • 支援 GZip 壓縮格式;

  • 提升外表的 HDFS 儲存 block size 過大時的查詢效能。

個人的多年愛好是籃球,去年增加了一項——遛娃。

  • Committer 首先是開發者,談起“開發者”的身份,你會怎麼說?

從初學者到稍有經驗的開發者,我覺得最重要的就是熱愛。作為一個開發者,很多瞬間我都會感到興奮:遇到一個難解決的效能問題,看到一篇新的有意思的論文,看到一段很精妙的程式碼……

比較喜歡 Debug 一些自認為複雜的問題,對於程式碼細節會有強迫症和小潔癖。

  • 談談你與技術社群的結緣

我最早深度關注的社群是 Redis 和 Cassandra,為了將其作為基礎元件使用,看了一些分散式系統的論文和專案。我對這兩個元件的實現非常感興趣,在當時激發了我對於分散式系統和開源的興趣。後來,工作中經常接觸 Spark,也就會開始不定期把自己的一些想法反饋給社群。

第一個 Spark Jira

最早接觸到 Redis 和 Cassandra 社群時,我意識到自己在分散式、計算、儲存等方向的理論儲備都非常匱乏。於是就帶著補課的想法找到了 MIT 6.824 這門課,這門課讓我對 CAP 和一致性協議有了最基礎的認識,而能發現這門課也得益於社群裡的分享。

  • 你在 OLAP 產品方面都有怎樣的經歷和心得?如何成為了 StarRocks Committer?

最早接觸 OLAP 是源於公司內部要基於 Spark SQL+Kudu 構建資料分析平臺,雖然專案上線了,但支撐起來的業務量不算大,也遇到過很多穩定性問題。經歷了技術和產業的變遷,如今作為公有云上 OLAP 產品的開發者,我最大的體會就是,要有創造和改變的意識,去利用自己的業務洞察能力提出創新架構,來解決未來可能出現的問題。

2021年,我們團隊在進行 OLAP 產品選型時接觸到了 StarRocks。作為雲廠商一側,我在想應該先給 StarRocks 帶來什麼能力?首先想到的幾點裡就包含資料湖分析方向。當時看到 Presto CPP 版本在推進,那麼作為已經具備向量化、CBO 這些能力的 StarRocks 是否可以做得更好呢?

經過和社群 PMC、Committer 們的交流,我們決定先開始這方面的初步探索。目前,極速資料湖分析在 StarRocks 中已經邁出了第一步。(產品詳情:http://help.aliyun.com/document_detail/404790.html

作為 Committer,我是真的覺得目前的工作還不夠,有很多想法還沒落地。對於如何成為 Committer 這件事,最重要的是在社群積極發聲,我們團隊在資料湖分析方向邁出第一步的過程就是例證。

還有一次,我基於 Spark 的經驗判斷當時 HDFS Scan 部分存在優化空間,於是就提出了自己的 PR,發現剛好社群夥伴也在嘗試優化這個問題。最終經過討論,我的實現被 Merge 了。所以,積極發現問題並勇敢提出來吧!

  • 作為最早加入 StarRocks 社群的開發者之一,遇到過哪些問題?最有成就感/獲得感的事情是什麼?

接觸到 StarRocks 時,我對向量化、CBO、並行執行引擎等技術方向很感興趣,很想快速加入做出貢獻。但是當時我對這個系統的核心幾乎沒有瞭解,而專案已經發布了一兩個版本,想參與這些事情對我來說短期內不太現實。那麼我應該先給這個專案帶來些什麼呢?

為了找到答案,我嘗試和PMC與Committer溝通,最終判斷作為雲廠商可以先立足資料湖分析這個方向去做嘗試。而上面提到的向量化等技術對於資料湖分析都是至關重要的。(戳《如何打造一款極速資料湖分析引擎》

最有成就感的事情是什麼?Good First Issue 就挺有里程碑意義的,是我在社群最早的探索。

 

Good First Issue

  • 作為首批 StarRocks Committer,對這個社群有怎樣的感想和建議?

作為還處在發展早期階段的技術社群,StarRocks 機會很多,需要大家一起努力去完成的工作有非常多。然而作為一個數據庫領域的基礎軟體系統,參與的門檻也是相對有點高的。

因此,我建議社群的 PMC 、Committer 們能夠多分享一些原始碼、原理級別的內容給大家,讓更多人能夠參與共創。(上 B 站搜尋“StarRocks_labs”,探訪 StarRocks 技術內幕 )

隨著社群使用者越來越多,希望能有更多使用者共建生態,社群需要創造機會讓他們參與。

關於未來,我主要會集中在雲原生、存算分離、資料湖、極速等方面進行具體工作的展開和探索。

技術教育從娃娃抓起

馮浩桉:何謂開發者?天生不老實,總想搞事情!

StarRocks 核心研發工程師,“萌新”資料庫開發者。

他在StarRocks很多重大 Feature 實現和改進上做出了貢獻,包括:

  • 全域性低基數字典功能的核心開發者

  • 主導實現了 Java UDF,UDAF,UDTF

  • 實現了 Insert into MySQL 外表 BE 部分

  • 優化了 Hive 外表 Scan 效能

  • 優化了 多個日期函式計算效能

  • 優化了 Sum(case when)表示式計算效能

熱衷於敲敲打打,做一些遊戲demo,參加過遊戲開發界的“華山論劍”GAMEJAM。喜歡觀察不同的領域思考與解決問題的方式。

  • Committer 首先是開發者,談起“開發者”的身份,你會怎麼說?

天生不老實,總想搞事情。內心極度渴望想要支援更酷的功能、更好的效能,把一個 Query 的執行從上到下優化到極致。總之,想做很多事情。

  • 談談你與技術社群的結緣

最早接觸技術社群是兩年前,那時候組內做專案用到了一個`redis-cluster-proxy`的元件。臨近上線遇到了一個小 Bug,就連夜排查修復了。當時還不會提 PR,就在 Issue 裡截圖說明,然後就收到了第一條來自社群的反饋。

收到的第一條來自技術社群的反饋

之後工作遇到過 CRoaring/gperftools/brpc/wasmer 等第三方庫的問題,提過一些小的修改,雖然有的解決過程比較曲折,最終還是得到了社群的支援和反饋,非常感謝這些社群的技術大牛願意 review 我的PR。

在這裡誇一下 CRoaring 社群和 GCC 社群的大佬!我睡覺之前發 Issue,基本上起床後就能收到反饋。

起床後收到的社群反饋

  • 你在 OLAP 產品方面都有怎樣的經歷和心得?如何成為了 StarRocks Committer?

我在社群裡面灌水比較多哈哈哈,運氣比較好,手速比較快,解決了一些 Bad Case,例如優化了聚合函式以及某些表示式執行效能。同時也跟社群的同學一起合作開發了全域性字典優化和一些時間函式的優化。

2020 年畢業後進入 OLAP 領域,對向量化執行比較感興趣。去年 9 月份就加入到 StarRocks 的開發者陣營中,給 StarRocks 做了一些小改進。在社群裡接觸了很多大佬,給了我非常多的幫助和建議。

StarRocks 社群目前除了要在功能上發力外 ,比如雲原生、資料湖、更好的易用性,在效能上仍在繼續深度探索,例如排序/JOIN 效能,甚至未來還會去支援 Codegen,提升在高併發的場景下的效能和穩定性表現。這也是能引起我熱情、共同進步的地方。

  • 作為最早加入 StarRocks 社群的開發者之一,遇到過哪些問題?最有成就感/獲得感的事情是什麼?

最開始還是對程式碼不熟悉,在嘗試優化 Shuffle 或者是優化表示式的時候忽略了很多場景和特殊的 Case,給社群提的幾個 PR 中直接被肉眼 Review 出問題了。

  • 作為首批 StarRocks Committer,對這個社群有怎樣的感想/建議/探索計劃?

社群氛圍比較開放,和我交流過的不少海外地區的小夥伴都有提過 Commit,一天之內就解決了社群整理過的 Good First Issue。

對新人比較友好,Reply 和 Review 都很快,新同學可以很快融入社群建設中。80% 的 Issue 問題當天就會有人 Reply,Slack 上幾個小時就有人回覆。

作為深入參與的開發者,對於需要改進的地方也能及時感受到,比如:

社群文件還需進一步完善,很多已經支援的函式或者是功能的描述都需要進一步優化。

易用性上可以繼續探索,爭取早日拋棄手動指定分桶,另外資料匯入的易用性也有進一步提高的空間。

支援 DataFrame 的方式可以再探索,某些場景下 SQL 對資料分析人員還存在一定侷限性。

如何對使用者遮蔽引數、讓產品用起來更加無腦?一些功能的設計還需要更加人性化。

未來對社群的期望嘛,就是大家一起把 StarRocks 做成最強最好用的產品,讓接觸到它的一瞬間就感到驚豔的使用體驗。遇到覺得效能或者功能不佳的 Case 可以甩在 Issue 裡面,我相信很快這些問題都會一一優化掉。

✨✨

讓程式碼為更多人所用是不少工程師的夢想

兩位在社群根深葉茂的 StarRocks Committer

也是從 Good First Issue 開始:

http://github.com/StarRocks/starrocks/issues/1742

瞭解 StarRocks 社群規範和貢獻流程:

http://github.com/StarRocks/community/tree/main/Contributors/guide

祝各位開發者擁有正向迴圈的社群之旅

歡迎在 GitHub 為 StarRocks 點亮你的 🌟