Apache SeaTunnel:新一代開源、高性能數據集成工具
Apache SeaTunnel 是一款開源、分布式、高性能的數據集成工具,可以通過配置快速搭建數據管道,支持實時海量數據同步。
Apache SeaTunnel 專注于數據集成和數據同步,主要旨在解決數據集成領域的常見問題:
- 數據源多樣性:常用數據源有數百種,版本不兼容。 隨著新技術的出現,更多的數據源不斷出現。用戶很難找到一個能夠全面、快速支持這些數據源的工具。
- 同步場景復雜:數據同步需要支持離線全量同步、離線增量同步、CDC、實時同步、全庫同步等多種同步場景。
- 資源需求量高:現有的數據集成和數據同步工具往往需要大量的計算資源或 JDBC 連接資源來完成海量小表的實時同步。 這增加了企業的負擔。
- 缺乏質量監控:數據集成和同步過程經常會出現數據丟失或重復的情況。 同步過程缺乏監控,無法直觀了解任務過程中數據的真實情況。
- 技術棧復雜性:企業使用的技術組件不同,用戶需要針對不同組件開發相應的同步程序來完成數據集成。
- 管理維護困難:受限于底層技術組件(Flink/Spark)不同,離線同步和實時同步往往需要分開開發和管理,增加了管理和維護的難度。
目前已有上百家公司和組織將 Apache SeaTunnel 用于研究、生產和商業產品。
系統架構
Apache SeaTunnel 的運行流程如下圖所示。
用戶配置作業信息并選擇提交作業的執行引擎,然后輸入連接器(Source Connector)負責并行讀取數據并將數據發送到下游的轉換連接器(Transform)或直接發送到輸出連接器(Sink),Sink 負責將數據寫入目標。 三種連接器都可以支持用戶自定義開發和擴展。
Apache SeaTunnel 是一個 EL(T) 數據集成平臺。 因此,轉換連接器只能用于對數據進行一些簡單的轉換,例如將一列的數據轉換為大寫或小寫,更改列名,或者將一列拆分為多列。
Apache SeaTunnel 使用的默認引擎是 SeaTunnel Engine; 如果使用 Flink 或者 Spark 引擎,它會將連接器打包成 Flink 或者 Spark 程序并提交給相應的引擎運行。
數據源
Apache SeaTunnel 目前已經能夠支持上百個數據源,包括各種關系數據庫、圖數據庫、NoSQL、文檔和內存數據庫、分布式文件系統(例如 HDFS)以及各種云存儲解決方案(例如 S3 以及 OSS)。同時還支持很多常見 SaaS 服務的數據讀寫,用戶也可以開發自己的連接器。
功能特性
Apache SeaTunnel 不同于其他數據集成平臺的功能特性如下:
- 多引擎支持,提供了不依賴于特定執行引擎的 Connector API,基于該 API 開發的三種連接器(Source、Transform、Sink)可以運行在不同的引擎之上,例如 SeaTunnel Engine、Flink、Spark 等。
- 插件式連接器,插件式設計讓用戶可以輕松開發自己的 Connector 并將其集成到 Apache SeaTunnel 項目中。目前已經支持超過 100 個連接器,并且數量正在激增。
- 批流一體,完美兼容離線同步、實時同步、全量同步、增量同步等場景,大大降低了管理數據集成任務的難度。
- 支持分布式快照算法,保證數據一致性。
- 支持多表或全庫同步,解決了過度 JDBC 連接的問題;支持多表或全庫日志讀取解析,解決了CDC多表同步場景下需要處理日志重復讀取解析的問題。
- 高吞吐量、低延遲,持并行讀寫,提供穩定可靠、高吞吐量、低延遲的數據同步能力。
- 完善的實時監控,支持數據同步過程中每一步的詳細監控信息,讓用戶輕松了解同步任務讀寫的數據數量、數據大小、QPS 等信息。
- 支持兩種作業開發方法:可視化開發以及代碼開發。
- SeaTunnel Web 項目提供作業、調度、運行和監控功能的可視化管理。
安裝體驗
Apache SeaTunnel 支持本地安裝、Docker 以及 K8S 部署方式,使用非常方便。例如,使用 Docker 啟用本地模式的命令如下:
docker pull apache/seatunnel:<version_tag>
目前最新的版本為 2.3.10。當下載完成后,可以使用如下命令來提交任務:
# 運行作業,從虛擬數據源到Console輸出
docker run --rm -it apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c config/v2.batch.config.template
# 使用配置文件運行作業,/tmp/job/fake_to_console.conf
docker run --rm -it -v /tmp/job/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c /config/fake_to_console.conf
# 運行時設置JVM參數
docker run --rm -it -v /tmp/job/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -DJvmOption="-Xms4G -Xmx4G" -m local -c /config/fake_to_console.conf
Apache SeaTunnel 官方網站提供了中文文檔,建議直接閱讀。