📑 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 集群部署时单独起某一个功能 ./bin/start.sh -m datax-executor
datax二次开发
datax源码学习
datax二次开发打包
dataX、dataX-web安装部署 dataX集群模式
二 . 配置datax和datax-web
1 安装dataX
使用源码自定义打包
链接 datax 源码
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
路径在 /target/datax/datax/ 下面
(需要python环境及maven环境)
#测试命令
python bin/datax.py job/job.json
ps.如果是自己新增插件 需要修改项目中的 package.xml 、pom.xml
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
datax-web集群部署 一个datax-web和多个datax-executor。确认datax安装的路径都是一样
启动datax-executor命令
./bin/stop.sh -m datax-executor
通过 module 下的 bin 下的日志能查到日志文件
1、通过界面的执行器管理能查到
2、data-web使用
data-web 的任务构建是负责自动生成dataX用的json文件,如果已经有json文件 就不需要使用。
3、data-web简要使用
- 新建项目管理
-
查看执行器管理
-
新建 任务管理
-
执行任务、查看日志
4、报错小记
在读mysql报错
在jdbc url增加配置 在没有服务器身份验证的情况下建立SSL连接\设置useSSL=false来显式禁用SSL
jdbc:mysql://hostname:port/tsp-cloud?useSSL=false&useUnicode=true&characterEncoding=utf8
rl增加配置 在没有服务器身份验证的情况下建立SSL连接\设置useSSL=false来显式禁用SSL
jdbc:mysql://hostname:port/tsp-cloud?useSSL=false&useUnicode=true&characterEncoding=utf8