玩轉Kettle8

前提
Kettle是純Java編寫的ETL開源工具,目前Kettle7和Kettle8都需要Java8或者以上才能正常運行。所以開運行Kettle前先檢查Java環境是否正確配置,Java版本是否是8或者以上。

Kettle安裝
1)創建Kettle的目錄,並將Kettle的zip包解壓到Kettle目錄下

2)查看一下sh文件使用都有執行的權限,如果沒請加上。

3)執行kitchen.sh腳本

 

4)如果出現以下的錯誤,這是因爲sh文件有可能是在Windows下編寫的並打包到Zip包中的,編碼格式不一樣linux是utf-8,windows是gbk的。我這裏提供兩種解決方案。

         1.單個文件修改

         利用Vim進行修改,可以使用:set ff查看文件格式;可以使用:set ff=unix修改文件格式。

         2.批量執行

         運行下面的腳本命令即可。創建一個sh文件,將下面的shell代碼複製到該文件執行即可。注意路徑修改一下。

for file in `ls /opt/kettle/data-integration/*.sh`
 
do                                                                     
 
         echo ${file}
 
         vim +':w ++ff=unix' +':q' ${file}
 
done


4)執行後如果出現下面的WARNING,根據提示安裝即可,不然可能會導致部分特性無法使用(主要是Spoon的使用,如果是無界面環境,可以忽略)。

5)安裝好以後,WARNING就沒有了。出現以下的提示界面說明Kettle可以正常使用了。

同時home目錄下應該會有一個.kettle的目錄

 

Kettle轉換與作業執行
在Kettle中pan和kitchen兩個工具分別用來執行transformation(轉換)和job(作業),如下所示:

對於文件存儲,不是數據庫資源庫,可以如下的方式存放文件:

所有的transformation文件存放在/srv/kettle/transformations/

所有的job文件存放在/srv/kettle/jobs/

所有的日誌文件存放在/var/kettle/logs/

使用pan執行transformation
pan語法:./pan.sh -option=value arg1 arg2

具體使用參考:https://www.cnblogs.com/xiaopan-cp9/p/7608203.html(非常仔細的介紹)

使用kitchen執行job
kitchen語法:./kitchen.sh -option=value arg1 arg2

常用參數列表:

命令

描述

-rep

選擇一個資源庫的名字

-user

資源庫用戶名

-pass

資源庫密碼

-file

job文件路徑

-job

資源庫中的job名稱

-dir

指定資源庫目錄

-norep

標明不是資源庫裏的文件

-level

日誌級別(Basic, Detailed, Debug, Rowlevel, Error, Nothing)

-logfile

日誌輸出到指定的文件

-listdir

在使用 -dir 時,打印出資源庫目錄下所有子目錄

-listjob

列出資源庫中的所有jobs

-listrep

列出當前所有已經定義的資源庫

-export

導出所有的job到一個zip包中

-version

顯示版本

-listparam

列出所有的參數

-param

參數設置,例如-param:FOO=bar

-level

log級別 (Basic, Detailed, Debug, Rowlevel, Error, Nothing)

Kettle服務器端部署
通過Start組件定時執行任務
在Kettle中我們可以通過Start組件來設置定時任務,如下所示,這種方式不推薦使用,因爲該Job會一直佔有一個進程,容易內存溢出。

通過crontab執行Kettle任務
在Linux中crontab是用來提交和管理用戶週期性執行的任務。

例如(文件存放位置):

所有的transformation文件存放在/srv/kettle/transformations/

所有的job文件存放在/srv/kettle/jobs/

所有的日誌文件存放在/var/kettle/logs/

所有的執行腳本存放在/srv/kettle/script/

1)首先我們創建一個腳本。因爲是crontab執行任務,我們需要重新導入Java配置。

2)在終端上,鍵入“crontab-e”,進入定時任務文件,添加任務。

3)重啓cron 並查看任務

Kettle通過Carte遠程調度
Kettle的部署有很多種模式,上面講的是最原生的模式(Pan/Kitchen)。但是這種方式不利於監控、調度和資源分配。Kettle本身提供了一個用於調度的Web服務Carte。Carte允許遠程請求HTTP進行監控、啓動、停止在Carte服務上運行的job和trans。要部署使用Carte的大致過程如下所示:

1)修改xml配置文件

在kettle.pwd的描述中可以知道默認的用戶名密碼都是cluster(不放心的話可以通過<username>和<password>節點設置用戶名密碼),如果要修改密碼可以在配置文件中配置。

2)啓動Carte

啓動時將剛剛的配置文件加上。

啓動完成後就可以訪問Carte了,界面非常的簡陋。

PDI Status應該可以理解,下面的Configuration details上面三條代表日誌最大長度、日誌存活時間和指定轉換或者作業產生的對象的存活時間,這三個屬性都是爲了防止Out Of Memory。在上面的配置文件中的配置如下所示:

最後一個參數是資源庫名稱。

3)配置子服務器

上面是成功的將Carte服務打開,下面就需要將Spoon連接到Carte。在左側的樹中我們需要增加一個子服務器。如下所示:

4)創建一個新的運行配置,setting選擇Slave Server。

5)提交任務

運行時選擇剛剛配置的Carte執行。這樣我們執行文件就會上傳到Carte服務器指定的目錄然後執行。

然後在PDI Status界面就能看到執行的任務。點擊進行可以看到詳細的任務詳情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章