采訪嘉賓 | 郭煒、高俊
編輯 | 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 等,
本文由 白鯨開源 提供發布支持!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/556170.html
標籤:大數據
上一篇:關系型資料庫速度比較(性能基準測驗)及python實作
下一篇:返回列表
