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
发现有警告,原因是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进入编辑模式
版权归原作者 nezumi. 所有, 如有侵权,请联系我们删除。