一:安装jdk
1:下载安装jdk
kettle是一款纯java编写的开源ETL工具,需要jdk环境支持,下载jdk-6u45-linux-i586.bin到/root/Desktop,建立jdk安装目录
#mkdir /usr/java
#cp /root/Desktop/jdk-6u45-linux-i586.bin /usr/java/
#cd /usr/java
#chmod +x jdk-6u45-linux-i586.bin
#./jdk-6u45-linux-i586.bin
2:配置环境变量
#vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.6.0_45 //jdk1.6.0_45为jdk的安装目录
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3:测试
若出现版本信息,则安装配置成功
#java -version
二:部署kettle
1:创建一个目,将下载好的kettle解压后放在该文件夹下。
# mkdir /root/software/kettle
# cp /root/pdi-ce-5.0.1-stable.zip /root/software/kettle
# cd /root/software/kettle
# unzip pdi-ce-5.0.1-stable.zip
# cd data-integration
# ll *.sh
# chmod +x *.sh //以.sh结尾的文件必须拥有执行权限,如果没有,请赋予
2:测试安装是否成功
在kettle的data-integration目录中执行kitchen.sh文件,若出现帮助信息,证明安装成功
# ./kitchen.sh
备注:
kitchen.sh:执行job
pan.sh:执行转换
3:打开图形界面(需Xmanager配合使用)
使用XShell建立连接时,在 SSH --> tunneling 选项下勾选 Forward X11 connections to: Xmanager。登陆远端Linux主机,执行 gtk-demo 测试是否可以将界面显示在本地窗口。这样设置成功后,我们可以运行有图形界面的工具并将其显示在我们本地机器上。
# ./spoon.sh &
编写job和transition(略)
三:运用crontab执行kettle程序
1.建立目录存放kettle文件
# mkdir -p /root/kettle/kettle_file/job // 存放作业文件
# mkdir /root/kettle/kettle_file/transition // 存放转换
# mkdir /root/kettle/kettle_sh // 存放执行脚本
# mkdir /root/kettle/kettle_log // 存放执行kettle产生的日志文件
将从windows上配置好的.ktr和.kjb程序分别放在transition目录和job目录下(或linux下编写后直接保存到该目录下)
2:编写执行脚本
# cd /root/kettle/kettle_sh
# vim ceshi.sh
文本内容如下:
#!/bin/bash
#执行job程序
cd /root/software/kettle/data-integration
export JAVA_HOME=/usr/java/jdk1.6.0_45
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注:(因为crond是个守护进程,它不归属于任何用户,虽然之前以root用户配置了java环境变量,但是crond一样找不到java命令,所以,当crond执行kettle任务时,需要动态设置java环境变量,否则会出现手动执行.sh没问题,放crontb里面执行后无效果)
./kitchen.sh -file=/root/kettle/kettle_file/job/ceshi.kjb-level=basic >>/root/kettle/kettle_log/ceshi_$(date +%Y%m%d).log
# chmod +x ceshi.sh
# sh -x ceshi.sh
3:设定crontab 定时执行任务
# crontab -u root -e
*/1 * * * * /root/kettle/kettle_sh/ceshi.sh //每分钟执行一次ceshi.sh
# systemctl restart crond
# systemctl enable crond
到此大功告成,记得在数据库中验证结果
注意:
在linux中,如果是通过图形界面执行程序的话,点击那个绿色的三角即可。如果是命令行启动,后台执行进行进程不能中断。因此,在linux中不推荐使用kettle里面的自动执行,使用操作系统的定时执行要稳定的多。Windows下使用定时任务计划,linux下使用crontab。