1、架构图
- DataX接收到一个Job之后,将启动一个进程来完成整个作业同步过程;
- 会根据不同的源端切分策略,将Job切分成多个小的Task(子任务);
- 切分多个Task之后,DataX Job会调用Schedule模块,根据配置的并发数据量,将上一步拆分成的Task重新组合,组装成TaskGroup(任务组),每一个TaskGroup负责以一定并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5;
- TaskGroup里面的Task都有TaskGroup来启动,会固定启动Reader->Channel->Writer的线程来完成任务同步工作;
- DataX作业运行起来之后,Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job完成退出。否则,异常退出,进行退出值非0
2、运行流程举例
用户提交了一个DataX作业,并配置了20个并发,目的是将一个100张表的mysql同步到mysql里
DataX的调度意思是 :
- DataXJob根据表分成100个Task
- 根据20个并发,DataX计算供需要分配4个TaskGroup(默认单个任务组的并发数据量为5)
- 4个TaskGroup平均切分好100个Task,每一个TaskGroup负责以5个并发共计运行25个Task
3、阐述
DataX是不支持自动创建目标表的
DataX当前只支持一张表的同步,如果是分库分表相同列,是支持多张表同步的(表结构相同)。也就是说目的表的表名称。支持写入一个或者多个表。当配置为多张表时,必须确保所有表结构保持一致
待更新...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。