0


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

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

1、安装JAVA

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

java-version

在这里插入图片描述

(2) 查看安装信息

rpm-qa|grepjava

在这里插入图片描述

(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

添加如下行:

exportJAVA_HOME=/usr/local/jdk1.8.0_371
exportCLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
exportPATH=$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
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UQEN9c60-1689336019523)(file:///C:\Users\huang\AppData\Local\Temp\ksohtml4280\wps66.jpg)]

发现有警告,原因是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'.'-f1`#当前时间、当前小时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-ne0];thenecho${nowtime}":上一次任务未结束,本次不执行......">>${logpath}${jobname}${nowmon}.log
elseecho${nowtime}":上一次任务执行结束,本次开始执行.........">>${logpath}${jobname}${nowmon}.log
sh kitchen.sh -rep:xxxxxxx-user:xxxxxxx-pass:xxxxxxx -dir:${jobdir} -job:${jobname}>>${logpath}${jobname}${nowmon}.log 2>&1fiecho"本次JOB执行任务已结束!">>${logpath}${jobname}${nowmon}.log

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

在这里插入图片描述

crontab-e

i进入编辑模式

在这里插入图片描述
在这里插入图片描述

标签: etl linux

本文转载自: https://blog.csdn.net/qq_44943273/article/details/131730663
版权归原作者 nezumi. 所有, 如有侵权,请联系我们删除。

“Linux下部署kettle并配置定时调度”的评论:

还没有评论