下载datax-web-master之后准备按照文档上运行:
- 1.运行datax_admin下 DataXAdminApplication
- 2.运行datax_executor下 DataXExecutorApplication
运行datax_admin下 DataXAdminApplication时候报错:
启动报错Circular placeholder reference 'server.port' in property definitions
解决方案:
父pom文件添加依赖:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>config.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>log4j.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>然后运行datax_admin下 DataXAdminApplication
出错:
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379) [hadoop-common-2.7.3.jar:na]
at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394) [hadoop-common-2.7.3.jar:na]
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:387) [hadoop-common-2.7.3.jar:na]
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80) [hadoop-common-2.7.3.jar:na]
at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1437) [hadoop-common-2.7.3.jar:na]
at org.apache.hadoop.hbase.HBaseConfiguration.checkDefaultsVersion(HBaseConfiguration.java:67) [hbase-common-1.3.0.jar:1.3.0]
at
错误是显而易见的:
Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
解决方案:
安装并配置插件winutils
么有hadoop的下载hadoop

下载hadoop-common-2.2.0-bin-master:并且配置环境变量HADOOP_HOME 和 path

链接:https://pan.baidu.com/s/16vSy0iMtAN1ZRfMX4ULPBg 提取码:1111 --来自百度网盘超级会员V2的分享
我弄完之后还是报上面的错 ,然后我重启电脑之后才没有报上面的错。
接下来是下面的错:
No qualifying bean of type 'org.springframework.mail.javamail.JavaMailSender'
按照官方文档(官方文档:https://github.com/WeiYe-Jing/datax-web/blob/master/userGuid.md)配置好上面说的:
2.开发环境部署(或参考文档 Debug)
2.1 创建数据库
执行bin/db下面的datax_web.sql文件(注意老版本更新语句有指定库名)
2.2 修改项目配置
1.修改datax_admin下resources/application.yml文件
#数据源 datasource: username: root password: root url: jdbc:mysql://localhost:3306/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8 driver-class-name: com.mysql.jdbc.Driver修改数据源配置,目前仅支持mysql
# 配置mybatis-plus打印sql日志 logging: level: com.wugui.datax.admin.mapper: error path: ./data/applogs/admin修改日志路径path
# datax-web email mail: host: smtp.qq.com port: 25 username: xxx@qq.com password: xxx properties: mail: smtp: auth: true starttls: enable: true required: true socketFactory: class: javax.net.ssl.SSLSocketFactory修改邮件发送配置(不需要可以不修改)
2.修改datax_executor下resources/application.yml文件
# log config logging: config: classpath:logback.xml path: ./data/applogs/executor/jobhandler修改日志路径path
datax: job: admin: ### datax-web admin address addresses: http://127.0.0.1:8080 executor: appname: datax-executor ip: port: 9999 ### job log path logpath: ./data/applogs/executor/jobhandler ### job log retention days logretentiondays: 30 executor: jsonpath: /Users/mac/data/applogs pypath: /Users/mac/tools/datax/bin/datax.py修改datax.job配置
- admin.addresses datax_admin部署地址,如调度中心集群部署存在多个地址则用逗号分隔,执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";
- executor.appname 执行器AppName,每个执行器机器集群的唯一标示,执行器心跳注册分组依据;
- executor.ip 默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
- executor.port 执行器Server端口号,默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
- executor.logpath 执行器运行日志文件存储磁盘路径,需要对该路径拥有读写权限;
- executor.logretentiondays 执行器日志文件保存天数,过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
- executor.jsonpath datax json临时文件保存路径
- pypath DataX启动脚本地址,例如:xxx/datax/bin/datax.py 如果系统配置DataX环境变量(DATAX_HOME),logpath、jsonpath、pypath可不配,log文件和临时json存放在环境变量路径下。
我在配置文件种配置好了email,但是还是有错,
在启动类中加上方法:
@Bean
public JavaMailSenderImpl mailSender() {
JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setProtocol("SMTP");
javaMailSender.setHost("smtp.qq.com");
javaMailSender.setPort(465);
return javaMailSender;
}
接下来运行是这个错:
Error creating bean with name 'jobAdminConfig': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'datax.job.i18n' in value "${datax.job.i18n}"
真是无奈,原因是yml格式可能读不出,讲yml转成properties文件(可以使用插件):Convert YAML and Properties File
再运行,报错,很明显,这个是启动参数没传(或者在application.properties中直接设定即可):
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.wugui.datax.admin.DataXAdminApplication]; nested exception is java.lang.IllegalStateException: Error processing condition on org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration$DifferentManagementContextConfiguration
Caused by: java.lang.IllegalArgumentException: Circular placeholder reference 'server.port' in property definitions
传入启动参数:

,发现,打包的时候rsource下面的文件没有打包进去:
在pom中加入:
<resources>
<resource>
<directory>src/main</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
再次打包:

运行成功!!