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掉進程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM