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数据流模型,如下图所示:

例如一个数据集成与数据处理综合场景,如下图所示:

  • 输入是一张MySQL表、一张Hive表,一张Oracle表
  • 处理逻辑包含map、join、sql、自定义复杂逻辑
  • 输出是一个Hudi表、一个Doris表、一个HBase表

运行模型

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-jvm,就是部署原生java程序
  • daph-spark,就是部署spark应用程序
  • daph-flink,就是部署flink应用程序

Daph:新一代流批一体数据集成与数据处理工具的更多相关文章

  1. OnZoom 基于Apache Hudi的流批一体架构实践

    1. 背景 OnZoom是Zoom新产品,是基于Zoom Meeting的一个独一无二的在线活动平台和市场.作为Zoom统一通信平台的延伸,OnZoom是一个综合性解决方案,为付费的Zoom用户提供创 ...

  2. 触宝科技基于Apache Hudi的流批一体架构实践

    1. 前言 当前公司的大数据实时链路如下图,数据源是MySQL数据库,然后通过Binlog Query的方式消费或者直接客户端采集到Kafka,最终通过基于Spark/Flink实现的批流一体计算引擎 ...

  3. Arctic 基于 Hive 的流批一体实践

    背景 随着大数据业务的发展,基于 Hive 的数仓体系逐渐难以满足日益增长的业务需求,一方面已有很大体量的用户,但是在实时性,功能性上严重缺失:另一方面 Hudi,Iceberg 这类系统在事务性,快 ...

  4. 官宣 | Apache Flink 1.12.0 正式发布,流批一体真正统一运行!

    官宣 | Apache Flink 1.12.0 正式发布,流批一体真正统一运行! 原创 Apache 博客 [Flink 中文社区](javascript:void(0) 翻译 | 付典 Revie ...

  5. 带你玩转Flink流批一体分布式实时处理引擎

    摘要:Apache Flink是为分布式.高性能的流处理应用程序打造的开源流处理框架. 本文分享自华为云社区<[云驻共创]手把手教你玩转Flink流批一体分布式实时处理引擎>,作者: 萌兔 ...

  6. Apache Flink 1.12.0 正式发布,DataSet API 将被弃用,真正的流批一体

    Apache Flink 1.12.0 正式发布 Apache Flink 社区很荣幸地宣布 Flink 1.12.0 版本正式发布!近 300 位贡献者参与了 Flink 1.12.0 的开发,提交 ...

  7. 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化

    背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...

  8. 数据集成工具—Sqoop

    数据集成/采集/同步工具 @ 目录 数据集成/采集/同步工具 Sqoop简介 Sqoop安装 1.上传并解压 2.修改文件夹名字 3.修改配置文件 4.修改环境变量 5.添加MySQL连接驱动 6.测 ...

  9. Kafka ETL 之后,我们将如何定义新一代实时数据集成解决方案?

    上一个十年,以 Hadoop 为代表的大数据技术发展如火如荼,各种数据平台.数据湖.数据中台等产品和解决方案层出不穷,这些方案最常用的场景包括统一汇聚企业数据,并对这些离线数据进行分析洞察,来达到辅助 ...

  10. DataPipeline CTO 陈肃:我们花了3年时间,重新定义数据集成

    目前,中国企业在大数据流通.交换.利用等方面仍处于起步阶段,但是企业应用数据集成市场却是庞大的.根据 Forrester 数据看来,2017 年全球数据应用集成市场纯软件规模是 320 亿美元,如果包 ...

随机推荐

  1. ZYNQ uboot 网络调试

    背景 使用 Vivado配置好网络,并在PetaLinux中构建了完整的uboot.kernel.rootfs以后,发现网络有问题. > ping 192.168.168.1 ethernet@ ...

  2. 题解:洛谷 P1165 日志分析

    标签:栈,模拟 题意 对于一个栈,给定三种操作: 0 x,将 \(x\) 入栈: 1,出栈,栈空时忽略: 2,查询当前栈内最大值. 思路 前两个都是栈的基本操作,关键在于查最大值. 每次询问暴力找肯定 ...

  3. 【全球首发】双核Cortex-A7@1.2GHz,仅99元起?含税?哇!!

  4. 什么是RDD

    RDD(Resilient Distributed Dataset)叫做弹性分布式数据集RDD,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.RDD具有数据流模 ...

  5. P6626 题解

    有一个很暴力的解法,就是以询问点为根 DFS. 考虑优化,我们考虑优化换根. 当根节点从父亲移动到它的某个孩子时,孩子的子树内所有点深度减 \(1\) 其余点深度加 \(1\). 同理,当根节点从某个 ...

  6. position的值, relative和absolute分别是相对于谁进行定位的?

    relative:  相对定位,相对于自己本身在正常文档流中的位置进行定位 相对它原来的位置,在走100px.原来在标准流中的位置继续占有. absolute: 生成绝对定位,相对于最近一级定位不为s ...

  7. VUE商城项目 -登录功能 - 手稿

    用户列表功能开发

  8. 详解C#委托与事件

    在C#中,委托是一种引用类型的数据类型,允许我们封装方法的引用.通过使用委托,我们可以将方法作为参数传递给其他方法,或者将多个方法组合在一起,从而实现更灵活的编程模式.委托类似于函数指针,但提供了类型 ...

  9. Java-记住上一次访问时间案例

    记住上一次访问时间 1.需求: 1.访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问 2.如果不是第一次访问,则提示:欢迎回来,您上次访问的时间为:显示字符串 2.分析 1.可以 ...

  10. 持久化技术Mybatis知识精讲【形成知识体系篇】

    环境要求 JDK1.8及以上版本 MySQL数据库 Apache Maven 3.6.1构建工具 IDEA/VSCode/Eclipse开发工具任选其一 思维导图:Xmind ZEN 技术要求 熟悉J ...