1987WEB视界-分享互联网热点话题和事件

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

如何部署WebSpoon9.0.0(Kettle的Web版本)

1987web2024-03-25WEB开发43
如何部署WebSpoon9.0.0(Kettle的Web版本)前言

如何部署WebSpoon9.0.0(Kettle的Web版本)

前言

Kettle 是小有名气的开源ETL工具,现已改名为PDI(Pentaho Data Integration),其Web版本为:WebSpoon,本文记录了从官方Git仓库中拉取代码并成功运行的过程。

一、在本地拉取并编译项目

参考来源:Kettle的Git官方页面的webspoon-9.0分支的README文件

编译依赖项目

根据 _Build and locally publish dependent libraries _部分可知,需要预先在本地编译部分依赖项目。

pentaho-xul-swt

$gitclone-b webspoon-9.0https://github.com/HiromuHota/pentaho-commons-xul.git$cdpentaho-commons-xul$ mvn cleaninstall-pl swt

rap

$gitclone-b webspoon-3.12.0https://github.com/HiromuHota/rap.git$cdrap$ mvn cleaninstall

在mvn install出现报错时,可能的解决方案:jetty-repo 版本修改为:9.4.48.v20220622rap-extra-repo 修改为: https://download.eclipse.org/rt/rap/base-platforms/3.14/extra-dependencies/

pentaho-vfs-browser

$gitclone-b webspoon-9.0https://github.com/HiromuHota/apache-vfs-browser.git$cdapache-vfs-browser$ mvn cleaninstall

将上述三个依赖项目编译后,在maven仓库的对应目录下会生成相应的jar文件。

编译本体项目

$gitclone-b webspoon-9.0https://github.com/HiromuHota/pentaho-kettle.git$cdpentaho-kettle$ mvn cleaninstall-DskipTests

成功示例:(在assemblies模块下的client模块中的target文件夹内生成对应的war包)

可能的报错:

大面积报错找不到pom文件

解决方法:根据 Kettle官方Git页面master分支的README文件 中的setting.xml文件配置maven

找不到某个依赖的artifact文件

下图为示例:原因分析及解决方案:maven配置的pentaho-public镜像地址所在的仓库有一些依赖版本缺失,当出现此错误后分析了项目源码,并未搜索到缺失依赖版本的明文引用,但是在编译时仍有报错,所以可以认为是在编译时由于间接引用了特定版本导致了报错。通过去pentaho-public仓库中逐个查找发现确实没有报错的pom版本(恰好丢失了该版本),一个取巧的解决方法是在本地的maven仓库目录中新建该版本,并将最临近的最新一版的pom及签名文件复制进去,再按需改名后即可通过编译。如: 报错1.2版本丢失,经仓库地址查找发现确实不存在1.2版本,但是有1.3版本,就可以把1.3版本复制到本地1.2对应目录下并改成对应的名字,以实现绕过maven的检查机制。

二、在本地运行项目

将war包放在 \webapps 文件夹下(示例:pdi-ce-9.0.0.0-423-22.war)

修改tomcat主目录/conf/server.xml文件, 在标签内加入:

<Contextpath="/pdi"docBase="pdi-ce-9.0.0.0-423-22"reloadable="false"source="org.eclipse.jst.jee.server:tsj-spring"/>

访问本地url:http://localhost:8080/pdi/spoon

完成数据库的连接工作(数据库的准备工作略去)

下载MySQL的jdbc驱动文件:mysql-connector-java-5.1.49.jar(因版本过高的jdbc文件目录结构改变,kettle无法支持)将驱动文件放置于:tomcat主目录\webapps\pdi-ce-9.0.0.0-423-22\WEB-INF\lib

三、在服务器运行项目

拉取docker镜像dockerpull hiromuhota/webspoon创建并运行docker容器dockerrun-d-p8080:8080hiromuhota/webspoon--name webspoon--restart=always#-d 后台映射#8080:8080 服务器实际端口:映射的容器端口#hiromuhota/webspoon 要运行的镜像名称#--name webspoon 容器名设定为webspoon#--restart=always 容器设定为随docker重启而自动重启#记得打开服务器的端口防火墙测试运行结果:http://服务器IP:8080/spoon/spoon汉化界面(可选)上传MySQL驱动文件至容器内cd/home/upload_files/#无此文件夹则创建,将驱动文件上传至本目录下dockercpmysql-connector-java-5.1.49.jarwebspoon:/usr/local/tomcat/webapps/spoon/WEB-INF/lib#将MySQL驱动复制到容器webspoon的/usr/local/tomcat/webapps/spoon/WEB-INF/lib路径下面dockerrestart webspoon#重启以生效,并在浏览器进行数据库连接测试挂载服务器本地路径至容器内,方便文件的生成与交换

参考文章可能出现的问题:

systemctl start docker启动失败解决办法:使用systemctl status docker确认启动状态,根据报错信息修复配置文件dokerpscd/var/lib/docker/containers/容器idsysteamctl stopdocker#获取容器id,进入容器配置路径修改配置文件"/home/pdi_files":{"Source":"/home/kettle/pdi_files","Destination":"/home/pdi_files","RW":true,"Name":"","Driver":"","Type":"bind","Propagation":"rprivate","Spec":{"Type":"bind","Source":"/home/kettle/pdi_files","Target":"/home/pdi_files"},"SkipMountpointCreation":false}## 修改config.v2.json,将本地的/home/kettle/pdi_files 路径映射到容器的 /home/pdi_files"Binds":["/home/kettle/pdi_files:/home/pdi_files"]#修改hostconfig.jsonsystemctl startdockerdockerstart容器名#重启docker及容器# 挂载失败时会无法找到并启动容器,需要二次确认配置文件是否修改正确dockerexec-it容器名/bin/bash# 进入容器路径确认是否挂载成功配置文件夹权限

如果没有对容器内的路径做权限配置,文件将无法读取和写入

sudodockerexec-it-u root容器idbash# 以root权限进入容器cd/home/chmod777./pdi_files#给特定目录赋权自定义数据库表并测试转换任务

该作业涉及到表输入、文件输出、文件输入、表输出、日志记录,可以简单测试pdi是否成功工作。

配置资源库(可选)

点击主页右上角的connect按钮,填入个人的etl资源库连接信息。

在连接资源库时需要选择数据库连接,在编辑数据库连接时修改参数以使中文正常显示:

修改kettle配置文件,开启api访问功能(可选)使用官方镜像部署kettle之后,可以通过进入容器的方式修改相关文件dockerexec-it容器ID/bin/bashvim./system/kettle/slave-server-config.xml

将slave-server-config.xml文件内容修改为:

<slave_config><max_log_lines>10000