Kettle — 安裝和集羣搭建

前提

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

 

Kettle安裝

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

 

 

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

 

4)執行kitchen.sh腳本

3)如果出現以下的錯誤,這是因爲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服務器指定的目錄然後執行。

 

*****************************************KETTLE集羣搭建********************************

說明:

本文檔基於kettle5.4

 

一、集羣的原理與優缺點

1.1集羣的原理

         Kettle集羣是由一個主carte服務器和多個從carte服務器組成的,類似於master-slave結構,不同的是’master’處理具體任務,只負責任務的分發和收集運行結果。

Master carte結點收到請求後,把任務分成多個部分交給slave carte執行,slave執行完畢後把結果交給mater 進行彙總,再由mster返回結果。

1.2集羣的優點

         和其它系統的集羣一樣,有以下優點:

         1)多服務器運行,加快處理速度,對於大數據量的操作更明顯

         2)防單點失敗,一臺服務器故障後其它服務器還可以運行

1.3集羣的缺點

         1)採用主從結構,不具備自動切換主從的功能。所以一旦主節點宕機,整個系統不可用

         2)對網絡要求高,節點之間需要不斷的傳輸數據

         3)需要更多的服務器,而且主節點沒有處理能力

1.4 適用場景

         適合於:

         1)需求kettle能時刻保持正常運行的場景

         2)大批量處理數據的場景

二、集羣搭建

2.1 配置子服務器

2.1.1 配置主服務器

打開ketlle目錄,找到pwd目錄,裏面有4個XML文件,分別是子服務器的配置文件和密碼文件:

Carte-config-master-8080.xml是主服務器的配置文件。編輯該文件,根據情況修改其中的name\hostname\port\master等屬性。Name是服務器的名稱,hostname是主機名或者IP,port是端口號,Master表明是否是主服務器。此外,加上兩行:

<username>cluster</username>

<password>cluster</password>

在<master>Y<mater>之下

         接着啓動主服務器,在kettle目錄中打開cmd窗口,執行carte localhost 8080:

         至此,主服務器配置完成。

 

2.1.2 配置從服務器

         剩下的三個爲從服務器的配置文件。以carte-config-8081.xml爲例。打開該文件:

發現該文件有<master>和<slaveserver>兩層標籤,<master>標籤表示該服務器要連接的主服務器的信息,保持與carte-config-master.xml一致。<slaveserver>標籤是從服務器的信息,按照需要更改即可。

         然後啓動slave1-8081從服務器:

         按照同樣的方法,配置slave2-8082\slave3-8083並啓動。(本實驗只配置一主兩從)

2.2 建立集羣

2.2.1 在spoon中創建子服務器。

         打開spoon.bat,新建一個轉換。選擇主對象樹-子服務器,右鍵新鍵子服務器:

把xml中的信息複製過來,保證與xml中的信息一模一樣。按照這種文件配置master slave1-8081 slave2-8082。

2.2.2 建立集羣

         在主對象樹中選擇kettle集羣schemas,填寫schema名稱,端口、sokects緩存大小、sockets刷新時間間隔、socketts數據是否壓縮。在右邊點擊選擇子服務器,選擇需要的子服務器。

Schema名稱即集羣的名稱。

端口即集羣對外服務的端口.

sockets緩存大小:sockets緩存

Sockets刷新時間間隔:達到多少行記錄時刷新到子服務器。

Sockets數據是否壓縮:如果網絡狀況差,則建議選擇。網絡良好時不用選擇。

 

2.3 執行轉換

         配置完集羣后,選擇轉換中的執步驟”排序記錄“,右鍵該步驟,選擇”集羣”,選擇剛纔配置的集羣。

         選擇然後會發現排序紀錄多出”CX2”,表示有2個子服務器來執行。在一個三個子服務器的集羣中,主服務器負責任務分發、結果收集,轉換任務由從服務器執行,故只有兩個節點執行。

         執行該轉換:

         在命令臺中,主服務器:

         從服務器1:

         從服務器2:

可以看到各個子服務器的執行情況。

         至此,集羣搭建成功。

 

                                

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