# daph **Repository Path**: nownew/daph ## Basic Information - **Project Name**: daph - **Description**: 一个通用的数据集成与数据处理平台级工具,可用于构建可视化配置化的数据集成与数据处理平台 - **Primary Language**: Scala - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-04-03 - **Last Updated**: 2024-04-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Xueyuan Daph * [概述](#概述) * [价值](#价值) * [特点](#特点) * [对比业界类似软件](#对比业界类似软件) * [架构模型](#架构模型) * [数据流模型](#数据流模型) * [运行模型](#运行模型) * [部署模型](#部署模型) * [快速开始](#快速开始) * [版本说明书](#版本说明书) * [安装部署](#安装部署) * [二次开发](#二次开发) * [联系我](#联系我) ## 概述 Daph的中文名称是大副,大副是职位仅低于船长的船舶驾驶员,甲板部(驾驶部)负责人,船长的主要助手。
Daph的英文名称,取自【有向无环图Directed Acyclic Graph】的第一个字母与最后三个字母。 Daph是一个通用的数据集成与数据处理平台级工具,可用于构建可视化配置化的数据集成与数据处理平台。 Daph,大道至简。
Daph的核心概念是节点,节点具有输入线与输出线,每条线中承载数据,节点承载任意数据处理逻辑。
Daph的核心构件是一个自创的通用DAG数据流引擎,可以流转任意Java/Scala数据结构,可以引入任何基于Java平台或具有Java客户端的数据计算组件作为数据流底层数据计算引擎。
Daph的核心功能是联接多个节点构成DAG图,并流转数据。 ## 价值 * **统一数据开发视图** :Daph既具有丰富的数据集成能力,又具有强大的数据处理能力。比如daph-spark3,目前已支持44种数据源的读写,已具有Map/Filter/Join/通用单表与多表Sql转换功能
详见[版本说明书](docs/zh/版本说明书) * **降低数据开发门槛**:一个配置文件,完成数据开发 * **缩短数据开发周期**:开箱即用的海量数据集成与数据处理能力,极简的安装部署方式,极简的二次开发过程 ## 特点 * **通用** :可连接任意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仅有3个连接器、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二次开发手册](docs/zh/Daph二次开发手册.md) ## 对比业界类似软件 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数据流模型](docs/zh/images/Daph数据流模型.png) 例如一个数据集成与数据处理综合场景,如下图所示: - 输入是一张MySQL表、一张Hive表,一张Oracle表 - 处理逻辑包含map、join、sql、自定义复杂逻辑 - 输出是一个Hudi表、一个Doris表、一个HBase表 ![Daph数据流模型示例](docs/zh/images/Daph数据流模型示例.png) ### 运行模型 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数据流模型示例](docs/zh/images/Daph运行模型.png) ### 部署模型 Daph目前的部署模型非常简单, - daph-jvm,就是部署原生java程序 - daph-spark,就是部署spark应用程序 - daph-flink,就是部署flink应用程序 ## 快速开始 详见[Daph快速开始手册](docs/zh/Daph快速开始手册.md) ## 版本说明书 版本说明书的内容包括: - 内容概况 - 功能列表 - 节点矩阵 详见[版本说明书](docs/zh/版本说明书) ## 安装部署 Daph的安装部署非常简单。
详见[Daph安装部署手册](docs/zh/Daph安装部署手册.md) ## 二次开发 Daph的二次开发非常简单。
详见[Daph二次开发手册](docs/zh/Daph二次开发手册.md) ## 联系我 欢迎通过以下渠道联系我: - **微信**:![weixin.jpg](docs/zh/images/weixin.jpg) - **QQ**:1083275807 - **邮箱**:1083275807@qq.com