DataX是阿里巴巴开源的异构数据源离线同步工具,致力于实现包括关系数据库(MySQL、Oracle等)在内的各种异构数据源之间稳定高效的数据同步功能。
将Job,Task两个维度包含了DataX的逻辑模型,通过将Job分割成任务,然后将Task合并为TaskGroup来运行。
Job:运行在JobContainer容器中,这是所有任务的Master,负责初始化、分割、调度、运行、回收、监视和报告,但是它不进行实际的数据同步操作。
JobContainer:Job执行器,它负责Job全局分割、调度、前置语句和后置语句等工作。在Yarn里与JobTracker相似。
Job是DataX用来描述从一个源到目标端的同步作业,它是DataX数据同步的最小业务单位。例如:将一张MySQL表与ODPS(OpenDataProcessingService)的一个表的特定分区进行同步。
Task:将Job分割成最小化的执行单元。例如:阅读一个包含1024个Task的MySQL分类表的Job,将其分为1024个Task,并以数个并行执行。
TaskGroup:描述了一组任务集。执行同一TaskGroupContainer的Task集合称为TaskGroup。
TaskGroupContaine:负责执行一组任务,就像Yarn中的TaskTracker那样。
简单地说,Job拆分为Task,在框架所提供的容器中分别执行,插件仅需实现Job和Task逻辑。
DataX 会单独启动一条线程运行运行一个 Task,而 Task 会持有一个 Channel,用作 Reader 与 Writer 的数据传输媒介,DataX 的数据流向都是按照 Reader—>Channel—>Writer
的方向流转。
DataX 的 transformer 模式同时还提供了强大的数据转换功能,DataX 默认提供了丰富的数据转换实现类,用户还可以根据项目自身需求,扩展数据转换。
DataXFramework提供与插件交互的简单界面,提供简单的插件访问机制,仅需添加一个插件,即可实现对其他数据源的无缝对接。
本教程提供了包含多种数据源支持的插件和应用实例,继续往下学习吧~