Apache SeaTunnel資料處理引擎適配的演進和規劃

ApacheSeaTunnel發表於2024-08-21

file

作者 | Chao Tian (tyrantlucifer),Apache SeaTunnel PMC Member

摘要

Apache SeaTunnel作為一個高效能資料同步工具,以其高效的資料處理能力,為資料整合領域帶來了創新。在引擎上,Apache SeaTunnel除了支援自身的Zeta引擎外,還支援Spark和Flink。在2024年的CommunityOverCode Asia,Apache SeaTunnel PMC Member 田超在論壇上為大家介紹了Apache SeaTunnel基於Flink的演進歷程、架構設計、核心特性,以及社群的當前進展和未來規劃。以下為演講核心內容整理:

Apache SeaTunnel基於Flink的演進歷程

Apache SeaTunnel的演進主要體現在兩個API版本上:

  • Flink API V1:SeaTunnel的初始API版本,與Flink的計算引擎緊密耦合,connector緊密依賴Flink介面。

file

  • Flink API V2:SeaTunnel的新一代API,所有的外掛還是繼承了plug-in的形式,但實現了與計算引擎的解耦;支援更多Flink版本;不依賴於Flink原生聯結器,Sink增加了Writer、Committer和Aggregated Committer,Source增加了Reader、Split和Split Enumerator;降低了Flink升級的成本;並提供了更細粒度的介面,增強了系統的可擴充套件性,滿足更多元化的資料來源的同步需求。

file

基於Flink的架構設計

從Job執行的角度,Apache SeaTunnel的架構設計緊密依託於Flink的資料處理能力。

在Common API層,SeaTunnel做了外掛的抽象化,基於外掛的抽象化,SeaTunnel可以對接不同的計算引擎。

file

對接層在SeaTunnel中統稱翻譯層(Translation Layer)。針對Flink,SeaTunnel實現了Flink代理的Source、Sink和Transform,生成Flink引擎的Job graph後,以實現資料在Flink上高效轉換和同步。

file

基於Flink好用的核心特性

市面上的資料同步工具很多,比如Apache Flink CDC、Chunjun等。

file

相比之下,Apache SeaTunnel展現了以下特點:

  • 支援的Flink版本:SeaTunnel支援1.13及以上版本,提供更廣泛的相容性。
  • Flink聯結器:SeaTunnel不依賴於Flink原生聯結器,提供了更高的靈活性。
  • 使用者自定義指標:SeaTunnel允許使用者定義自己的指標,增強了監控和分析能力。
  • 資料轉換支援:SeaTunnel支援資料的轉換操作,包括但不限於對映、過濾等。
  • Flink-SQL:儘管目前SeaTunnel不支援Flink-SQL,但這是社群未來工作的重點之一。

Apache SeaTunnel基於Flink的特性和好用的功能,我們也來總結一下:

  1. 支援Flink原生的poll-push架構,可以實現實時獲取分片資料,有效解決多並行度下的問題,最大化利用資源
  2. 支援 Flink原生的兩階段提交功能
  3. 支援Flink原生的使用者自定義指標能力
  4. 支援使用Flink原生的global-accumulator記錄資料同步作業詳情
  5. 支援所有Flink作業提交模式(應用模式/會話模式)
  6. 支援列舉器和讀取器之間使用者定義的事件通訊
  7. 支援Flink 1.13–1.18之間的所有版本

社群進展與未來規劃

目前,Apache SeaTunnel社群正在積極推進以下工作:

  • 多表讀寫支援:正在開發在Flink引擎上支援多表同時讀寫的功能,以支援一庫多表讀寫,多表路由等場景,提高資料處理的效率和靈活性。目前,這一功能已在SeaTunnel Zeta引擎上實現。

file

  • Flink Proxy Source & Sink重構:當前,Flink Proxy資料的同步需要在Flink proxy Row和SeaTunnel Row資料格式之間進行多次轉換,這樣的轉換不但會有資料精度損失的風險,還極大地降低了資料轉化的效能。為此,社群正在進行源和接收器的重構工作,以最佳化效能和穩定性。

file

未來,社群還計劃實現以下特性:

  • 模式演化(Schema Evolution):目前,SeaTunnel僅在Spark和Zeta引擎上支援模式演化功能,未來,社群計劃在Flink上支援資料模式的動態變化,以適應不斷變化的資料需求。

file

  • SQL轉換支援:計劃在Flink上支援SQL轉換,包括選擇投影、使用者定義函式(UDF)、使用者定義表函式(UDTF)和過濾條件等,以提供更豐富的資料處理能力。

file

結語

Apache SeaTunnel作為資料同步領域的一個創新工具,其基於Flink的高效資料處理能力,為資料整合帶來了新的解決方案。社群的不斷努力和創新,將使Apache SeaTunnel在未來的資料同步任務中發揮更大的作用。如需進一步瞭解或參與Apache SeaTunnel專案,歡迎加入社群參與討論。

本文由 白鯨開源 提供釋出支援!

相關文章