一、简介

  • 概述
  • DataX 是阿里云DataWorks数据集成的开源版本,在阿里巴巴集团被广泛使用的离线数据同步工具/平台。 DataX实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
  • 开源地址
  • 支持的数据库

类型

数据源

Reader(读)

Writer(写)

文档

RDBMS 关系型数据库

MySQL



读 、 写

Oracle



读 、写

OceanBase



读 、写

SQLServer



读 、写

PostgreSQL



读 、写

DRDS



读 、写

Kingbase



读 、写

通用RDBMS(支持所有关系型数据库)



读 、写

阿里云数仓数据存储

ODPS



读 、写

ADB



ADS



OSS



读 、写

OCS



Hologres



AnalyticDB For PostgreSQL



阿里云中间件

datahub



读 、写

SLS



读 、写

图数据库

阿里云 GDB



读 、写

Neo4j



NoSQL数据存储 OTS



读 、写

Hbase0.94



读 、写

Hbase1.1



读 、写

Phoenix4.x



读 、写

Phoenix5.x



读 、写

MongoDB



读 、写

Cassandra



读 、写

数仓数据存储

StarRocks



读 、写

ApacheDoris



ClickHouse



读 、写

Databend



Hive



读 、写

kudu



selectdb



无结构化数据存储

TxtFile



读 、写

FTP



读 、写

HDFS



读 、写

Elasticsearch



时间序列数据库

OpenTSDB



TSDB



读 、写

TDengine



读 、写

  • 核心架构
  • DataX开源版本支持单机多线程模式完成同步作业运行,如图:
  • datax同步数据库数据到hbase_数据库

  • 核心模块介绍
  • DataX完成单个数据同步的作业,我们称之JOB,DataX接受一个job之后,将启动一个进程完成整个同步作业。DataX模块是单个作业的中枢管理节点,承担了数据清理、子任务分切(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。
  • DataXjob启动后,会根据不同的源端切分策略,将job切分成小的task子任务,以便于并发执行。task是DataX作业的最小单元,每个task会负责一部分数据同步工作。
  • 切分后的task,DataJob 会调用Scheduler模块,会根据并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每个TaskGroup负责以完一定并发运行完并分配好的所有Task,默认单任务组并发数量为5。
  • 每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel---->Writer的线程来完成任务同步工作。
  • DataX作业运行起来后,job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后job成功退出,否则异常退出,进程退出值非0
  • 调度流程
  • 用户提交了一个DataX作业,并且配置了20个并发,目的是将一个100张分表的mysql数据同步到odps
  • DataXJob启动后将分库分表切分成100个task。
  • DataJob 会调用Scheduler模块,会根据并发数据量切分成4个组,根据组来平分100个task,每个组负责25个task。