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即可

运行成功!
注:#该方法需要设置服务器的后台运行!

使用ps -aux | grep kettle kill掉进程

posted @   xiaojy  阅读(3012)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示