Datax的学习笔记

Datax的学习笔记

1. 简介

Datax 是阿里巴巴集团内被广泛使用的异构数据源离线同步工具,致力于实现包括 关系型数据库(MySQL、Oracle等)、HDFS、Hive、MaxCompute(原ODPS)、HBase、FTP等各种异构数据源(即不同的数据库)之间稳定高效的数据同步功能。

1.1 设计理念

在这里插入图片描述

​ 为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

1.2 框架设计

DataX本身作为离线数据同步框架,采用 Framework + plugin 架构构建。将数据源读取和写入抽象成为 Reader/Writer 插件,纳入到整个同步框架中。

  • Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给 Framework。

  • Writer:Writer 为数据写入模块,负责不断向 Framework 中取数据,并将数据写入到目的端。

  • Framework:Framework 用于连接 reader 和 writer,作为两者数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

    DataX 3.0 开源版本支持单机多线程模式完成同步作业运行。详情参考:阿里云开源离线同步工具DataX3.0介绍

1.3 优点

  1. 可靠的数据质量监控(让数据可以完整无损的传输到目的端)
  2. 丰富的数据转换功能
  3. 精准的速度控制
  4. 新版本DataX3.0 提供了包括通道(并发)、记录流、字节流三种流控模式,可以随意控制你的作业速度,让你的作业在库可以承受的范围内达到最佳的同步速度。
  5. 强劲的同步性能:每一种读插件都有一种或多种切分策略,都能将作业合理切分成多个Task并行执行,单机多线程执行模型可以让DataX 速度随并发成线性增长。
  6. 健壮的容错机制(多层次局部/全局的重试)
  7. 极简的使用体验。下载即可用、详细的日志信息。

1.4 系统需求

  • Linux
  • JDK(1.8以上,推荐1.8)
  • Python(推荐Python2.6 X)
  • Apache Maven 3.x(Compile DataX)

1.4 搭建

官网步骤:https://github.com/alibaba/DataX/blob/master/userGuid.md

2. 相关概念

异构数据源

​ 指不同的数据库管理系统之间的数据。在企业信息化建设过程中,由于各业务系统建设和实施数据管理系统的阶段性、技术性以及其他经济和人为因素等因素影响,导致企业在发展过程中积累了大量采用不同存储方式的业务数据,包括采用的数据管理系统也大不相同,从简单的文件数据库到复杂的网络数据库,它们构成了企业的异构数据源。

​ 企业数据源异构性主要表现在3方面:

  1. 系统异构,即数据源所依赖的业务应用系统、数据库管理系统乃至操作系统之间的不同构成了系统异构。
  2. 模式异构,即数据源在存储模式上的不同。存储模式主要包括关系模式、对象模式、对象关系模式和文档嵌套等几种,其中关系模式(关系数据库)为主流存储模式。同时,即便是同一类存储模式,他们的模式结构可能也存在着差异。例如不同的关系数据管理系统的数据类型等方面并不是完全一致的,如 DB2、Oracle、Sybase、Informix、SQL Server、Foxpro等。
  3. 来源异构,即企业内部数据源和外部数据源之间的异构。

3. DataX3.0 核心架构

​ DataX 完成单个数据通过不的作业,我们成为Job,DataX 接受到一个 Job 后,将启动一个进程来完成整个作业同步过程。DataX Job 模块是单个作业的中枢管理节点,承担了数据清理、子任务切分、TaskGroup 管理等功能。

在这里插入图片描述

  • DataX Job 启动后,会根据不同源端的切分策略,将 Job 切分成多个小的 Task (子任务),以便于并发执行 。
  • 接着 DataX Job 会调用 Scheduler 模块,根据配置的并发数量,将拆分成的 Task 重新组合,组装成 TaskGroup (任务组)
  • 每一个 Task 都由 TaskGroup 负责启动,Task 启动后,会固定启动 Reader --> Channel --> Writer 线程来完成任务同步工作。
  • DataX 作业运行启动后,Job 会对 TaskGroup 进行监控操作,等待所有 TaskGroup 完成后,Job 便会成功推出(异常退出时 值非0)

组成介绍:

  • Job:单个作业的管理节点,负责数据清理、子任务划分、TashGroup监控管理。
  • Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
  • Schedule:将Task 组成 TaskGroup,单个 TaskGroup的并发数量为5。
  • TaskGroup:负责启动Task。

DataX 调度过程:

  1. 首先 DataX Job 模块会根据分库分表切分成若干个 Task,然后根据用户配置并发数,来计算需要分配多少个 TaskGroup;
  2. 计算过程:Task / Channel = TaskGroup,最后由 TaskGroup 根据分配好的并发数来运行 Task (任务)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白居不易.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值