DataX 简介及架构原理

article/2025/10/13 5:59:24

DataX 简介及架构原理

在这里插入图片描述

概述


  • DataX是阿里巴巴使用 Java 和 Python 开发的一个异构数据源离线同步工具

    • 异构数据源不同存储结构的数据源
  • 致力于实现包括关系型数据库 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS等各种异结构数据源之间稳定高效的数据同步功能

	- Sqoop 是用于在与 RDBMS 之间数据迁移工具- DataX 是阿里开源的一个异构数据源离线同步工具(任意两种数据源之间)
  • 1
  • 2

图解

在这里插入图片描述

DataX 设计理念


  • 1、为了解决异构数据源同步问题DataX复杂的网状的同步链路变成了星型数据链路DataX作为中间传输载体负责链接各种数据源

  • 2、当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,变能跟已有的数据源做到无缝数据同步

DataX 框架设计


1、DataX 本身作为离线数据同步框架,采用 Framework + plugin 架构构建

  • Framework 主题框架+ plugin 插件
  • 1、将软件核心功能写入 Framework 主体框架
  • 2、主体框架为插件预留接口,如果后期需要什么新功能,可以再去开发插件实现,而主体框架无需改动
	- 扩展性强- 1、数据同步核心功能为主题- 2、不断的去新增某数据源的支持,对不同数据源的读取或写入功能,以插件的形式开发 - 3、如果需要新功能只需要开发插件即可,不需要动主体框架
  • 1
  • 2
  • 3
  • 4

2、将数据源读取和写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中

在这里插入图片描述

架构功能详解


分类

  • Reader数据采集模块

    • 负责采集数据源的数据,将数据发送给Framework
  • Writer数据写入模块

    • 负责不断向 Framework 取数据,并将数据写入到目的端
  • Framework用于连接 reader 和 writer

    • 作为两者的数据传输通道
    • 并处理缓冲、流控、并发、数据转换等核心技术问题

Framework 功能说明

  • 缓冲

    • 1、ReaderWriter 可能会有读写速度不一致的情况
    • 2、所以中间需要一个组件作为缓冲,缓冲的功能就位于 Framework 中
  • 流控

    • 1、流控:控制数据传输的速度
    • 2、Sqoop 不具备流控功能
    • 3、DataX 可以随意根据需求调整数据传输速度
    • 4、流控功能也位于 Framework 中
  • 并发

    • 1、并发同步或写入数据
    • 2、也可以控制速度,想要速度快点,设置并发高一点,反之亦然
  • 数据转换

    • 1、既然是异构,那么说明读 Reader 的数据源与 写 Writer 的数据源 数据结构可能不同
    • 2、数据结构不同的话,需要做数据转换操作,转换也在 Framework 中完成

![在这里插入图片描述](https://img-blog.csdnimg.cn/d5e7559ccd2d4b4fbf73c9f56256499f.png

DataX 的运行流程


说明

  • DataX 作业生命周期的时序图

结构

  • Job

    • 单个数据同步的作业,称为一个Job一个Job启动一个进程
  • Task

    • 1、根据不同数据源切分策略一个Job切分多个Task

      • 并行执行
    • 2、TaskDataX作业的最小单元,每个Task负责一个部分数据的同步工作

  • TaskGroup

    • 1、Scheduler 调度模块对Task 进行分组每个Task 组称为一个Task Group
    • 2、每个Task Group 负责以一定的并发度运行其所分得的Task ,单个TaskGroup的并发为5
  • Reader -> Channel -> Writer

    • 每个Task启动后,都会固定启动 Reader -> Channel -> Writer 的线程来完成工作

      • Channel 类似于 Flume 中的 MemoryChannel 来做数据的缓冲

具体流程

  • 1、DataX同步数据的作业称之为一个Job
  • 2、一个Job会根据不同数据源的策略,将Job切分为多个Task
  • 3、Task 是执行同步数据作业的最小单元每个Task会负责一部分的数据同步工作
  • 4、多个Task是如何执行的呢,谁先执行谁后执行呢?
  • 5、由Schedule 调度模块对Task 进行分组,每个组称之为一个Task Group
  • 6、每个组都有一个并发度,一个组并发度是5
  • 7、最多情况下一个Task Group,能够同时运行5 个Task
  • 8、每个Task启动后,都会固定启动Reader -> Channel -> Writer线程来完成工作

DataX 调度决策思路


案例

- 1、用户提交了一个DataX 作业,并且配置了总的并发度为 20,
- 2、目的是对一个 有100张分表的 mysql 数据源进行同步
  • 1
  • 2
  • DataX 的调度决策思路

    • 1、DataX Job 根据分库分表切分策略,将同步工作分成 100个Task
    • 2、根据配置的总的并发度20,以及每个Task Group 的并发度 5,
    • 3、DataX 计算共需要分配 4的Task Group
    • 4、4个 TaskGroup 平分 100 个Task ,每一个TaskGroup 负责运行 25个Task

描述

  • 1、总的并发度为20

    • 1、整个Job 的并发度
    • 2、表示整个Job 最多能同时运行 20个Task
  • 2、什么是分表

    • 1、如果 MySQL 中单表的数据量过大,它的性能会急剧下降

    • 2、解决方法

      • 1、分表,将一张表的数据分到多张表中
      • 2、每张表的结构一致
      • 3、类似于对表做 Hash分区
    • 3、描述

      • 1、物理分区,逻辑还是同一张表
      • 2、所以DataX 需要将每张分表的数据都同步过来

.


http://chatgpt.dhexx.cn/article/JHV9RgBK.shtml

相关文章

DataX的使用与介绍(1)

一、什么是DataX? DataX是阿里云商用产品DataWorks数据集成的开源版本,它是一个异构数据源的离线数据同步工具/平台(ETL工具)。DataX实现了包括Mysql,Oracle、OceanBase、Sqlserver,Postgre、HDFS、Hive、…

DataX介绍

DataX 是阿里开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 DataX设计理念 DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头…

详解DataX及使用

DataX概述 简介 DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 支持数据源 DataX架构原理 设计理念 为了解决异构数据源同步问…

使用 DataX 实现数据同步(高效的同步工具)

DataX 使用介绍 前言一、DataX 简介1.DataX3.0 框架设计2.DataX3.0 核心架构 二、使用 DataX 实现数据同步1.Linux 上安装 DataX 软件2.DataX 基本使用3.安装 MySQL 数据库4.通过 DataX 实 MySQL 数据同步5.使用 DataX 进行增量同步 前言 我们公司有个项目的数据量高达五千万&…

Transpose函数的用法

Transpose函数的用法 在CNN机器学习中,经常要用到transpose函数对多维数组进行转置操作,下面是我对函数的理解过程。 1.二维数组的转换 二维数组中,原数组的第0轴的行,转换成新数组第1轴的列; 2.三维数组 三维数组较…

转置算子(transpose)的一种实现

transpose算子也叫做permute算子,根据白嫖有道英汉大词典的结果,他俩都是转置,改变排列顺序的意思。 算法逻辑是: 通过当前输出的一维偏移量(offset)计算输入矩阵对应的高维索引 然后根据参数pos重新排列输出索引,进…

论文笔记——TransPose

目录 摘要 一、前言 二、相关工作 2.1 人体姿态估计 2.2 可解释性 三、TransPose 3.1 网络结构 3.2 分辨率设置 3.3 attentions是定位关键点的依赖 四、实验 4.1 COCO实验数据对比 4.2 迁移到MPII数据对比 4.3 消融实验​编辑 4.4 量化分析 五、总结 摘要 虽然基…

numpy中的transpose函数使用

二维矩阵的transpose函数 : transpose()简单来说,就相当于数学中的转置,在矩阵中,转置就是把行与列相互调换位置; 例如:随机生成一个三行五列的二维矩阵: arr np.aran…

transpose()函数的理解

图1 输入如图1所示语句,输出如下: 图2 由以上两图说明transpose()函数的作用: 假设shape(z,x,y),在RGB图像中可以理解为z代表通道数,x代表图像的第几行,y代表图像的第几列,x和y组合而成所代表的像素构成…

详解Python的transpose函数

数组转置和换轴 import numpy as np >>> arr np.arange(16).reshape((2,2,4)) array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7]],[[ 8, 9, 10, 11],[12, 13, 14, 15]]])>>> arr.transpose((1, 0, 2)) array([[[ 0, 1, 2, 3],[ 8, 9, 10, 11]],[[ 4, 5, …

np.transpose

最近看代码的时候,老是出现np.transpose()这个用法,但是对其中的原理还是不甚了解,今天就来总结一下,以及这个用法对图像的结果及效果。 参数 a:输入数组 axis: int类型的列表,这个参数是可选的。默认情况下&#xff…

np.transpose()函数详解

1. 碰见 numpy.transpose 用于高维数组时挺让人费解,通过分析和代码验证,发现 transpose 用法还是很简单的。说白了就是映射坐标轴 2. 举个例子: x np.arange(12).reshape((2,3,2))创建一个2 * 3 * 2的数组: 使用 numpy.trans…

【Python学习】transpose函数

shape:(batch_size * x * y ) 有batch_size个二维矩阵(x * y)相当于(z * x * y) 1. 多维数组的索引 import numpy as np # 创建 x np.arange(12).reshape((2,2,3)) print(x)# 得到三维数组 [[[ 0 1 2][ 3 4 5]][[ 6 7 8][ 9 10 11]]] # 相当于 b…

最简单例子解释python的transpose函数

目录 一,我们要弄清楚transpose的轴是什么意思?二,(x,y,z)的物理含义:三,transpose变换的例子四,代码验证五,关于经过了transpose变换之后,这个三维数组的形状是如何变化确定的? 二维…

转置(transpose)的理解

目录 1 .T,适用于一、二维数组 arr.T #求转置 transpose 的原理其实是根据维度(shape)索引决定的,举个栗子: 2. 高维数组 3. swapaxes 转置可以对数组进行重置,返回的是源数据的视图(不会进行任何复制…

Python numpy.transpose 详解

前言 看Python代码时,碰见 numpy.transpose 用于高维数组时挺让人费解,通过一番画图分析和代码验证,发现 transpose 函数的使用方法还是很简单的。 注:评论中说的三维坐标图中的 0 1 2 3 标反了,已经修正&#xff0c…

2020年最新可用的谷歌镜像站

g.vovososo.com 谷歌镜像入口 不用翻,墙,就可实现访问谷歌搜索 ,也可以通过扫描以下二维码下载APP进行访问

谷歌搜索镜像

分享自己收藏的谷歌搜索镜像 可自由在谷歌查询信息 http://ac.scmor.com/ 转载于:https://www.cnblogs.com/aeip/p/9506344.html

谷歌引擎镜像网址

谷歌引擎镜像网址 当前可用的网址 链接: https://gfsoso.xz95.top/ 若是显示我们的系统检测到您的计算机网络中存在异常流量,可重新搜索或者选择图片进行搜索,然后在点开全部搜索(有时候可能会崩吧,我个人感觉用图片搜索再点全…

谷歌镜像地址分享

谷歌镜像地址分享 谷歌镜像地址分享谷歌应用商店参考文档 谷歌镜像地址分享 使用搜索引擎来查找所需要的资料是一件很普遍的事,而搜索引擎主要有百度、必应、雅虎和谷歌等等。 每个搜索引擎各有利弊,而一般大家公认的是谷歌搜索引擎搜索准确率更高一些&…