Kettle系列(二)smart-kettle本地离线部署
- 说明
- 一、概述
- 二、代码下载
- (1)后端代码依赖下载
- (2)前端代码依赖下载
- 三、创建数据库(mysql8)
- 四、修改配置文件
- 五、mysql8数据库配置
- 六、其他配置
- 七、启动
- 八、总结
说明
更新时间:2023/08/14 00:22
本文记录了win10下的smart-kettle的下载和配置,并基于mysql8的数据库进行了本地部署
本文仅为记录学习轨迹,如有侵权,联系删除
一、概述
kettle
先说明一下什么是kettle,相信做过数据清洗的观众应该对这个工具不陌生,它是用于数据清洗的很常见的开源的工具,官方的解释如下
Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,绿色无需安装,数据抽取高效稳定 (数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。
通俗点讲就是一个平时用于数据治理方面的工具,例如数据同步、数据迁移、数据清洗等
smart-kettle
那么smart-kettle又是啥呢?首先先了解一下kettle存在的问题,kettle是一个java开发的客户端,正常的使用都是安装在win系统上面,进行任务的配置等,可移植性差,而且客户端非常耗内存、CPU,只适合配置,不适合做业务,这个好理解,正常系统应该部署在linux服务器上面让它24小时运行,而不是直接运行在自己的win系统的电脑上面,很难投入生产环境,再者kettle的任务调度,日志没有统一管理,因此,为了解决这些问题,smart-kettle孕育而生。
可以看一下gitee上面对smart-kettle的介绍
smart kettle是针对上述企业的痛点,对kettle的使用做了一些包装、优化,使其在web端也能 具备基础的kettle作业、转换的配置、调度、监控,能在很大一定程度上协助企业完成不同业务场景下数据的ETL(抽取、转换、加工)的能力。
通俗点来讲就是轻量级的kettle web的监控调度平台,可以直接部署在linux服务器上面通过web进行访问,提供调度、定时任务、日志监控等功能
备注:smart-kettle地址
二、代码下载
smart-kettle是国内大佬开源的一个工具,地址:https://gitee.com/yaukie/smartkettle,截图如下
搞it的对这种代码仓库应该不陌生了,就不过多介绍了,直接下载源码,目录截图如下
代码分为前端和后端,官网上面有详细的部署教程,可结合着来看
(1)后端代码依赖下载
先用idea打开代码,截图如下
按照官网的教程先配置maven的settings.xml文件
确保idea使用的是自己刚配置好的maven
然后直接maven安装命令 mvn clean -U install
,强制下载jar包
等待安装即可,注意过程可能会有点慢,如果卡住可以重启idea,重新刷新maven,按照官网的解释,下载完本地仓库需要有以下jar包
x1-simple-job-1.0.0-SNAPSHOT.jar
x-kettle-core-1.0.0-SNAPSHOT.jar
x-common-base-1.0.0-SNAPSHOT.jar
x-common-pro-1.0.0-SNAPSHOT.jar
x-common-auth-1.0.0-SNAPSHOT.jar
查看一下自己本地仓库是不是已经下载好了jar
检查发现“x-common-pro-1.0.0-SNAPSHOT.jar”这个好像没下成功,不过经过本人测试发现代码正常正常运行,且没有发现问题,如果大家也有这个问题可以先忽略,如果发现maven死活下不来,那么就只能采用官网的另一种安装方式了
至此maven按照完成
(2)前端代码依赖下载
前端的代码依赖下载就简单多了,直接cmd进入前端代码所在目录,先给大家看看本人的node版本
然后执行npm install
等待安装即可,没报错的话即安装成功
三、创建数据库(mysql8)
数据库的配置可以用mysql5,也可以用mysql8(有坑需要注意),本人用的mysql8,下面开始创建数据库,一共有两个,
- 一个是系统数据库xtl(用于记录用户登录,日志监控等)
- 一个是数据库资源库etl(kettle专属的资源库)
创建好数据库后,都是先执行create.sql,然后执行init.sql
这里有个坑需要注意,需要如果你是用的mysql5版本的,脚本都是可以正常执行,但是如果是mysql8的,就会发现执行create.sql的时候会报错
这是由于作者导出的时候用的是mysql5,里面有些语法mysql8不适用,就是里面给字段加注释的代码,例如
comment on table x_menu is '菜单权限表'
;
comment on column x_menu.menu_id is '菜单ID'
;
comment on column x_menu.menu_name is '菜单名称'
;
comment on column x_menu.parent_id is '父菜单ID'
;
comment on column x_menu.order_num is '显示顺序'
;
comment on column x_menu.path is '路由地址'
这些直接注释掉即可,注意,一定要确保所有的sql文件都执行成功才能往下走。
四、修改配置文件
修改的地方下面用截图展示
其他的不用动,这样就好了
五、mysql8数据库配置
如果各位用的是mysql5的话,这个章节可以不用管,直接到下一个章节即可!!!
如果各位用的是mysql5的话,这个章节可以不用管,直接到下一个章节即可!!!
如果各位用的是mysql5的话,这个章节可以不用管,直接到下一个章节即可!!!
本人数据库一直用的mysql8,但是这套代码只兼容了mysql5,所以需要自己自行改造,使它兼容mysql8,首先是数据库驱动要改为mysql8的驱动
如果lombok导不进来,可以自行配置一下lombok
以上就是mysql8需要改动的地方,下面给出完整的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>smart-kettle-parent</artifactId>
<groupId>org.yaukie.frame</groupId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.yaukie.frame</groupId>
<artifactId>smart-kettle</artifactId>
<name>smart-kettle</name>
<version>1.0.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<skipTests>true</skipTests>
</properties>
<!-- 当前Module需要用到的依赖,按自己需求添加,版本号在父类已经定义了,这里不需要再次定义 -->
<dependencies>
<dependency>
<groupId>org.yaukie.frame</groupId>
<artifactId>x1-simple-job</artifactId>
<version>1.0.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</exclusion>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 定义 mysql 版本 -->
<dependency>
<groupId>org.yaukie.core</groupId>
<artifactId>x-common-base</artifactId>
<exclusions>
<exclusion>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</exclusion>
</exclusions>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
<!--降低MySQL版本,kettle中连接mysql资源库使用的是低版本驱动 -->
<dependency>
<groupId>mm.mysql</groupId>
<artifactId>mm.mysql</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.yaukie.core</groupId>
<artifactId>x-common-auth</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.yaukie.xtl</groupId>
<artifactId>x-kettle-core</artifactId>
<exclusions>
<exclusion>
<groupId>pentaho</groupId>
<artifactId>simple-jndi</artifactId>
</exclusion>
</exclusions>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- 定义 lombok 版本 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--kettle核心包引入结束-->
</dependencies>
<!--定义spring boo maven 插件-->
<build>
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<!--<exclude>**/*.yml</exclude>-->
<!--<exclude>**/*.kjb</exclude>-->
</excludes>
<!--<filtering>true</filtering>-->
</resource>
<!--如果不加此文件,本地跑会有问题-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<!--如果要构建一键启动,重新打包,请按照如下方式修改pom.xml 文件,这种方式打成的jar包,不会包括xml以及kjb文件-->
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.yml</exclude>
<exclude>**/*.kjb</exclude>
</excludes>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.5.RELEASE</version>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<mainClass>org.yaukie.frame.Start</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<manifest>
<!--运行jar包时运行的主类,要求类全名-->
<mainClass>org.yaukie.frame.Start</mainClass>
<!-- 是否指定项目classpath下的依赖 -->
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<!-- 指定依赖的时候声明前缀 -->
<!--<classpathPrefix>../lib</classpathPrefix>-->
</manifest>
</archive>
</configuration>
</plugin>
<!--<plugin>-->
<!--<artifactId>maven-assembly-plugin</artifactId>-->
<!--<configuration>-->
<!--<descriptors>-->
<!--<descriptor>src/main/assembly/assembly.xml</descriptor>-->
<!--</descriptors>-->
<!--</configuration>-->
<!--<executions>-->
<!--<execution>-->
<!--<id>make-assembly</id>-->
<!--<phase>package</phase>-->
<!--<goals>-->
<!--<goal>single</goal>-->
<!--</goals>-->
<!--</execution>-->
<!--</executions>-->
<!--</plugin>-->
</plugins>
</build>
</project>
六、其他配置
这里的配置是本人测试过程中发现的配置修改
七、启动
首先启动后端代码,记得刷新一下maven
启动成功截图如下
然后是前端启动,前端cmd进入前端目录,执行npm run dev
即可
访问地址:http://localhost:8081/kettle-admin/login
至此,登录成功
八、总结
以上就完成了整个smart-kettle的本地部署,不过部署完成后,在使用的过程中发现了一些问题,例如插件引入的问题,怎么连接其他数据库问题等,后面有时间可以再整理一版内容出来