2.3.6版本釋出!Apache SeaTunnel Zeta引擎迎來新架構!

ApacheSeaTunnel發表於2024-08-07

file

Apache SeaTunnel 2.3.6 版本於近日正式釋出,社群期待的 SeaTunnel Zeta Master/Worker 新架構、事件通知機制、支援動態編譯的transform等新功能和新能力在這次版本中都有了全面的更新,並新增了首個向量資料庫 Milvus。此外,本版本還進行了一些基礎性的 Bug 修復和文件修復等,歡迎嘗試使用!

📥 2.3.6 版本下載:https://seatunnel.apache.org/download/

📖 Release Note:https://github.com/apache/seatunnel/blob/2.3.6/release-note.md

重點更新

SeaTunnel Zeta Master/Worker 新架構

file

首先是實現 SeaTunnel Zeta Master/Work 新架構。在 SeaTunnel 當前的架構裡是不分 Master 和 Worker 角色的,所有節點既是 Master 又是 Worker、SeaTunnel會從這些Master節點中選擇一個節點,將其作為 active 的 Master 節點,其他 Master 節點作為 standby 節點。下面是 SeaTunnel 叢集的分散式記憶體網格,就是在各個節點之間可以向 HashMap 裡匯入資料,HashMap 就會分散在叢集的所有節點中,並有副本。Flink 等工具會把任務的狀態資訊存在 Zk 等三方系統中。

而 SeaTunnel Zeta 不需要三方系統,其內部自帶的分散式記憶體網格就可以儲存作業的狀態資訊。任何節點程序異常退出,都會去重新分佈記憶體網格里面的資料,保證作業在另外的節點去進行容錯恢復時能夠找到之前的狀態。這樣的架構存在一個問題,當 Master/Worker 在一起的時候,一旦叢集的負載比較高,假設一個 active Master 的節點程序異常退出,它會容錯在新的節點上,在容錯的過程中,因為 Master 節點程序異常退出,所有的任務都要重新進行容錯,這就可能導致新的 Master 節點上的 Worker 節點高負載,這可能又會使新的 Master 程序異常退出。

為了解決這個問題,我們開發了新的架構,將 Master 和 Worker 分開部署,Master 上只儲存資料和排程任務,Work 節點只進行任務的執行和資源的提供。這樣整個 SeaTunnel 中節點的角色就分為 Master、Worker,master_and_worker 三種,使用者可以根據需求去使用。

支援使用SQL的方式建立SeaTunnel任務

file

第二個是支援使用 SQL 的方式去建立 SeaTunnel 任務。之前 SeaTunnel 的任務建立是使用 HOCON 的檔案格式,而 2.3.6 版本支援使用 SQL 的方式建立任務。使用者可以 建立一張 Source 表,一張 Sink 表,最終透過 insert into 語句,從 Source 表裡面查資料,同步到目標表。

Zeta CDC同步釋放空閒的Reader

file

第三個是新增了 Zeta CDC 同步釋放空閒 Reader 的功能。在 CDC 全量階段,為了加快同步的速度,會並行地開很多 Reader 進行資料的讀取和寫入。但是當進入到解析 binlog 進行增量同步的階段,讀取只能是單執行緒的,因為 binlog 是有序的,不能把順序打亂。此時,前面的四個 Reader 和 Writer 其實就沒有任何的資料流了。在 2.3.6 版本中,Apache SeaTunnel 會釋放之前的資源,把裡面的 JDBC 資源、記憶體的資源等全部釋放,保證儘量佔用更少的空間同步更多的資料,支援更大規模任務的執行。針對單個 Writer 寫入較慢的問題,可以在 Writer 裡設定 Writer 的執行緒數。這樣,讀是單執行緒,而寫又是多執行緒並行的寫入。因為讀檔案解析速度較快,單個作業能夠達到每秒三十多兆的寫入速度。如果寫入遇到困難,Writer 端也支援設定並行度。

支援事件通知機制

file

支援事件通知機制,透過這些 API,可以將 Zeta 引擎裡面產生的事件,比如作業成功或失敗,或者 DDL 變更資訊透過請求傳送到其他的系統中去。

新增向量資料庫Milvus支援

向量資料庫可加速 AI 應用程式的開發,並簡化由人工智慧驅動的應用程式工作負載的運作,已成為大模型時代的得力助手。為更好地支援 AI 開發,Apache SeaTunnel 2.3.6 版本新增了對向量資料庫 Milvus 的支援。這是 Apache SeaTunnel 支援的首個向量資料庫,後續將擴充套件對其他向量資料庫的支援。

支援動態編譯的transform

Apache SeaTunnel 2.3.6 版本提供一種可程式設計的方式來處理行,允許使用者根據現有行欄位作為引數自定義任何業務行為,甚至基於現有行欄位作為引數的RPC請求,或者透過從其他資料來源檢索相關資料來擴充套件欄位。為了區分業務,使用者還可以定義多個轉換來進行組合,更加高效和靈活地適配業務場景。

詳情請檢視https://seatunnel.apache.org/docs/2.3.6/transform-v2/dynamic-compile

資源隔離

透過對任務節點新增tag標籤的方式來進行叢集資源的區分,幫助使用者更加合理地規劃叢集任務的排程。

file

資源隔離示意圖

關於資源隔離詳情和實現方法請檢視 https://seatunnel.apache.org/docs/2.3.6/seatunnel-engine/resource-isolation

Sink統一支援table/database等萬用字元使用

新版本還提供了一個接收選項萬用字元功能, 透過萬用字元可以獲取上游表格後設資料。當使用者需要動態獲取上游表格後設資料(例如多表寫入)時,這個功能非常重要,可以幫使用者更加方便和統一地實現多表配置方式,降低多表配置的難度。

檢視文件瞭解如何使用此功能:https://seatunnel.apache.org/docs/2.3.6/concept/sink-options-placeholders

其他

此外,Apache SeaTunnel 2.3.6 版本還實現了 Spark/Flink引擎下的使用者自定義引數功能,新增 Hudi Sink 等多個 Connector 支援,Transform 和 Zeta Engine也進行了眾多更新,並修復了文件遺留問題。

詳情可檢視Release Note: https://github.com/apache/seatunnel/blob/2.3.6/release-note.md

致謝

感謝@Hisoka-X主導本次發版工作,感謝以下貢獻者對本次發版的支援(排名不分先後):

Assert, Asura7969, Carl-Zhou-CN, ChunFuWu, Coen, CosmosNi, Dongyeon Lee, Eric, Felix, Feng Ruohang, FuYouJ, Guangdong Liu, JackeyLee007, Jarvis, Jast, Jia Fan, Kim, Leon Yoah, Marvin, THZ, TaoZex, TeAmo, Thomas-HuWei, Tyrantlucifer, Wenjun Ruan, Wudadada, XiaoMaYi, Xiaojian Sun, Xuzz, YalikWang, ZhiLin Li, Zhihong Pan, ZhilinLi, bingquanzhao, corgy-w, dailai, fcb-xiaobo, gitfortian, hailin0, halo.kim, hawk9821, hilo, ic4y, latch890727, lightzhao, litiliu, lizhenglei, ponxu, rtyuy, seckiller, tcodehuber, useheart, xiaochen, zhangdonghao, zhiwei liu, zuo, 老王, 不忘初心, 狂野之驢

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

相關文章