记录:372
场景:使用IntelliJ IDEA搭建datax-web开发环境,以及datax-web基本使用。
版本:
JDK 1.8
Python 2.7.5
datax-web开源地址:https://github.com/WeiYe-Jing/datax-web
1.配置Maven环境
1.1安装目录
目录:D:\dev
1.2配置Maven远程和本地镜像仓库
修改文件:D:\dev\apache-maven-3.8.7\conf\settings.xml
修改内容:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<localRepository>D:\dev\maven-repo-3.8.7\repository</localRepository>
解析:在<mirrors></mirrors>标签内添加<mirror></mirror>内容,在</ettings></settings>标签内添加<localRepository></localRepository>。
1.3本地镜像仓库目录和配置文件
创建D:\dev\maven-repo-3.8.7\repository目录。
把D:\dev\apache-maven-3.8.7\conf\settings.xml文件拷贝到D:\dev\maven-repo-3.8.7\settings.xml
解析:repository中存放从远程仓库下载到本地的jar包等信息。
1.3配置环境变量和生效
依次点击和选择:此电脑->属性->高级系统设置->环境变量
在系统变量编辑框修改配置。
<1>新建系统变量
变量名称:MAVEN_HOME
变量值:D:\dev\maven-repo-3.8.7
<2>编辑系统变量Path
编辑系统变量Path,并添加行配置。
变量名称:Path
变量值:%MAVEN_HOME%\bin
2.下载源码
下载发布版本datax-web-v-2.1.2。
源码地址:https://github.com/WeiYe-Jing/datax-web
2.1浏览器直接下载
地址:https://github.com/WeiYe-Jing/datax-web/archive/refs/tags/v-2.1.2.zip
解析:直接在浏览器中输入地址就能下载。
2.2使用Git下载
命令:git@github.com:WeiYe-Jing/datax-web.git
3.解压源码
源码解压目录:D:\dev\ForDx\datax-web
4.使用IntelliJ IDEA打开源码
4.1在IDEA配置Maven
依次选择菜单:File->Settings->Build, Execution, Deployment->Build Tools->Maven。在对话框根据本机情况填写配置信息。本例配置信息。
Maven home path:D:/dev/apache-maven-3.6.3-idea
User settings file: D:\dev\apache-maven-3.6.3-idea\conf\settings.xml
Local repository:D:\dev\maven-idea-3.6.3
4.2解决缺少winutils.exe环境变量
datax-web在运行时报错,缺少winutils.exe环境变量。
(1)下载包
下载包:https://github.com/srccodes/hadoop-common-2.2.0-bin
(2)解压包
包名称:hadoop-common-2.2.0-bin-master,解压到指定目录。
(3)配置环境变量
右键:此电脑->高级系统设置->环境变量->系统变量
变量:
名称:HADOOP_HOME
值:D:\Program Files\hadoop\hadoop-common-2.2.0
添加Path变量:
名称:Path
值:%HADOOP_HOME%\bin
(4)环境变量生效
报错不生效的话,就重启电脑。
5.修改配置
端口约定:
datax-admin服务端口:8081
datax-executor服务端口:8082
5.1配置文件的${}说明
在源码中提供的application.yml中使用了${}获取变量。${}获取变量来源方式,包括env.properties文件和bootstrap.properties文件。
(1)使用${}从env.properties获取配置变量
第一步,shell脚本从env.properties读取变量。
第二步,在shell脚本中,使用JAVA_OPTS的-D方式组装变量。
第三步,在shell脚本中,使用java命令把JAVA_OPTS参数传递给JVM,成为系统属性变量。
第四步,启动微服务时,在加载application.yml从使用${}从JVM系统属性变量中获取变量值。
(2)使用${}从bootstrap.properties获取配置变量
微服务在启动时,使用${}从JVM系统属性变量中获取变量值。
第一步:微服务启动时,会先加载bootstrap.properties变量,变量成为了系统属性变量。
第二步:微服务加载application.yml时,会使用${}从JVM系统属性变量中获取变量值。。
5.2修改datax-admin服务配置
在官网的application.yml配置文件中,使用${}获取变量值,
(1)配置端口
修改文件:../datax-admin/src/main/resources/application.yml文件
修改内容:
server:
port: 8081
(2)配置数据源
修改文件:../datax-admin/src/main/resources/bootstrap.properties文件
修改内容:
DB_HOST=192.168.19.202
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=123456
DB_DATABASE=datax_web
解析:在application.yml中使用${}从bootstrap.properties中获取变量。
(2)修改输出日志
修改文件:../datax-admin/src/main/resources/application.yml文件
修改内容:
logging:
level:
com.wugui.datax.admin.mapper: info
path: ./data/applogs/admin
5.3修改datax-executor服务配置
(1)配置端口
修改文件:../datax-executor/src/main/resources/application.yml文件
修改内容:
server:
port: 8082
(2)配置日志
修改文件:../datax-executor/src/main/resources/application.yml文件
修改内容:
logging:
config: classpath:logback.xml
path: ./data/applogs/executor/jobhandler
(3)配置datax的job相关配置
datax:
job:
admin:
addresses: http://127.0.0.1:8081
executor:
appname: datax-executor
ip:
port: 9999
logpath: ./data/applogs/executor/jobhandler
logretentiondays: 30
accessToken:
executor:
jsonpath: D:\\dev\\ForDx\\space\\executor\\json
pypath: D:\dev\ForDx\space\datax\bin\datax.py
(4)已编译的datax放入指定目录
在application.yml配置了datax的执行脚本,需要把已编译的datax全量包放入指定目录,datax-executor在执行时,调用datax.py,去调用datax的插件。
目录:D:\dev\ForDx\space\datax
脚本:D:\dev\ForDx\space\datax\bin\datax.py
5.4初始化数据库
从../datax-web/bin/db目录下取出数据库脚本:datax_web.sql,在MySQL数据库中初始化这些表和数据。
本例数据库:datax_web。
6.在IntelliJ IDEA中启动
6.1启动datax-admin
在IntelliJ IDEA中,选中com.wugui.datax.admin.DataXAdminApplication启动类启动微服务。
6.2启动datax-executor
在IntelliJ IDEA中,选中com.wugui.datax.executor.DataXExecutorApplication启动类启动微服务。
7.登录信息
地址:http://127.0.0.1:8081/index.html
用户名/口令:admin/123456
8.基本操作
使用页面操作从MySQL数据hub01同步数据到MySQL数据库hub02中。
8.1登录页和首页
(1)登录页面
(2)首页
8.2项目管理
在项目管理,创建一个项目。
8.3数据源管理
创建两个数据源,分别是hub01和hub02。
数据源1:jdbc:mysql://192.168.19.202:3306/hub01?useSSL=false
数据源2:jdbc:mysql://192.168.19.202:3306/hub02?useSSL=false
8.4执行器管理
执行器管理,使用默认执行器。
8.5任务管理
在任务管理中,配置同步任务。
8.5.1DataX任务模板
在任务管理-DataX任务模板,配置任务模板。
8.5.2任务构建
在任务管理,任务构建,配置任务。
(1)构建reader
构建Reader,选择数据源,数据库表,配置相关信息。
(2)构建writer
构建writer,选择数据源,数据库表,配置相关信息。
(3)字段映射
对reader读取的表和writer写入的表做字段映射。
(4)构建
构建:生成JSON格式任务数据,是DataX要求的任务格式。
选择模板:选择DataX任务模板中已经生成的模板
复制JSON:可以复制配置任务的JSON数据。
构建前:
构建后:
(5)生成的JSON数据
生成的JSON数据,是DataX要求的标准格式的JSON数据,也就是任务数据。
{
"job": {
"setting": {
"speed": {
"channel": 3,
"byte": 1048576
},
"errorLimit": {
"record": 0,
"percentage": 0.02
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "xxxxxx",
"password": "xxxxxx",
"column": [
"`ID`",
"`CITY_NAME`",
"`LAND_AREA`",
"`POPULATION`",
"`GROSS`",
"`CITY_DESCRIBE`",
"`DATA_YEAR`",
"`UPDATE_TIME`"
],
"splitPk": "",
"connection": [
{
"table": [
"t_city_01"
],
"jdbcUrl": [
"jdbc:mysql://192.168.19.202:3306/hub01?useSSL=false"
]
}
]
}
},
"writer": {
"name": "mysqlwriter",
"parameter": {
"username": "xxxxxx",
"password": "xxxxxx",
"column": [
"`ID`",
"`CITY_NAME`",
"`LAND_AREA`",
"`POPULATION`",
"`GROSS`",
"`CITY_DESCRIBE`",
"`DATA_YEAR`",
"`UPDATE_TIME`"
],
"connection": [
{
"table": [
"t_city_02"
],
"jdbcUrl": "jdbc:mysql://192.168.19.202:3306/hub02?useSSL=false"
}
]
}
}
}
]
}
}
9.执行任务
在任务管理->任务管理目录下,下来菜单有以下有用操作。
执行一次:触发手动执行任务。
查看日志:会打印执行的详细日志。
编辑:可以对任务按需编辑。
删除:删除任务。
10.执行结果
把hub01数据库的t_city_01数据同步到了把hub02数据库的t_city_02。
11.集成Swagger
在datax-web中集成的Swagger作为接口API文档发布。
11.1静态页面位置
Swagger的静态资源在swagger-bootstrap-ui-1.9.6.jar包中。
静态页面目录:../META-INF/resources/doc.html
访问可用地址:
Local-API: http://127.0.0.1:8081/doc.html
External-API: http://192.168.19.1:8081/doc.html
11.2静态页面加载类
配置类:com.wugui.datax.admin.config.ServiceModelToSwagger2MapperImpl
配置类:com.wugui.datax.admin.config.SwaggerConfig
11.3DataX Web Api文档首页
访问文档页面,可以查看API文档信息。
以上,感谢。
2023年2月9日