📑 DataX和dataX-web
一 . 安装前准备
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
DataX 采用 框架 + 插件 的模式:
- 插件只需关心数据的读取或者写入本身
- 同步时的共性问题,如 类型转换,性能,统计 由框架来处理
开发插件时 只需要关注两个问题:
- 数据源本身读写的数据正确性
- 如何与框架沟通,合理正确地使用框架
逻辑执行模型:
- Job:是DataX描述一个源头到一个目的端的同步作业,是DataX数据同步的最小业务单元。如将一张mysql表同步到odps一个表的分区
- Task:是Job拆分得到的最小执行单元。如在同步一张1024哥分表的mysql分库分表的Job时,就可拆分成1024个读Task并发执行
- TaskGroup:一组Task集合,在同一个TaskGroupContainer执行下的Task集合
- JobContainer:Job执行器,负责job全局拆分,调度,前置语句和后置语句等工作的工作单元。类似Yarn中的JobTracker 调度Job的每一个子任务task运行于TaskTracker上
- TaskGroupContainer:TaskGroup的执行器,负责一组Task的工作单元。类似Yarn中的TaskTrackerTaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。
框架为插件提供物理上的执行能力(线程)。框架有三种运行模式
- Standalone:单线程运行,没有外部依赖
- Local:单线程运行,统计信息,错误信息汇报到集中存储
- Distributed:分布式多线程运行,依赖 DataX Service 服务
当 JobContainer和TaskGroupContainer 运行在同一个进程内时,就是单机模式(Standalone和local);当他们分布在不同的进程中执行就是分布式(distributed)
datax-web安装链接
datax-web 集群部署时单独起某一个功能 ./bin/start.sh -m datax-executor
测试速度 datax-web datax
Oracle => hdfs 92s 101s 81s TMP_IMPORT_25 8518500 36个字段
mysql => hdfs 61s 61s 61s TF_BH_TRADE_NEW2I 1983309
hbase => hdfs 42s 42s 42s TF_BH_TRADE_NEW2I_20200823 896433
datax二次开发
datax源码学习
二 . 配置datax和web
1 安装dataX
链接 datax 源码
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
路径在 /target/datax/datax/ 下面
(需要python环境)
#测试命令
python bin/datax.py job/job.json
2 安装datax-web
https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
https://github.com/WeiYe-Jing/datax-web/blob/master/userGuid.md