首页 > 其他分享 >Daph:新一代流批一体数据集成与数据处理工具

Daph:新一代流批一体数据集成与数据处理工具

时间:2024-08-27 11:38:04浏览次数:6  
标签:DAG Daph Flink 数据处理 引擎 流批 Spark 节点

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应用程序

标签:DAG,Daph,Flink,数据处理,引擎,流批,Spark,节点
From: https://www.cnblogs.com/dasea96/p/18382373

相关文章

  • 图像数据处理21
    五、边缘检测5.2基于二阶导数的边缘检测一阶导数(如Sobel、Prewitt算子)能够捕捉到灰度值的快速变化,但有时会因检测到过多的边缘点而导致边缘线过粗。为了更加精确地定位边缘位置,可以利用二阶导数的零交叉点。零交叉点是是函数二阶导数为零(正负变换)的点。高斯拉普拉斯算子是一......
  • 在 SQLAlchemy 中实现数据处理的时候,实现表自引用、多对多、联合查询,有序id等常见的一
    有时候,我们在使用SQLAlchemy操作某些表的时候,需要使用外键关系来实现一对多或者多对多的关系引用,以及对多表的联合查询,有序列的uuid值或者自增id值,字符串的分拆等常见处理操作。1、在SQLAlchemy中定义具有嵌套children关系的表要在SQLAlchemy中定义具有嵌套children关系......
  • 通过队列通信实现红外遥控、旋转编码器和MPU6050数据处理的打砖块游戏开发
     声明:项目源码参考韦东山老师百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发(100ask.net)        在本项目中,打砖块游戏的核心逻辑在一个单独的任务中实现,同时系统还需要处理来自红外遥控、旋转编码器和MPU6050传感器的数据输入。为此,使用FreeRTOS的队列......
  • 设计高效电商返利平台的数据处理与存储方案
    设计高效电商返利平台的数据处理与存储方案大家好,我是阿可,微赚淘客系统及省赚客APP创始人,是个冬天不穿秋裤,天冷也要风度的程序猿!在电商返利平台的构建过程中,数据处理与存储方案是确保平台性能和稳定性的关键。本文将探讨如何设计一个高效的数据处理与存储方案,以支持大规模......
  • Spring Boot实战:使用模板方法模式优化数据处理流程
    概述在软件开发过程中,我们经常需要处理各种各样的数据,这些数据可能来自不同的源,比如数据库、文件系统或者外部API等。尽管数据来源不同,但很多情况下处理这些数据的步骤是相似的:读取数据、清洗数据、转换数据格式、存储结果等。为了提高代码的复用性和可维护性,我们可以利用设计......
  • Apache SeaTunnel数据处理引擎适配的演进和规划
    作者|ChaoTian(tyrantlucifer),ApacheSeaTunnelPMCMember摘要ApacheSeaTunnel作为一个高性能数据同步工具,以其高效的数据处理能力,为数据集成领域带来了创新。在引擎上,ApacheSeaTunnel除了支持自身的Zeta引擎外,还支持Spark和Flink。在2024年的CommunityOverCodeAsia,Apa......
  • 北斗/GNSS高精度数据处理暨GAMIT/GLOBK v10.75软件
    随着GNSS导航定位技术在不同领域的广泛应用和技术更新的飞速发展,在大型工程项目的设计、施工、运行和管理各个阶段对工程测量提出了更高的要求,许多测绘、勘测、规划、市政、交通、铁道、水利水电、建筑、矿山、道桥、国土资源、气象、地震等行业部门在大型工程建设过程中需应用......
  • 基于STM32的边缘计算实时数据处理可视化系统:嵌入式C++、 FreeRTOS、Kafka、Spring Bo
    一、项目概述本项目旨在设计并实现一个基于STM32的边缘计算实时数据处理系统。该系统能够在边缘设备端进行数据采集、预处理,并将处理后的数据实时传输到后端服务器进行进一步分析和存储。本项目主要解决以下问题:减轻后端服务器的数据处理负担,提高系统整体效率降低......
  • Python 栅格数据处理教程(二)
    本文将介绍通过ArcGISPro的Python模块(arcpy)对栅格数据进行栅格计算及数据统计的方法。1数据来源及介绍本文使用的数据为国家青藏高原科学数据中心的中国1km分辨率逐月降水量数据集基础上通过《Python栅格数据处理教程(一)》中的方法提取出的吉林省范围降水量数据。该数据......
  • Python 栅格数据处理教程(一)
    本文将介绍通过ArcGISPro的Python模块(arcpy)对栅格数据定义投影及裁剪的方法。1数据来源及介绍降水量数据:国家青藏高原科学数据中心的中国1km分辨率逐月降水量数据集。行政区数据:天地图行政区划数据中的吉林省边界面数据,该数据为GeoJSON格式,可通过QGIS等软件将其转换......