Daph:新一代流批一體資料整合與資料處理工具

一只原發表於2024-08-27

Daph原始碼位於gitee,地址是https://gitee.com/dasea96/daph

概述

Daph的中文名稱是大副,大副是職位僅低於船長的船舶駕駛員,甲板部(駕駛部)負責人,船長的主要助手。
Daph的英文名稱,取自【有向無環圖Directed Acyclic Graph】的第一個字母與最後三個字母。

Daph是一個通用的資料整合與資料處理平臺級工具,可用於構建視覺化配置化的資料整合與資料處理平臺。

Daph,大道至簡。
Daph的核心概念是節點,節點具有輸入線與輸出線,每條線中承載資料,節點承載任意資料處理邏輯。
Daph的核心構件是一個自創的通用DAG資料流引擎,可以流轉任意Java/Scala資料結構,可以引入任何基於Java平臺或具有Java客戶端的資料計算元件作為資料流底層資料計算引擎。
Daph的核心功能是聯接多個節點構成DAG圖,並流轉資料。

功能

  • 全量增量整庫整表資料整合:以極簡配置方式,完成全量增量整庫整表資料整合
    • 已支援50多種資料來源型別的全量整表同步
    • 已支援Flink-cdc所支援的所有資料來源型別的cdc整表同步
    • 已支援mysql/postgresql/oracle/sqlserver/doris/starrocks到mysql/postgresql/oracle/sqlserver/doris/starrocks/hive/iceberg/kafka的全量增量整庫同步
  • 流批一體複雜資料處理:以極簡配置方式,完成流批一體任意複雜多表sql處理邏輯

價值

  • 統一資料開發檢視:Daph既具有豐富的資料整合能力,又具有強大的資料處理能力
  • 降低資料開發門檻:透過配置檔案,完成資料開發
  • 縮短資料開發週期:開箱即用的海量資料整合與資料處理能力,極簡的安裝部署方式,極簡的二次開發過程

特點

  • 通用:可連線任意JVM型別的節點,構成DAG圖,並流轉任意Java/Scala資料結構。因此,不僅目前能夠用於構建DAG資料流,而且具有潛在的任意粒度的DAG任務排程的潛力,可基於一個daph-core,統一任務開發與任務排程,實現一體化的視覺化任務開發與任務排程平臺。
  • 簡單:概念簡單,配置簡單
    • 基於開源計算引擎,不引入新的複雜概念
    • 節點配置簡單,比如daph-spark節點配置項,與Spark配置項幾乎完全一致,不增加學習開銷。
  • 強大:架構強大,功能強大
    • 架構層面具有多層環繞執行體系,可定製任意Job級/DAG級/節點級/方法級功能,比如節點資料預覽功能、節點監控功能、前置後置SQL功能。目前所有節點均已支援前置後置建表功能,daph-spark所有節點已支援前置後置SQL功能
    • daph-spark僅有5個聯結器、6個轉換器,卻已支援44種資料來源的流批讀寫,且能隨時擴充更多資料來源;已支援對單表的map、filter、sql處理,對多表的join及任意複雜sql處理;且支援spark能支援的任何catalog
    • daph-flink僅有2個聯結器、1個轉換器,卻已支援任何flink-sql支援的資料來源的流批讀寫;已支援對單表與多表的任意複雜sql處理;且支援flink能支援的任何catalog。
  • 聚焦:聚焦於視覺化配置化的資料整合與資料處理,聚焦於簡化開源計算引擎的使用,不增加學習開銷。
  • 流轉任意資料結構:可流轉任意JVM資料結構,比如Java/Scala List、Spark DataFrame、Flink DataStream。
  • 支援多種計算引擎:可引入任何基於Java平臺或具有Java客戶端的資料計算元件作為資料流底層資料計算引擎,比如Java/Scala/Spark/Flink,等等。
  • 快速擴充套件節點:可方便地擴充套件與部署具有任意邏輯的節點,比如擴充套件新的聯結器節點,以支援讀寫新的資料庫型別;比如擴充套件新的轉換器節點,以便引入特定資料處理邏輯處理資料。只需要完成以下三點,即可完成:
    1)實現一個配置介面與一個功能介面
    2)將擴充套件的節點對應的jar放在伺服器目錄
    3)json檔案中配置擴充套件節點資訊

對比業界類似軟體

Daph:

  1. 既能用於資料整合,又能用於複雜的資料處理
  2. 極致通用的DAG模型,能夠流轉任意JVM物件,引入任意符合Spark/Flink程式設計模型的計算引擎
  3. 不重複造輪子,專注於簡化開源計算引擎的使用,配置項幾乎與開源計算引擎一一對應
  4. 完美運用開源計算引擎的各項能力,包括且不限於流批處理能力、catalog能力、sql能力
  5. 能夠及時從開源計算引擎的生態系統中獲益
    • 比如Spark,一旦新出現一種資料庫聯結器,在Daph中只需要在pom.xml中新增依賴,就能立刻使用
對比維度 Daph SeaTunnel StreamSets StreamX Kettle Chunjun
通用性
易用性
開源
資料結構流轉能力 所有JVM物件 Dataset[Row]/DataStream[Row]/Zeta資料結構
計算引擎接入能力 任意符合Spark/Flink程式設計模型的計算引擎 Spark/Flink/Zeta Spark Spark/Flink Java Flink
流水線模型 DAG DAG DAG
功能擴充套件性
學習成本
開發成本
運維成本

架構模型

資料流模型

Daph的資料流模型是DAG資料流模型,如下圖所示:

Daph資料流模型

例如一個資料整合與資料處理綜合場景,如下圖所示:

  • 輸入是一張MySQL表、一張Hive表,一張Oracle表
  • 處理邏輯包含map、join、sql、自定義複雜邏輯
  • 輸出是一個Hudi表、一個Doris表、一個HBase表

Daph資料流模型示例

執行模型

Daph透過節點包裹程式碼片段,將節點連成一個DAG圖,並最終將DAG圖形成一個完整的應用程式。

  • 一個DAG圖就是一個完整執行邏輯,比如當使用Spark作為底層計算引擎,一個DAG圖就是一個完整的Spark應用程式。
  • 一個DAG圖中可以同時包含Java節點、Scala節點、Spark節點,也可以同時包含Java節點、Scala節點、Flink節點,但不能同時包含Spark與Flink節點。
  • 底層計算引擎決定了應用程式的型別。
    JVM引擎對應的就是原生Java/Scala應用程式;
    Spark引擎對應的就是Spark應用程式;
    Flink引擎對應的就是Flink應用程式。

Daph執行模型如下圖所示:

Daph執行模型

部署模型

Daph目前的部署模型非常簡單,

  • daph-jvm,就是部署原生java程式
  • daph-spark,就是部署spark應用程式
  • daph-flink,就是部署flink應用程式

相關文章