记录运行datax-web-master的坑

下载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>

 再次打包:

运行成功!!


版权声明:本文为zzzmmmggg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。