DataX 简介及架构原理

DataX 简介及架构原理

在这里插入图片描述

概述


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

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

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

图解

在这里插入图片描述

DataX 设计理念


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

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

DataX 框架设计


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

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

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 数据源进行同步
  • 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 需要将每张分表的数据都同步过来

.



微信扫描下方的二维码阅读更多精彩内容

DataX 简介及架构原理

每日分享到群里,或者推荐给朋友会得大量积分,机会可以兑换微信零钱红包,具体请点击这里,得到了微信红包可以用来支持大飞哥

大飞哥能不能加鸡腿就看各位了!

赞赏请扫

开发者微信

大飞哥微信

开发者微信反馈BUG或者VIP可以添加,其他情况反馈可能不及时,见谅

版权声明

初衷是提供高清手机电脑壁纸等图片素材免费分享下载,禁止商用。图片素材来源网络,版权归原作者所有,若有侵权问题敬请告知我们!

【友情提醒】:

因平台原因不易展示大尺度写真,有的写真展示越少代表此套写真越性感,特别是xiuren等写真每一套写真完整套图50-100张不等。更多内容的欣赏请移步 点击这里

【更多图集移步】: 每日更新-点击这里
漂亮小姐姐-点击这里
性感美女-点击这里
清纯女孩-点击这里
xiuren专栏-点击这里
整站资源下载-点击这里

相关新闻