当前位置: 代码网 > 服务器>服务器>Linux > Linux下部署kettle并配置定时调度过程

Linux下部署kettle并配置定时调度过程

2026年01月15日 Linux 我要评论
1、安装java(1) 查看原系统版本,从图中可以看出jdk版本为openjdk需要卸载,如果没有安装跳过即可java -version(2) 查看安装信息rpm -qa | grep java(3)

1、安装java

(1) 查看原系统版本,从图中可以看出jdk版本为openjdk需要卸载,如果没有安装跳过即可

java -version

(2) 查看安装信息

rpm -qa | grep java

(3) 卸载openjdk

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.5.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.181-7.b13.el7.x86_64
rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch
rpm -e --nodeps tzdata-java-2018e-3.el7.noarch
rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64

(4) 下载对应的jdk版本

这里我使用的kettle是9.1的,jdk-8u371-linux-x64.tar测试可用

tar -zxvf jdk-8u371-linux-x64.tar.gz

(5) 配置环境变量

vim /etc/profile

添加如下行:

export java_home=/usr/local/jdk1.8.0_371
export classpath=$java_home/lib/tools.jar:$java_home/lib/dt.jar:$java_home/lib
export path=$java_home/bin:$path

使环境变量生效

source /etc/profile

(6) 验证jdk是否安装成功

java -version

2、安装kettle

(1) 将安装包pdi-ce-9.1.0.0-324.zip上传至linux服务器,(kettle在windows和linux系统中通用)

(2) 解压

unzip -o -d /kettle/ pdi-ce-9.1.0.0-324.zip

(3) 安装完成

3、同步kettle资源库,及添加jar包

(1) 将windows用户文件夹下的.kettle文件打包压缩

(2) 将.ketlte文件解压到linux的root目录下,也就是~下,然后使用 ll -qa可查看

ll -qa 

(3) 将依赖的jar包放在linux 的/kettle/data-integration/lib目录下

  • oracle:ojdbc11.jar
  • mysql:mysql-connector-java-8.0.11.jar

另外需要将jar包放在/kettle/data-integration/libswt/linux下

4、测试能否执行任务

./kitchen.sh -rep:xxxxxx -user:xxxxxx -pass:xxxxxx -dir:/xxxxxx -job:xxxxxx

发现有警告,原因是kettle需要图形化的界面来运行,linux是命令行模式,触发警告,消除警告可安装webkitgtk

5、安装webkitgtk

yum install webkitgtk-2.4.9-1.el7.x86_64.rpm

再执行./kitchen.sh,发现警告消除

6、配置调度

通过配置文件,将调度任务与资源库里的文件名称及目录一致

配置文件脚本代码:

#!/bin/bash
#进入kettle目录
cd /opt/kettle/data-integration9.1

#日志路径
logpath=/opt/kettle/joblog/xxxxxxx/

#kitchen任务路径
jobdir=/xxxxxxx/

#根据文件名获得job名称
jobname=`echo $0 |cut -d '.' -f 1`

#当前时间、当前小时
nowtime=`date +"%y/%m/%d %h:%m:%s"`
nowdate=`date +%y%m%d`
nowmon=`date +%y%m`
nowhour=`date +%h`

#日志开头
echo "

================================================执行时间:"$(date +%y%m%d%h%m%s)"=======================================================

" >> ${logpath}${jobname}${nowmon}.log

#上一次任务完成标志
wcbz=`ps -ef |grep kitchen |grep ${jobname} |wc -l`

#上一次未结束则本次不执行
if [ $wcbz -ne 0 ];then
echo ${nowtime}":上一次任务未结束,本次不执行......" >> ${logpath}${jobname}${nowmon}.log
else echo ${nowtime}":上一次任务执行结束,本次开始执行.........">> ${logpath}${jobname}${nowmon}.log
sh kitchen.sh -rep:xxxxxxx -user:xxxxxxx -pass:xxxxxxx -dir:${jobdir} -job:${jobname} >> ${logpath}${jobname}${nowmon}.log 2>&1
fi
echo "本次job执行任务已结束!" >> ${logpath}${jobname}${nowmon}.log

通过crontab定时调度如下脚本,例如:onedayjob.sh

crontab  -e 

i进入编辑模式

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com