DataX概述
管网地址:https://github.com/alibaba/DataX
第一章 概述
1.1 什么是DataX
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
1.2 DataX的设计
为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
设计理念:插件式
1.3 支持的数据源
DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据
1.4 框架设计
Reader:数据采集模块,负责采集数据源的数据,将数据发送给Framework。
Writer:数据写入模块,负责不断向Framework取数据,并将数据写入到目的端。
Framework:用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
1.5 运行原理
Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理。
Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
Schedule:将Task组成TaskGroup,单个TaskGroup的并发数量为5。
TaskGroup:负责启动Task。
举例来说,用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps里面。DataX的调度决策思路是:
1)DataXJob根据分库分表切分成了100个Task。
2)根据20个并发,DataX计算共需要分配4个TaskGroup。
3)4个TaskGroup平分切分好的100个Task,每一个TaskGroup负责以5个并发共计运行25个Task。
1.6 与Sqoop的对比
功能 | DataX | Sqoop |
运行模式 | 单进程多线程 | MR |
MySQL |
单机压力大; 读写粒度容易控制; |
MR模式重,写出错处理麻烦 |
Hive读写 | 单机压力大 | 很好 |
文件格式 | orc支持 | orc不支持,可添加 |
分布式 | 不支持,可以通过调度系统规避 | 支持 |
流控 | 有流控(限速)功能 | 需要定制 |
统计信息 | 已有一些统计,上报需定制 | 没有,分布式的数据收集不方便 |
数据校验 | 在core部分有校验功能 | 没有,分布式的数据收集不方便 |
监控 | 需要定制 | 需要定制 |
社区 | 开源不久,社区不活跃 | 一直活跃,核心部分变动很少 |