採訪嘉賓 | 郭煒、高俊 編輯 | Tina 北京時間 2023 年 6 月 1 日,全球最大的開源軟體基金會 Apache Software Foundation(以下簡稱 ASF)正式宣佈 Apache SeaTunnel 畢業成為 Apache 頂級項目 (TLP, Top Level Pro ...
採訪嘉賓 | 郭煒、高俊
編輯 | Tina
北京時間 2023 年 6 月 1 日,全球最大的開源軟體基金會 Apache Software Foundation(以下簡稱 ASF)正式宣佈 Apache SeaTunnel 畢業成為 Apache 頂級項目 (TLP, Top Level Project)。
Apache SeaTunnel 於 2021 年 10 月申請加入 Apache 孵化器,不到 2 個月,便以“全票通過”的優秀表現正式成為 Apache 孵化器項目。2023 年 5 月 17 日,Apache 董事會通過 Apache SeaTunnel 畢業決議,結束了為期 18 個月的孵化,正式確定 Apache SeaTunnel 成為 Apache 頂級項目。
這是首個由國人主導並貢獻到 ASF 的大數據集成領域的頂級項目,為了瞭解項目的起源、發展過程,以及開源心得,InfoQ 採訪了 Apache SeaTunnel 項目的關鍵成員。
採訪嘉賓簡介:
郭煒,Apache 基金會成員;Apache DolphinScheduler PMC Member;Apache SeaTunnel Mentor。
高俊,Apache SeaTunnel PMC Chair。
Apache SeaTunnel 的起源
** InfoQ:在大數據體系裡,Apache SeaTunnel 起到的主要作用是什麼?**
郭煒:目前,大數據體系裡有各種各樣的數據引擎,有大數據生態的 Hadoop、Hive、Kudu、Kafka、HDFS,也有泛大資料庫體系的 MongoDB、Redis、ClickHouse、Doris,更有雲上的 AWS S3、Redshift、BigQuery、Snowflake,還有各種各樣數據生態 MySQL、PostgresSQL、IoTDB、TDEngine、Salesforce、Workday 等。我們需要工具讓這些數據之間能互聯互通,那麼 Apache SeaTunnel 就是打通這些複雜數據源的利器,它可以簡單、準確、實時地把各種數據源整合到目標數據源當中,成為大數據流動的“高速公路”。
** InfoQ:Apache SeaTunnel 是如何發揮作用的,其關鍵原理、核心設計是什麼?**
郭煒:面對成百上千的數據源,我們需要一個簡單高效的架構來解決各種各樣的數據源之間數據集成的問題。Apache SeaTunnel 由三大部分組成,源連接器(Source Connector)、傳輸計算引擎(SeaTunnel Zeta、Flink、Spark),目標連接器(Sink Connector)。簡單來說,源連接器就是實時地讀取數據源端(也許是 JDBC,也許是 Binlog,也許是非結構化 Kafka 或者 SaaS API,AI 數據模型),把這些數據轉化成 SeaTunnel 可以理解的標準數據格式再傳送給傳輸計算引擎,傳輸計算引擎將對這些數據進行處理(例如數據格式變化,分詞等)和分發,最終 Sink Connector 將 SeaTunnel 數據格式變化為目標端的格式存入目標資料庫。當然,其中有非常複雜的高性能數據傳輸、分散式快照、全局 Checkpoint、兩階段提交等,來確保數據可以高效、快速地傳遞到目標端。
最近社區還提交了 SeaTunnel-Web,讓用戶不僅可以用類 SQL 語言來做 Transform,還可以利用界面拖拽來直接打通不同的數據源。任何一個開源用戶都可以方便地擴展自己使用數據源的 Connector,然後提交到 Apache 社區,讓更多的人一起使用它。同時,你也可以快速使用別人貢獻的 Connector 來快速解決自己企業數據源之間的打通問題。目前,SeaTunnel 已經支持了包括 CDC、雲存儲、資料庫、SaaS 等 100 多個數據源,讓企業方便地打通各種各樣的數據源。人人為我、我為人人 ,這在開源的 Apache SeaTunnel 項目中體現得淋漓盡致。
Apache SeaTunnel 的演進過程
** InfoQ:Apache SeaTunnel 項目的演進,主要有哪幾個發展階段?**
高俊:Apache SeaTunnel,起初名為 Waterdrop,是一個易用且高效的海量數據集成平臺,主要基於 Apache Spark 和 Apache Flink 構建。它支持海量數據的實時同步與轉換。
Waterdrop 階段。這一階段的主要目標是幫助 Spark 更簡單地處理異構數據源數據。在此期間,Waterdrop 的主要使命是通過提供一個簡單易用、能夠支持每天數百億條海量數據同步的開源軟體,將海量數據同步的能力傳播到全世界。
SeaTunnel 初期。在 2021 年 Waterdrop 更名為 SeaTunnel 之後,它的主要目標是更簡單地進行異構數據源同步和集成。SeaTunnel 的設計目標是要大大降低用戶使用 Spark、Flink 等技術做數據集成的門檻。這個階段的重點是利用 Spark 和 Flink 作為底層數據同步引擎,提高數據同步的吞吐性能。此外,SeaTunnel 還開始引入可插拔的插件體系,支持超過 100 種數據源,從而增強其數據集成的能力。
SeaTunnel 中期。在 SeaTunnel 的中期階段,SeaTunnel 建立了Zeta引擎,專為數據同步集成而設計。新的引擎減少了對第三方服務的依賴,使得那些沒有大數據平臺或不願意依賴大數據平臺進行數據同步的用戶也能輕鬆使用 SeaTunnel。Zeta 引擎利用 Dynamic Thread Sharing 技術優化資源使用,提供數據同步任務的 Checkpoint 和容錯機制,以及執行計劃優化器以減少網路傳輸,從而提高數據同步效率。SeaTunnel 的這一階段重點在於支持全場景數據同步,包括離線批量同步、全量同步、增量同步、實時同步以及 CDC。
SeaTunnel 最新階段。最近,SeaTunnel 進入了一個新的發展階段,這個階段的目標是使得更廣泛的用戶群體,包括數據分析師和數據科學家,也能從 SeaTunnel 高效、簡單的數據集成功能中受益。為了實現這個目標,SeaTunnel 引入了可視化界面,讓用戶能更直觀、更方便地實現異構數據的實時同步和集成,其目標已經擴展到為工程師、數據分析師、數據科學家、AI 演算法工程師等人群提供更高效、更簡單的異構數據同步、實時同步集成功能。
從 Waterdrop 到 SeaTunnel ,再到 Zeta 引擎的自主設計,再到現在的可視化界面融合,Apache SeaTunnel 的發展歷程凸顯了其持續創新,致力於降低大數據處理難度,並提升數據處理效率的使命。未來,我們期待 SeaTunnel 能在大數據領域持續推動創新,為更多用戶提供優質的數據集成解決方案。
** InfoQ:Apache SeaTunnel 經歷過重構?那麼改進了哪些功能,並如何保證穩定性的?**
高俊:這裡主要指的是對 Apache SeaTunnel 連接器的重構,連接器是負責將具體的上下游數據源進行打通,是數據集成的關鍵組成部分。加入 Apache 之前,Waterdrop 的定位是讓 Flink 和 Spark 使用起來更簡單,所以整個架構設計都是基於 Flink 和 Spark 之上。特別是連接器,基本是將 Spark 和 Flink 的連接器引入進來就行了,對於 Spark 和 Flink 沒有的連接器,需要使用 Spark 和 Flink 的 API 分別開發一套代碼,早期批和流還是不同的 Flink API,意味著同一個數據源為了實現批同步和流同步,也需要開發兩套代碼。
代碼的開發量和維護成本太高了。於是去年年初社區發起了重構連接器的討論,目標是定義 SeaTunnel 自己的連接器 API,與具體的引擎解耦,不依賴具體的引擎 API,真正的實現批流一體,同一個數據源只需要一套代碼就可以同時運行在 Spark 和 Flink 引擎上。
在討論初期有不少人持反對意見,認為 Flink 和 Spark 這些引擎很成熟,強依賴它們也沒什麼問題,有些貢獻者覺得我們應該放棄 Spark 全面依賴 Flink,在 Flink 的基礎上把功能做好做完善。而且,重構連接器 API 意味著之前的 50 多個連接器的工作都白費了,一切要從零開始。但最終社區達成了共識,一切從 SeaTunnel 項目的定位出發,所以技術方嚮應該服從項目的目標和定位。目標確立後,社區花了一個月設計新的連接器 API,然後用了 4、5 個月就已經支持到了 100 多個連接器,速度之快是之前的架構不可能達到的,並真正實現了 SeaTunnel 支持多引擎和多引擎版本的能力。
現在,SeaTunnel 已經支持了 Spark2、Spark3、Flink 1.14、Flink 1.15、Flink 1.16 等多個引擎和版本,同時也有了自己的專註於解決同步領域問題的超高性能引擎 Zeta。
** InfoQ:SeaTunnel CDC 與 Flink CDC、DataX 的主要區別是什麼?我們應該如何選型?**
郭煒:SeaTunnel 是批量處理和 CDC 處理同時支持,它可以自動化地切換批和流的切換點,同時在引擎方面,它支持了 Flink CDC 不支持的 DDL 變更檢測,第三方 Kafka 緩衝支持,多表公用一個任務等。相比 DataX,除了批量性能超過其 30% 之外,更是支持了實時 CDC 同步場景。當然,最大的差別還是在於 SeaTunnel CDC 是一個支持 100 多個數據源的同步工具,它支持非結構化到結構化的自動轉化,不僅支持資料庫,也支持 Kafka、SaaS API 等複雜數據的實時抽取。更是有強大的 SeaTunnel-Web 界面,讓大家拖拖拽拽就可以建立同步任務,同時可以監控處理各種同步情況。總之,SeaTunnel 的目標就是讓異構數據源簡單、高效、準確地集成到用戶指定的目標端去。
** InfoQ:Snowflake、AWS 在 Zero-ETL 數據轉換、流通和集成上有一些投入,您們如何看待這個技術方向?它會是未來嗎?**
郭煒:Zero-ETL 和 DataMesh 類似,目標都是儘量不移動數據或者少量移動數據的情況下來達到實現查詢數據結果的目標。在一些場景下,例如,KV 查詢和 OLAP 聯合查詢或者 OLTP+OLAP 聯合查詢有一定優勢。但是,數據應用的場景非常複雜,否則就不會出現幾千種數據引擎來處理各種各樣的事項,同時,數據集成不僅僅是資料庫之間的數據集成,還包括 SaaS 到數據源,向量數據到 AI 引擎,各種各樣新興的場景會層出不窮,這些其實都是 DataMesh 和 Zero-ETL 無法處理的場景。所以,從我的觀點來看,DataMesh 和 Zero-ETL 可以解決用戶 20% 左右的數據集成的場景問題,隨著 AI 和 SaaS 的流行,更多的場景需要更專業的數據集成工具來解決。
Apache SeaTunnel 的開源故事
** InfoQ:Apache SeaTunnel 是如何和開源結緣的?能具體說說其中的故事嗎?**
高俊:SeaTunnel 的誕生。Apache SeaTunnel 開始叫做 Waterdrop,主要致力於更簡單在不同數據源上使用 Spark、Flink 處理數據,後來遇到了郭煒和白鯨開源的代立冬,我們一眼看中了這個領域無限的空間。此時,Apache Sqoop 已經退役,Apache 基金會領域當中也沒有一款可以替代 Sqoop 解決大數據同步生態的項目,而在國內 DataX 也只能支持批量同步數據源,同時數據源支持也有限,而在海外有 FiveTran、Airbyte 這些爆火的項目,在業界的確非常需要一個可以高效、簡單、準確打通各種數據源的開源項目。
於是,在 Apache 董事會成員薑寧、歐洲 PMC Jean-Baptiste Onofré、Apache 大佬 Ted Liu 等人的支持下,SeaTunnel 進入到了 Apache 孵化器,成為一個專業的,以高效數據集成、打通各個數據源的 Apache 孵化項目。
進入 Apache 孵化器之後,SeaTunnel 得到了快速的發展,Connector 數量也從過去的 20 個變成現在的 100 多個連接器,涵蓋了大部分公司使用的數據源,不僅是國內的 B 站、頭條、新浪,連美國 JP Morgan 的用戶都被如此多、高效的數據連接器吸引使用,印度第二大運營商 Bharti Airtel 更是在生產環境中使用了 SeaTunnel。
SeaTunnel 的第一個挑戰。不過此時 SeaTunnel 也遇到它的第一個挑戰,那就是曾經以 Spark、Flink 為核心引擎的時候,我們在大數據同步場景里多處受挫,例如,無法支持 CDC 場景下的表自動變更,同步幾千個表的時候,Spark、Flink 要麼都在一個任務里,任何一個表出問題,整個任務失敗,要麼就是一個表一個任務,資源和源資料庫都受不了,SeaTunnel 用戶在數據量大了之後苦不堪言。這時候,我提出一個想法,那就是建立 Apache SeaTunnel 自己的引擎——一個專門為數據同步集成而生的引擎。它不依賴於以計算為主的 Flink、Spark,可以自由地滿足數據同步場景中的 Schema Evolution,錯誤數據採集,數據限流等,還可以節約 Flink、Spark 為複雜計算預留的記憶體、CPU slot,同時採用類似 Apache Arrow 的記憶體技術,在保證全局一致性前提下,最大限度提升數據傳輸效率。而且,社區小伙伴們給這個引擎起了一個很有想象力的名字,Zeta,它是宇宙里速度最快小行星的名字,意味著可以載著宇宙的數據快速穿梭於星際之間。(後來發現也是澤塔奧特曼的英文名,我想既可以幫助數據星際傳輸,如果遇到怪獸也可以打小怪獸吧 _)。
從零開始直接寫一個引擎談何容易,一遍一遍的設計討論,一遍一遍地推翻原有設計,大概做了四到五版的設計和原型實現後,在 2022 年的 10 月份,第一個版本的 SeaTunnel Zeta 才發佈了 Alpha 版。這個版本一經發佈就技驚四座,不僅支持了 DataX 不支持的 CDC 場景,還在框架上支持 DDL 變更同步,性能更是好得出奇,比海外類似開源的產品要快 40 倍。SeaTunnel Zeta 的出現一下子打開了 Apache SeaTunnel 的天花板,無論將來有幾千上萬的數據源連接器,都可以乘坐著 Zeta 小星星以光速 1/3 的速度遨游宇宙了~
SeaTunnel 的第二個挑戰,開源和開源商業界限怎麼分?這時候,Apache SeaTunnel 的 Committer 們各個頗有大將風範,劍鋒所指各種數據源,數據源連接器數量一下增長了 5 倍,從 2022 年 1 月份 20 個數據源變為 2022 年 12 月的 104 個數據源。
但是問題又來了,用戶紛紛抱怨,寫類 SQL 的代碼還是太麻煩,普通人用不了,能不能更簡單地用界面使用 SeaTunnel?的確,讓數據同步能力平民化就是 SeaTunnel 這個項目建立的初衷。此時,已經加入白鯨開源的我跟白鯨開源的聯合創始人代立冬商量,能不能把基於 SeaTunnel 的商業版 WhaleTunnel 的界面貢獻給 Apache 社區,讓更多的人擁更簡單的數據同步的能力。一直推崇開源文化的開源積極分子代立冬十分明白一個簡單易用的界面對於解決用戶問題有多麼的重要,可是如果界面也開源了,那麼白鯨開源這家商業公司將來收入靠什麼呢?怎麼能養活這些熱愛開源的人繼續貢獻開源呢?
我找到了白鯨開源商業合伙人,也是前 Informatica 中國區總經理李晨和運營合伙人聶勵峰商量這個事情,雖然大家熱愛開源,但是大家也要吃飯養家糊口啊...... 這次討論非常激烈,持續了一整天。最終李晨講到,“白鯨開源”的基因就是開源,如果我們為了商業訂單,把能幫助到大家快速解決問題的核心功能閉源了,這樣閉源和開源會對立,那麼白鯨開源和 Informatica、Fivetran 這些閉源軟體公司有什麼區別?我們要走就走一條在中國持續開源的路,堅信在更多的用戶對於開源產品的打磨,一定會讓白鯨開源商業產品做的更好,而不是走一條閉源產品的路!
於是,在 2023 年一個春天的夜晚,幾個人一致同意把商業 WhaleTunnel 的界面全部貢獻到 SeaTunnel 當中,讓更多的人具有更簡單異構數據實時同步的能力。在後面 SeaTunnel 周例會上,我一公佈這個消息,一下子好多用戶都興奮了,說我們就等著 web 開源了,趕緊做好,我們馬上上線!(代立冬、李晨、聶勵峰周會聽到這裡,淺淺一笑,偷偷地下線,不留功與名——如果將來這幾個人出來拿著碗“化緣”,也請大家多多支持啊,支持他們就是支持 SeaTunnel 這些原創的開源力量了)。
SeaTunnel 畢業啦!過五關、斬六將,在 Apache 基金會 7 位 Mentor 的輔導下,Apache SeaTunnel 社區共加入了 28 位 Commiter、18 位 PMC,也在社區的共同努力下發佈了 8 個 Apache Releases。通過透明的開發過程和開源的代碼管理,Apache SeaTunnel 項目在社區中獲得了廣泛的參與。中間還剋服了社區的建立和本土化、精力分配、團隊協作和社區成長等重重困難和挑戰,最終於 2023 年 6 月 1 日兒童節這一天,給所有社區的小兒童和大兒童們獻上了兒童節的賀禮!
中國終於有了自己的開源數據同步集成的頂級項目啦!這是 SeaTunnel 的一大步,但只是中國開源的一小步,相信更多的優秀開源項目在中國如春筍般出現,中國的開源商業也可以支持中國開源的愛好者們更好地兼顧養家糊口和開源貢獻!
** InfoQ:SeaTunnel 畢業成為首個國人主導的數據集成領域 Apache 基金會頂級項目,有什麼經驗可以分享?特別是在運營一個全球化的社區方面?**
高俊:就像我們加入一家新公司需要瞭解這家公司的文化一樣,參與 Apache 開源項目之前,我們也需要瞭解 ASF 的文化。ASF 文化就是 The Apache Way。
深入進入開源就會發現,開源不只是開放源碼這麼簡單的一件事,開源還關乎社區管理、社區活躍、社區溝通交流、社區文化等,這就需要我們對 Apache way 有更加深刻的理解。
鑒於此前的經驗,Apache SeaTunnel 在進入 Apache 孵化器初期就對 Apache Way 的重要性有著深刻的理解,比如對於開源社區來說,Community Over Code 的理念要植根心中,為此也需要社區做出準備和努力,儘可能降低每個有興趣參與項目人的門檻,甚至打造 0 門檻,比如制定社區激勵計劃,製作新手入門指南,精選 Good First Issue,重要 Feature 進展跟蹤,通過定期的用戶訪談獲取反饋和優化建議,定期解答社區關於項目和社區的疑問等。
社區貢獻不僅限於代碼,非代碼的貢獻甚至有時會發揮比代碼更加有價值的作用,比如利用自身影響力為項目引發關註做貢獻,寫作項目相關技術和非技術文章,參與社區組織的各種活動、在各種時機和場合為 Apache SeaTunnel“代言”,把它推薦給更多的用戶等,都是參與社區的渠道。
同時,Community Over Code 還強調開放、交流、合作,Apache SeaTunnel 秉持著這些理念,堅持社區內與海內外社區保持溝通,相互學習交流,堅持與 Apache 社區建立溝通,所有討論發生在郵件內,issue 中,並通過社區自媒體渠道公佈項目和社區的重大進展和計劃,讓社區保持公開透明。
從進入孵化期至今,Apache SeaTunnel 先後與多個海內外開源項目舉辦線上線下 Meetup 20 餘場,包括已先於 Apache SeaTunnel 順利從 ASF 孵化器畢業的 Apache Shenyu、Apache InLong、Apache Linkis,Apache Doris、IoTDB、StarRocks、TDengine 等成熟開源項目,以及在美國、印度等海外地區與 Trino、APISIX、Shopee、ALC Indore 聯合舉辦的 Meetup 等。社區之間的合作與交流推動開源技術的發展和應用,Apache SeaTunnel 與其他開源項目合作,共同解決了技術難題,有利於提升開源生態的整體水平,拓展了開源生態的邊界。
Apache SeaTunnel 還積极參与國內外的技術大會和展覽,展示開源項目和技術成果,通過與業界專家和開發者的交流,擴大項目的影響力和知名度。
經過時間的積累,社區已有了質的變化。從社區的郵件討論、GitHub 的數據展示中,你會發現 Apache SeaTunnel 的社區開始真正變得活躍與多元化。
** InfoQ:在開源上,Apache SeaTunnel 還有哪些未來規劃?**
高俊:主要是五個方面:
- SeaTunnel 將進一步提高 Zeta 引擎的性能和穩定性,並將過去規劃的 DDL 變更,錯誤數據處理,流速控制、多表同步等落地完成。
- SeaTunnel-Web 也將從 Alpha 狀態進入 Release 狀態,讓大家可以直接從界面來定義、控制整個同步流程。
- 加強AGI組件配合關係,除了可以使用ChatGPT自動生成Connector之外,加強向量資料庫,大模型 插件的打通,讓現有100多種數據源無縫對接大模型。
- 完善和上下游生態的關係,與 Apache DolphinScheduler、Apache Airflow 等 Apache 生態的整合和互聯互通。
- 在 Google Sheet、飛書、騰訊文檔支持之後,加強 SaaS Connector 的構造,例如 ChatGPT、Salesforce、Workday 等。
本文由 白鯨開源 提供發佈支持!