当前位置:网站首页>Datax的学习笔记
Datax的学习笔记
2022-07-26 09:03:00 【白居不易.】
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 优点
- 可靠的数据质量监控(让数据可以完整无损的传输到目的端)
- 丰富的数据转换功能
- 精准的速度控制
- 新版本DataX3.0 提供了包括通道(并发)、记录流、字节流三种流控模式,可以随意控制你的作业速度,让你的作业在库可以承受的范围内达到最佳的同步速度。
- 强劲的同步性能:每一种读插件都有一种或多种切分策略,都能将作业合理切分成多个Task并行执行,单机多线程执行模型可以让DataX 速度随并发成线性增长。
- 健壮的容错机制(多层次局部/全局的重试)
- 极简的使用体验。下载即可用、详细的日志信息。
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方面:
- 系统异构,即数据源所依赖的业务应用系统、数据库管理系统乃至操作系统之间的不同构成了系统异构。
- 模式异构,即数据源在存储模式上的不同。存储模式主要包括关系模式、对象模式、对象关系模式和文档嵌套等几种,其中关系模式(关系数据库)为主流存储模式。同时,即便是同一类存储模式,他们的模式结构可能也存在着差异。例如不同的关系数据管理系统的数据类型等方面并不是完全一致的,如 DB2、Oracle、Sybase、Informix、SQL Server、Foxpro等。
- 来源异构,即企业内部数据源和外部数据源之间的异构。
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 调度过程:
- 首先 DataX Job 模块会根据分库分表切分成若干个 Task,然后根据用户配置并发数,来计算需要分配多少个 TaskGroup;
- 计算过程:
Task / Channel = TaskGroup
,最后由 TaskGroup 根据分配好的并发数来运行 Task (任务)
边栏推荐
- “No input file specified “问题的处理
- ES6 modular import and export) (realize page nesting)
- 谷粒学院的全部学习源码
- PAT 甲级 A1076 Forwards on Weibo
- Study notes of automatic control principle -- dynamic model of feedback control system
- 布隆过滤器
- P1825 [USACO11OPEN]Corn Maze S
- Pytoch realizes logistic regression
- Kotlin properties and fields
- JS file import of node
猜你喜欢
node-v下载与应用、ES6模块导入与导出
优秀的 Verilog/FPGA开源项目介绍(三十零)- 暴力破解MD5
Form form
Horizontal comparison of the data of the top ten blue chip NFTs in the past half year
Uploading pictures on Alibaba cloud OSS
My meeting of OA project (meeting seating & submission for approval)
at、crontab
Two tips for pycharm to open multiple projects
李沐d2l(四)---Softmax回归
Innovus卡住,提示X Error:
随机推荐
对标注文件夹进行清洗
Cve-2021-26295 Apache OFBiz deserialization Remote Code Execution Vulnerability recurrence
Day06 homework - skill question 7
SQL入门——组合表
李沐d2l(四)---Softmax回归
at、crontab
QtCreator报错:You need to set an executable in the custom run configuration.
Probability model in machine learning
Database operation skills 7
Pan micro e-cology8 foreground SQL injection POC
2022茶艺师(中级)特种作业证考试题库模拟考试平台操作
CSDN TOP1“一个处女座的程序猿“如何通过写作成为百万粉丝博主?
Espressif 玩转 编译环境
Laravel框架日志文件存放在哪里?怎么用?
李沐d2l(五)---多层感知机
Database operation skills 6
Okaleido launched the fusion mining mode, which is the only way for Oka to verify the current output
day06 作业--增删改查
Qtcreator reports an error: you need to set an executable in the custom run configuration
Form form