DataEx是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL,Oracle等),HDFS,Hive,ODPS,HBase,FTP等各种异构数据源之间稳定高效的数据同步功能。DataEx完成单个数据同步的作业,我们称之为Job,DataEx接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataEx Job模块是单个作业的中枢管理节点,承担了数据清理,子任务切分(将单一作业计算转化为多个子Task),TaskGroup管理等功能。DataExJob启动之后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataEx作业的最小单元,每一个Task都会负责一部分数据的同步工作。切分多个Task之后,DataEx Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。
每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。DataEx作业运行起来之后,Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则异常退出,进程退出值非0,
我在项目中主要负责EIP模块;
EIP模块:利用动态token调用数据源接口Read数据,将数据用并发线程池存入通道Channel,之后利用鉴权信息登录hadoop,先将数据从通道写入hdfs目录下的临时文件,待数据写完,将数据移至正式目录并删除临时目录,最后将数据存入Hive,每个数据源接口都支持插件式开发。