成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

數據集成平臺 - SeaTunnel V2 架構演進

大數據
作為一個整體的數據平臺,SeaTunnel 的總體設計目標是成為一個簡單易用的、分布式、可擴展的、支持超大數據級的高吞吐低時延的數據集成平臺。

隨著大數據技術的發展,各種各樣的數據庫、數倉平臺、數據湖等技術不斷產生,如何將這些數據在各個數據源和目標端之間進行同步、集成已經成為了企業面臨的最大的問題。伴隨著 Sqoop 從 Apache 退役,實時同步,CDC、整庫同步等場景也漸漸被企業所重視和需要。在這個背景下,下一代數據集成平臺 Apache SeaTunnel 專注于解決數據集成領域的核心需求,以支持的數據源多、同步速度快、簡單易用被眾多企業接受和使用。

一、SeaTunnel 的設計目標

首先和大家分享下 SeaTunnel 的設計目標。

1、整體目標

圖片

作為一個整體的數據平臺,SeaTunnel 的總體設計目標是成為一個簡單易用的、分布式、可擴展的、支持超大數據級的高吞吐低時延的數據集成平臺。

當前,數據集成面臨的問題主要有五個:

  • 數據源多:已知的數據庫、湖、倉等數據源類型非常多,包括一些 saas 網站、軟件等,總數量甚至到達幾百種,伴隨著新技術的出現,這個數字還在不斷上漲;不同數據源之間也容易出現版本不兼容的情況,為數據集成平臺造成了一些困難;
  • 質量難以保證,監控缺失:最常出現的問題是數據的丟失和重復,很難保證數據的一致性;另一方面,在數據同步過程中出現問題無法進行回滾或者斷點執行;同步過程中的監控缺失也會帶來信息的不透明,例如不確定已經同步的數據數量等;
  • 資源使用高:對于 CDC 的同步來說,多個表需要同步時,頻繁讀取 binlog 對數據源造成的壓力較大;數據源側一些大事務或者 Schema 變更等都會影響下游;JDBC 這類同步,當連接數過多時,有時無法保證數據及時到達;
  • 管理維護難:很多企業離線同步和實時同步是分開的,甚至需要寫兩套代碼,不僅日常管理運維非常困難,在進行離線和實時切換時,數據割接甚至需要人工進行;
  • 技術棧復雜:企業的技術棧差異非常大,選擇同步組件時學習成本較高。

二、SeaTunnel 的現狀

接下來和大家分享下 SeaTunnel 的現狀。

1、支持連接器數量

圖片

目前 SeaTunnel 已經支持 50+ 的連接器數量,包括 Source 和 Sink 的連接器,例如 ClickHouse、ClickHouseFile、Doris 等;還有 10+ 的 Transform;當然,現在還有許多的連接器正在開發。

2、批流一體

圖片

針對同一個連接器,只需要寫一套代碼,就可以通過配置使用批處理或流處理的模式進行同步處理。流處理的方式中目前實現的純流和微批兩種模式,主要是考慮到要同時支持以 Flink 為代表的純流和以 Spark 為代表的微批的方式。

3、多引擎支持

圖片

SeaTunnel 的多引擎支持主要是為了更好的兼容企業現有的技術棧,降低企業在引入 SeaTunnel 的技術成本。當前主要支持的引擎為:

  • Flink:支持多個版本的 Flink 引擎,并支持 Flink 的分布式快照算法等。
  • Spark:支持 Spark 的微批處理模式,并能像 Flink 一樣保存 checkpoint,以支持斷點續傳和失敗會滾。
  • SeaTunnel Engine:為數據同步設計的專用引擎,主要用于企業環境中沒有 Flink 和 Spark 的引擎情況下,想要簡單使用 SeaTunnel 同步數據的場景。SeaTunnel Engine 解決了 Flink 和 Spark 等計算引擎中出現的一些問題,例如容錯粒度大,JDBC 連接過多,binlog 重復讀取等。

4、性能和一致性

圖片

SeaTunnel 擁有高吞吐、精確性和低時延的特性。

  • 高吞吐:當前 SeaTunnel 所有的連接器都做了并行化處理,從而提高整個數據同步的吞吐量。
  • 精確性:SeaTunnel 支持分布式快照的算法,在連接器內部實現了兩階段提交和冪等寫入,保證數據只會處理一次。
  • 低延遲:借助實時處理和微批處理的特性,實現數據低延遲。

5、社區活躍

圖片

SeaTunnel 去年年底進入 Apache 孵化,Star 數量驟升,微信用戶群已達十多個,近五千人左右的規模。

6、用戶繁多

圖片

SeaTunnel 已經被許多用戶使用,包括互聯網企業、傳統企業等。

三、SeaTunnel 整體設計

第三部分給大家介紹下 SeaTunnel 的整體設計。

1、SeaTunnel 整體架構

圖片

從之前的介紹中大家應該能感受到,SeaTunnel 的核心就是連接器。SeaTunnel 設計了一套獨立于引擎的 API,與引擎解耦,并保證基于 API 開發的連接器都能夠運行在多個引擎之上。在實際運行中,通過 Translation 層將連接器包裝成對應引擎的連接器執行。例如針對 Spark 執行引擎,在實際執行中,連接器會包裝成 Spark 的 Source、Transform 和 Sink,同樣的道理也適用于 Flink。當然針對前面提到的 SeaTunnel Engine,就不存在轉換的這一步了。轉換后,SeaTunnel 會將作業提交到對應的引擎中執行,將數據同步到對應的存儲中。當然,作為一個完整的系統,以及為了用戶的友好程度,SeaTunnel 還提供了 Web 頁面,包括代碼開發模式的提交,或者引導式任務提交,調度服務,監控和報警服務等。

整個架構涉及六大關鍵點:

  • Engine Independent Connector API:獨立的連接器 API
  • Connector Translation:連接器翻譯層
  • Source Connector:Source 連接器
  • Transform Connector:Transform 連接器
  • Sink Connector:Sink 連接器
  • 多引擎支持

2、SeaTunnel 使用方式

圖片

SeaTunnel 的使用方式非常簡單,只需要填寫配置文件,SeaTunnel 會自動解析并生成任務,進行提交開啟同步。

3、SeaTunnel 執行流程

圖片

  • 首先會針對來源引擎不同的 Source Connector 進行翻譯,翻譯后由 Source Connector 開始讀取數據。
  • 接下來由 Transform Connector 進行數據的標準化
  • 最終通過 Sink Connector 進行寫出操作。

當然上述流程中還涉及到引擎內部的一些處理,包括分流,Spark 和 Flink支持 SQL 的語法等。

4、Connector 執行流程

圖片

目前可以分為 Driver 端和 Worker 端。在 Driver 端存在SourceCoordinator 管理 Worker端的 Source Split,之后存在枚舉器將拆分后的數據任務交給 SourceReader 進行讀取。在讀取之后會將數據發送給 SinkWriter,此時會對分布式快照進行處理,最終把數據寫入目標端。

5、Engine Independent Connector API

圖片

獨立于引擎的 API 是在今年 3 月份正式進行設計的,核心設計目標是與引擎解耦,專門為數據集成的場景設計。核心目標有以下四點:

  • 多引擎支持:定義一套 SeaTunnel 自己的 API,解耦底層計算引擎
  • 多版本支持:因為 Connector 和不同引擎的 Connector 之間設計了 Transform 層,就可以解決引擎多版本問題,Transform 可以針對不同的版本進行翻譯。
  • 流批一體:同樣的一套代碼,支持在批處理的場景下使用,也支持在流處理的場景下使用。
  • JDBC 復用/數據庫日志多表解析:解決 JDBC 連接過多的情況,盡可能通過一個連接同步多張表的數據。同理,對于一個庫下的表,盡可能也只同步一次,多個表獨立解析即可。

6、Connector Translation

圖片

正如之前介紹了,使用 Spark Connector API 可以將獨立 API 翻譯成Spark 的連接器進行執行,同理也適用于 Flink。

7、Source API

圖片

Source API 主要支持五個特性:

  • 通過 Boundedness 接口,實現批流統一。
  • 通過 SourceReader 和 SourceSplit 支持并行讀取。
  • 通過 SourceSplit 和 Enumerator 支持動態發現分片。這個在流處理中更為常見,需要及時發現新增的文件分片;還有一種場景是通過正則表達式匹配 Topic,當新的可以匹配上的 Topic 出現的時候,可以自動讀取。
  • 通過 SupportCoordinate 和 SourceEvent 支持協調讀取。這個主要用于 CDC 同步場景,在初次同步數據時,需要以批處理的方式全量同步數據,同步完成后主動切換成流處理的方式同步增量數據。
  • 通過 SnapshotState 支持狀態存儲和恢復。當前針對 Flink 引擎是直接使用 Flink 自帶的 Snapshot 功能,對于Spark引擎,SesTunnel 定制實現了 Snapshot 保存到 HDFS 的功能。

8、CoordinatedSource Connector

圖片

這個連接器支持協調器,主要用于 CDC 的場景。它的主要執行流程為:通過 SourceSplitEnumerator 將一些信息(包括 checkpoint、批流情況等)分發到 ReaderThread 里面的 SourceReader 中。

9、ParallelSource Connector

圖片

這個連接器不支持協調器,支持并行處理。具體實現中需要在連接器中定義分區的邏輯,自定義分區的算法。該連接器類型支持多并發。

10、Sink Api

圖片

Sink API 主要是配合 Source 支持 Exactly Once 的語義。Sink API 包含幾個部分:

  • Sink Writer,接收上游數據并寫入目標端。
  • State 存儲,支持狀態存儲,由 Connector 將狀態存儲在 HDFS 中,支持基于狀態重啟 Connector。
  • 支持分布式事務,支持兩階段提交的分布式事務,配合引擎的 checkpoint 機制,保證 Sink 數據只寫一次。
  • Commiter,支持每個 Task 獨立進行事務的提交,主要依賴 Flink 提供的這樣的功能。
  • 支持聚合提交,主要用于 Spark 場景下,checkpoint 狀態保存,需要使用到。

11、GlobalCommit Run In Driver

圖片

Sink API 內部 Commit 的類型之一,在 Driver 端運行,也就是上面提到的聚合提交。在這種模式下,Global Commiter 運行在 Driver 端,但是SinkWriter 運行在 Worker 端,主要適用于 Spark v2.3+ 以及 Flink v1.12+ 版本的情況。

12、GlobalCommit Run In Worker

圖片

Sink API 內部 Commit 的類型之一。這種模式下,Global Commiter 和SinkWriter 均運行在 Worker 端,主要適用于 Flink v1.11- 的版本,Spark 不適用。

13、Commit In Worker

圖片

Sink API 內部 Commit 的類型之一。這種模式下支持在 Worker 端,每個 Task 單獨的 Commit 操作。這個模式適用于 Flink 所有版本,Spark 不適用。

14、SeaTunnel Table & Catalog API

圖片

這套 API 主要為面向應用的 API,能夠簡化同步配置,提供可視化作業配置的基礎。主要包含下面四個方面:

  • 數據源管理:SeaTunnel 定義了一套 API 來支持創建數據源插件,基于 SPI 實現后即可集成該數據源的配置、連接測試工作等。
  • 元數據獲取主要用于引導式界面,選擇數據源后,支持自動獲取元數據的表結構,方便可視化的配置同步作業的源和目標端的表名映射,字段映射等。
  • 數據類型定義:所有連接器都使用 SeaTunnel 定義的格式,在 Connector Translation 會轉換為對應引擎的格式。
  • 連接器創建:SeaTunnel 提供了一套 API 用于創建自動獲取信息創建 Source、Sink 等實例。

四、SeaTunnel 近期規劃

圖片

SeaTunnel 的核心目標為更多、更快、更好用,為了達到這個目標,SeaTunnel 近期規劃目標為以下三點:

  • 連接器數量翻倍,總共能支持 80+ 連接器。
  • 發布 SeaTunnel Web,支持可視化作業管理,支持編程式和引導式的作業配置,支持內部調度(處理簡單任務,crontab 為主)和第三方調度(以 dolphin scheduler 為主)。
  • 發布 SeaTunnel Engine,支持通過減少 JDBC 的連接和 binlog 的重復讀取以達到更省資源的效果;通過拆分任務為 pipeline,pipeline 之間的報錯不會相互影響,也支持獨立重啟操作;借助共享線程以及底層的處理,推動整體同步任務更快的完成;過程中加入監控指標,監控同步任務運行中 Connector 的運行狀態,包括數據量和數據質量。
責任編輯:姜華 來源: DataFunTalk
相關推薦

2010-08-05 17:00:04

RIP V2協議

2010-08-06 14:07:21

RIP V2

2021-08-18 10:39:13

Ubuntu 21.1Linux 內核開發人員

2023-05-10 07:21:58

數據平臺架構

2023-03-16 07:20:15

大數據平臺云數據

2025-01-10 14:35:23

2013-04-13 13:49:35

組播IGMP V2包

2012-04-24 18:10:56

華為E5

2018-03-28 09:53:50

Android架構演進

2022-08-01 15:45:43

數據治理數據集成數據驅動

2023-06-20 08:01:09

RoseDB存儲數據

2021-06-05 10:16:55

Linkerd 服務網格Kubernetes

2009-10-15 09:35:04

Oracle新數據庫機

2022-08-25 22:24:19

架構電商系統

2024-03-06 11:22:33

架構演進技巧

2023-01-09 12:41:55

模型

2022-08-26 20:00:00

系統架構

2024-05-10 08:47:22

標準庫v2Go

2023-12-11 21:52:52

數據中心架構數字時代

2021-08-18 17:16:10

Git分片讀寫分離
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 福利精品在线观看 | 久久久一区二区三区四区 | h片在线看| 精品在线一区 | 精品国产欧美在线 | 视频在线一区二区 | 91久久久精品国产一区二区蜜臀 | 蜜桃视频在线观看免费视频网站www | 午夜手机在线视频 | 精品久久久久久久 | 九九九精品视频 | 日本午夜精品一区二区三区 | 欧美一级全黄 | 午夜精品一区二区三区在线视频 | 国产精品美女久久久久久免费 | 天天综合永久 | 在线欧美激情 | 精品av天堂毛片久久久借种 | 亚洲综合视频 | 在线视频 欧美日韩 | 国产午夜精品久久久 | 日韩精品三区 | 日韩av免费在线观看 | 中文字幕在线剧情 | 国产精品69毛片高清亚洲 | 精品视频久久久久久 | 国产99久久精品一区二区永久免费 | 黄色一级片视频 | 亚洲一区二区三区免费在线观看 | 超碰一区二区 | 韩日在线 | 播放一级毛片 | 国产色片| 中文字幕精品一区二区三区在线 | 免费成人国产 | 久草视频在 | 亚洲天天干 | 国户精品久久久久久久久久久不卡 | 精品日韩| 亚欧午夜| 91视视频在线观看入口直接观看 |