Linux下部署kettle并配置定时调度
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进入编辑模式文章来源:https://www.toymoban.com/news/detail-725126.html
文章来源地址https://www.toymoban.com/news/detail-725126.html
到了这里,关于Linux下部署kettle并配置定时调度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!