Kettle安装配置-kettle-8.2.0-Centos7
一、环境准备
二、下载安装
三、运行软件
四、核心文件配置
五、在Linux上运行
六、服务器定时运行Job
一、环境准备
1.1 Centos7
1.2 创建用户
$ useradd -m -g bigdata etl -s /bin/bash # ll /home/查看是否创建成功
$ passwd etl
$ visudo
$ su etl
二、下载安装
2.1 下载地址:https://sourceforge.net/projects/pentaho/files/Data Integration
2.2 安装:
进入文件下载目录
$ sudo mkdir -p /usr/local/etl/kettle8.2.0
$ sudo unzip ./pdi-ce-8.2.0.0-342.zip -d /usr/local/etl/kettle8.2.0
$ cd /usr/local/etl/
$ sudo chown -R etl ./kettle8.2.0
$ sudo chgrp -R bigdata ./kettle8.2.0
$ sudo ln -s /usr/local/etl/kettle8.2.0 ~/kettle # 方便版本更换
2.3 设置环境变量
$ vi ~/.bash_profile
增加下述内容:
JAVA_HOME=/usr/jvm/jdk1.8
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
退出,生效环境变量
$ source ~/.bash_profile
三、运行软件
$ cd ~/kettle/data-integration
$ ./carte.sh 127.0.0.1 8081 & #127.0.0.1换成自己的IP地址
出现监听窗口则运行成功:
[etl@xiaojy data-integration]$ ./carte.sh 127.0.0.1 8081 #127.0.0.1换成自己的IP地址
/home/etl/kettle/data-integration
2021/08/06 04:40:05 - Carte - Installing timer to purge stale objects after 1440 minutes.
2021-08-06 04:40:05.544::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2021/08/06 04:40:05 - Carte - 创建 web 服务监听器 @ 地址: 127.0.0.1:8081
2021-08-06 04:40:05.661::INFO: jetty-6.1.21
2021-08-06 04:40:05.765::INFO: Started SocketConnector@127.0.0.1:8081 #127.0.0.1为自己的IP地址
使用网页登录:127.0.0.1:8081,初始账号密码为cluster,如下显示:
到此安装结束
注意:如果要链接MySQL数据库,需要将Mysql的Driver复制到data-integration/lib目录下;
五、在Linux上运行
(一)、不带参数运行
5.1 windows spoon图形界面中设置好job任务,转换填相对路径
转换填相对路径
5.2 将上述两个文件复制到~/workplace/kettle/test01/
;
进入data-integration
目录,执行:
$ kitchen.sh -file ~/workplace/kettle/test01/linTestJob.kjb
执行完毕无报错
Carte - Installing timer to purge stale objects after 1440 minutes.
2022/01/10 05:27:02 - linTestJob - 开始项[job1]
2022/01/10 05:27:02 - job1 - Using run configuration [Pentaho local]
2022/01/10 05:27:02 - job1 - Using legacy execution engine
2022/01/10 05:27:02 - linuText - 为了转换解除补丁开始 [linuText]
2022/01/10 05:27:03 - input.0 - Finished reading query, closing connection.
2022/01/10 05:27:03 - input.0 - 完成处理 (I=4, O=0, R=0, W=4, U=0, E=0)
2022/01/10 05:27:03 - output.0 - 完成处理 (I=4, O=4, R=4, W=4, U=0, E=0)
2022/01/10 05:27:03 - linTestJob - 开始项[成功]
2022/01/10 05:27:03 - linTestJob - 完成作业项[成功] (结果=[true])
2022/01/10 05:27:03 - linTestJob - 完成作业项[job1] (结果=[true])
2022/01/10 05:27:03 - linTestJob - 任务执行完毕
2022/01/10 05:27:03 - Kitchen - Finished!
2022/01/10 05:27:03 - Kitchen - Start=2022/01/10 05:26:38.944, Stop=2022/01/10 05:27:03.371
2022/01/10 05:27:03 - Kitchen - Processing ended after 24 seconds.
(二)、传递参数运行
同样在spoon.bat中设置流程:
1,在作业中,空白处点击设置
2,输入参数:
3,在job中,通用-设置变量,把参数赋值两个变量
4,在转换中,作业-获取变量
此处参数获取也有其他方式传递,可根据实际情况设置;
5,通样将两个文件复制到Linux系统同个文件夹下,此处是~/workplace/kettle/test01/
;
先不传递参数,使用参数默认值运行
6,在Linux系统中执行:
$ ~/kettle/data-integration/kitchen.sh -file ~/workplace/kettle/test01/linTestJob.kjb
运行前
Job运行成功:
7,再传递参数:
$ ~/kettle/data-integration/kitchen.sh -file ~/workplace/kettle/test01/linTestJob.kjb -param:n=lisi -param:a=25
# 两个参数要使用两个“-param:参数名=参数值”
Job运行成功!
六、服务器定时运行Job
1,上述Job中转换,增加“update_at”字段用来获取系统时间,测试是否实现定时运行
update_at代码如下:
//Script here
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
var update_at=new Date(new Date().getTime());
同样,把两个文件复制到服务器,测试运行情况:
~/kettle/data-integration/kitchen.sh -file ~/workplace/kettle/test01/linTestJob.kjb
2,使用crontab设置定时任务:
2.1 运行systemctl status crond查看crontab服务状态
2.2 进入上述Job文件目录,创建脚本vi ./test.sh
文件输入:
export JAVA_HOME=/usr/jvm/jdk1.8 #自己的路径
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
/home/etl/kettle/data-integration/kitchen.sh -file /home/etl/workplace/kettle/test01/linTestJob.kjb > /home/etl/workplace/kettle/test01/logs/`date "+%Y%m%d%H%M%S"`.log -logfile /home/etl/workplace/kettle/test01/logs/log.log #(注意此处`,为英文~键`不是单引号’) ## -file Job路径、-logfile 日志保存路径
2.3 添加文件可执行权限,测试脚本运行:
chmod a+x *.sh
./test.sh
数据成功导入,脚本可以运行。
2.4 编辑定时任务
2.4.1 先用crontab -l
查看定时任务目录
2.4.2 然后运行crontab –e
编辑定时任务:
* * * * * /home/etl/workplace/kettle/test01/test.sh #每分钟执行一次
2.4.3 再运行crontab -l
查看定时任务
2.4.4 运行sudo systemctl restart crond
重启定时任务,运行systemctl status crond查看crontab服务状态
2.4.5 等待Job运行
Job定时运行完成
附:Crontab使用链接:https://www.jianshu.com/p/d93e2b177814
2,使用Kettle作业的自带定时任务:
然后照上述流程运行Job即可
运行成功!
注:#该方法需要设置服务器的后台运行!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?