如何部署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

$ git clone -b webspoon-9.0 https://github.com/HiromuHota/pentaho-commons-xul.git
$ cd pentaho-commons-xul
$ mvn clean install -pl swt

rap

$ git clone -b webspoon-3.12.0 https://github.com/HiromuHota/rap.git
$ cd rap
$ mvn clean install

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

pentaho-vfs-browser

$ git clone -b webspoon-9.0 https://github.com/HiromuHota/apache-vfs-browser.git
$ cd apache-vfs-browser
$ mvn clean install

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

编译本体项目

$ git clone -b webspoon-9.0 https://github.com/HiromuHota/pentaho-kettle.git
$ cd pentaho-kettle
$ mvn clean install -DskipTests

成功示例:
(在assemblies模块下的client模块中的target文件夹内生成对应的war包)
webspoon,大数据,开源项目实操,etl,web,大数据

可能的报错:

  1. 大面积报错找不到pom文件

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

  1. 找不到某个依赖的artifact文件

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

二、在本地运行项目

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

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

<Context path="/pdi" docBase="pdi-ce-9.0.0.0-423-22" reloadable="false" source="org.eclipse.jst.jee.server:tsj-spring"/>
<!-- /pdi为浏览器地址栏ip:port后的访问地址 -->
<!-- docBase中的pdi-ce-9.0.0.0-423-22为项目在webapps目录下,编译后项目文件的实际路径;配置该项是为了读取下文的驱动文件 -->
  1. 访问本地url:http://localhost:8080/pdi/spoon

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

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

三、在服务器运行项目

  1. 拉取docker镜像
docker pull hiromuhota/webspoon
  1. 创建并运行docker容器
docker run -d -p 8080:8080 hiromuhota/webspoon --name webspoon --restart=always
#-d 后台映射
#8080:8080 服务器实际端口:映射的容器端口
#hiromuhota/webspoon 要运行的镜像名称
#--name webspoon 容器名设定为webspoon
#--restart=always 容器设定为随docker重启而自动重启
#记得打开服务器的端口防火墙
  1. 测试运行结果:http://服务器IP:8080/spoon/spoon
  2. 汉化界面(可选)
  3. 上传MySQL驱动文件至容器内
cd /home/upload_files/
#无此文件夹则创建,将驱动文件上传至本目录下

docker cp mysql-connector-java-5.1.49.jar webspoon:/usr/local/tomcat/webapps/spoon/WEB-INF/lib
#将MySQL驱动复制到容器webspoon的/usr/local/tomcat/webapps/spoon/WEB-INF/lib路径下面

docker restart webspoon
#重启以生效,并在浏览器进行数据库连接测试
  1. 挂载服务器本地路径至容器内,方便文件的生成与交换

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

  1. systemctl start docker启动失败
    解决办法:使用systemctl status docker确认启动状态,根据报错信息修复配置文件
doker ps 
cd /var/lib/docker/containers/容器id
systeamctl stop docker
#获取容器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.json

systemctl start docker
docker start 容器名
#重启docker及容器
# 挂载失败时会无法找到并启动容器,需要二次确认配置文件是否修改正确

docker exec -it 容器名 /bin/bash 
# 进入容器路径确认是否挂载成功
  1. 配置文件夹权限

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

sudo docker exec -it -u root 容器id bash
# 以root权限进入容器

cd /home/
chmod 777 ./pdi_files
#给特定目录赋权
  1. 自定义数据库表并测试转换任务

webspoon,大数据,开源项目实操,etl,web,大数据
webspoon,大数据,开源项目实操,etl,web,大数据
该作业涉及到表输入、文件输出、文件输入、表输出、日志记录,可以简单测试pdi是否成功工作。

  1. 配置资源库(可选)
  • 点击主页右上角的connect按钮,填入个人的etl资源库连接信息。
    webspoon,大数据,开源项目实操,etl,web,大数据

  • 在连接资源库时需要选择数据库连接,在编辑数据库连接时修改参数以使中文正常显示:
    webspoon,大数据,开源项目实操,etl,web,大数据

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

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

<slave_config>
  <max_log_lines>10000</max_log_lines>
  <max_log_timeout_minutes>2880</max_log_timeout_minutes>
  <object_timeout_minutes>240</object_timeout_minutes>
  <repository>
	<!-- 填入你自己拥有的Kettle资源库名称,与上方第九步图示中的名称一致 -->
	<!-- 该名称决定了在使用api方式访问kettle时,kettle默认连接的配置资源库 -->
    <name>etl</name>
    <username>xxxxx</username> <!-- 填入目标资源库连接账号 -->
    <password>xxxxx</password> <!-- 填入目标资源库连接密码 -->
  </repository>
</slave_config>

这样就开启了kettle的内置API访问功能,功能入口有:
webspoon,大数据,开源项目实操,etl,web,大数据

测试访问API效果:
webspoon,大数据,开源项目实操,etl,web,大数据

问题来了,这些api入口都是可用的吗,需要传输哪些参数?有没有文档?
我的回答是:可以去网上搜搜,没有找到答案的话最好自己看源码。

Kettle目前已经转为了商业化项目(hitachivantara公司官网),也有自己的社区(hitachivantara公司论坛),感兴趣的可自行探索。文章来源地址https://www.toymoban.com/news/detail-780338.html

结束语

  • Git拉项目确实要多看一下README文件,该有的准备工作不可少
  • PDI的C/S和B/S架构、页面都差不多,可看作是孪生项目
  • 市面上支持Web端且免费的ETL工具不多,WebSpoon可作为一个选择

到了这里,关于如何部署WebSpoon9.0.0(Kettle的Web版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kafka3.0.0版本——生产者如何提高吞吐量

    设置批次大小,batch.size 默认 16K。 设置等待时间,linger.ms 默认 0。 设置缓冲区大小,buffer.memory 默认 32M 设置压缩, compression.type 默认 none,可配置值 gzip、snappy、lz4 和 zstd。 代码 在kafka集群上开启 Kafka 消费者 在 IDEA 中执行代码,观察kafka集群控制台中是否接收到消息。 测试

    2023年04月10日
    浏览(39)
  • Kafka3.0.0版本——文件清理策略

    1.1、文件清理策略的概述 Kafka 中默认的日志保存时间为 7 天,可以通过调整如下参数修改保存时间。 参数 解释 log.retention.hours 小时,最低优先级(默认 7天) log.retention.minutes 分钟 log.retention.ms 毫秒,最高优先级 log.retention.check.interval.ms 负责设置检查周期(默认 5 分钟) 1

    2024年02月09日
    浏览(45)
  • Kafka3.0.0版本——文件存储机制

    1.1、Topic 数据的存储机制的概述 Topic是逻辑上的概念,而partition是物理上的概念。 每个partition对应于一个log文件 ,该log文件中存储的就是Producer生产的数据。 Producer生产的数据会被不断追加到该log文件末端 ,为防止log文件过大导致数据定位效率低下, Kafka采取了 分片和 索引

    2024年02月09日
    浏览(39)
  • Kafka3.0.0版本——增加副本因子

    四台服务器 原始服务器名称 原始服务器ip 节点 centos7虚拟机1 192.168.136.27 broker0 centos7虚拟机2 192.168.136.28 broker1 centos7虚拟机3 192.168.136.29 broker2 centos7虚拟机4 192.168.136.30 broker3 2.1、先启动zookeeper集群 启动zookeeper集群 2.2、再启动kafka集群 启动kafka集群 3.1、增加副本因子的概述 在

    2024年02月09日
    浏览(34)
  • Kafka3.0.0版本——手动调整分区副本示例

    四台服务器 原始服务器名称 原始服务器ip 节点 centos7虚拟机1 192.168.136.27 broker0 centos7虚拟机2 192.168.136.28 broker1 centos7虚拟机3 192.168.136.29 broker2 centos7虚拟机4 192.168.136.30 broker3 2.1、先启动zookeeper集群 启动zookeeper集群 2.2、再启动kafka集群 启动kafka集群 3.1、手动调整分区副本的前提

    2024年02月11日
    浏览(56)
  • Kafka3.0.0版本——Leader Partition自动平衡

    正常情况下,Kafka 本身会自动把Leader Partition均匀分散在各个机器上 ,来保证每台机器的读写吞吐量都是均匀的。但是如果 某些broker宕机,会导致Leader Partition过于集中在其他少部分几台broker上 ,这会导致少数几台broker的读写请求压力过高,其他宕机的broker重启之后都是foll

    2024年02月11日
    浏览(43)
  • Kafka3.0.0版本——Broker( 退役旧节点)示例

    三台服务器 原始服务器名称 原始服务器ip centos7虚拟机1 192.168.136.27 centos7虚拟机2 192.168.136.28 centos7虚拟机3 192.168.136.29 centos7虚拟机4 192.168.136.30 分别启动4台zookeeper 再分别启动4台kafka brokers中的ids=0、1、2、3都存在,说明4台kafka启动正常,如下图: 查看kafka中的创建过的名称为

    2024年02月13日
    浏览(33)
  • Kafka3.0.0版本——Leader故障处理细节原理

    三台服务器 原始服务器名称 原始服务器ip 节点 centos7虚拟机1 192.168.136.27 broker0 centos7虚拟机2 192.168.136.28 broker1 centos7虚拟机3 192.168.136.29 broker2 2.1、服务器基本信息 首先,分别有3台服务器分别为broker0、broker1、broker2,其中一台为leader,2台follower服务器。每台服务器已经接收到

    2024年02月11日
    浏览(34)
  • Kafka3.0.0版本——Follower故障处理细节原理

    三台服务器 原始服务器名称 原始服务器ip 节点 centos7虚拟机1 192.168.136.27 broker0 centos7虚拟机2 192.168.136.28 broker1 centos7虚拟机3 192.168.136.29 broker2 2.1、服务器基本信息 首先,分别有3台服务器分别为broker0、broker1、broker2,其中一台为leader,2台follower服务器。每台服务器已经接收到

    2024年02月10日
    浏览(39)
  • Kafka3.0.0版本——生产者 数据去重

    1.1、至少一次 至少一次(At Least Once )的含义 生产者发送数据到kafka集群,kafka集群至少接收到一次数据。 至少一次的条件: ACK级别设置为-1 + 分区副本大于等于2 + ISR里应答的最小副本数量大于等于2 1.2、最多一次 最多一次(At Most Once )的含义 生产者发送数据到kafka集群,

    2024年02月01日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包