目錄
摘要
Kettle安裝
軟件
Windows
Linux
環境
安裝步驟
Kettle轉換與作業執行
使用pan執行transformation
使用kitchen執行job
Kettle通過Carte遠程調度
Kettle集群
原理
Carte集群搭建
Linux端部署與啟動
windows端連接與運行
評價3種運行方式
遠程執行與本地執行
集群執行
優點
缺點
適用場景
參考文獻
摘要
目前的UDI轉換任務都是采用的本地運行模式,想了解一下遠程服務器運行和集群運行模式。
調研Kettle的集群及遠程執行功能
(1) 如何配置遠程服務器
(2) 如何搭建kettle集群
(3) 遠程執行,集群執行與本地執行有什么區別
參考鏈接https://blog.csdn.net/demonson/article/details/90268034
Kettle安裝
軟件
鏈接:https://pan.baidu.com/s/1SaVAaLNmRFDEUbWQVyHmJw
提取碼:0hke
Windows
1) 安裝jdk
2) 下載kettle壓縮包,因kettle為綠色軟件,解壓縮到任意本地路徑即可
3) 雙擊Spoon.bat,啟動圖形化界面工具,就可以直接使用了
Linux
環境
centos6
Java8(Kettle是純Java編寫的ETL開源工具,目前Kettle7和Kettle8都需要Java8或者以上才能正常運行。所以開運行Kettle前先檢查Java環境是否正確配置,Java版本是否是8或者以上。)
安裝步驟
1)創建Kettle的目錄,並將Kettle的zip包解壓到Kettle目錄下
unzip pdi-ce-9.0.0.0-423.zip -d ../module/kettle/
2)查看一下sh文件使用都有執行的權限,如果沒請加上。
3)執行kitchen.sh腳本,出現以下界面說明kettle可以正常使用
同時home目錄下應該有個.kettle目錄,使用ll -a
查看,默認.xx
文件是隱藏的
Kettle轉換與作業執行
在Kettle中pan和kitchen兩個工具分別用來執行transformation(轉換)和job(作業),如下所示:
對於文件存儲,不是數據庫資源庫,可以如下的方式存放文件:
所有的transformation文件存放在/srv/kettle/transformations/
所有的job文件存放在/srv/kettle/jobs/
所有的日志文件存放在/var/kettle/logs/
所有的執行腳本存放在/srv/kettle/script/
將從windows上配置好的.ktr和.kjb程序分別放在transition目錄和job目錄下(或linux下編寫后直接保存到該目錄下)
使用pan執行transformation
pan語法:./pan.sh -option=value arg1 arg2
./pan.sh -file=/home/atguigu/srv/kettle/transformations/kettle_test.ktr -level=Detailed > /home/atguigu/var/kettle/logs/kettle_test.log
日志內容:
使用kitchen執行job
kitchen語法:./kitchen.sh -option=value arg1 arg2
[atguigu@hadoop101 data-integration]$ ./kitchen.sh -file=/home/atguigu/srv/kettle/jobs/job_test.kjb -level=Detailed > /home/atguigu/var/kettle/logs/job_test.log
Kettle通過Carte遠程調度
以上(Pan/Kitchen)運行是最原生的模式。但是這種方式不利於監控、調度和資源分配。Kettle本身提供了一個用於調度的Web服務Carte。Carte允許遠程請求HTTP進行監控、啟動、停止在Carte服務上運行的job和trans。要部署使用Carte的大致過程如下所示:
1)修改xml配置文件
在kettle.pwd
的描述中可以知道默認的用戶名密碼都是cluster(不放心的話可以通過
2)啟動Carte
nohup ./carte.sh pwd/carte-config-master-8080.xml
最終出現下圖即成功開始Carte服務
啟動完成后就可以訪問Carte了,界面非常的簡單。
PDI Status應該可以理解,下面的Configuration details上面三條代表日志最大長度、日志存活時間和指定轉換或者作業產生的對象的存活時間,這三個屬性都是為了防止Out Of Memory。
3)配置子服務器
上面是成功的將Carte服務打開,下面就需要將Spoon連接到Carte。在左側的樹中我們需要增加一個子服務器。如下所示:
4)創建一個新的運行配置,setting選擇Slave Server。
5)提交任務
運行時選擇剛剛配置的Carte執行。這樣我們執行文件就會上傳到Carte服務器指定的目錄然后執行。
然后在PDI Status界面就能看到執行的任務。點擊進行可以看到詳細的任務詳情。
Kettle集群
原理
Kettle集群是由一個主carte服務器和多個從carte服務器組成的,類似於master-slave結構,不同的是’master’處理具體任務,只負責任務的分發和收集運行結果。
Master carte結點收到請求后,把任務分成多個部分交給slave carte執行,slave執行完畢后把結果交給mater 進行匯總,再由mster返回結果。
在Kettle中合理的使用集群可以加快執行的速度,並且還能在部分服務器宕機的情況下繼續使用,但一旦主服務器宕機,則Kettle集群就不能使用了。
Carte集群搭建
基本上集群部署就是將Kettle安裝到多個服務器上,分別在不同的服務器執行主從服務器
集群Master:192.168.109.101
集群Slave1:192.168.109.102
集群Slave2:192.168.109.103
需要在centos6上安裝好jdk,配置好環境變量,並且把kettle安裝好。
注意:在集群運行環境中,需要端口打開或者直接關閉防火牆,供主服務器及子服務器互相連通通訊
注意:再次聲明,配置文件中的username和password並不是指主機的登陸賬號和密碼,是集群的賬號密碼,該賬號密碼是集群連接的依據,賬號密碼是通過混淆的方式保存在pwd文件,kettle默認的賬號密碼是cluster/cluster,修改該賬號密碼需要修改pwd文件。
Linux端部署與啟動
1)首先是將Kettle程序拷貝到主從服務器上,並配好環境
2)修改主從服務器配置文件
進入到PDI的pwd目錄下,如下所示。
對於從服務器配置也沒有什么特別的地方,我們需要先配置主服務器。
配置從服務器,需要指定主服務器
從服務器1
從服務器2
注意:該環境將master、slave1、slave2的pwd的三個配置文件都修改了,並且都修改的一樣。理論上是master修改carte-config-master-8080.xml、slave1修改carte-config-8081.xml、slave2修改carte-config-8082.xml即可。如果不修改出現了cannotconnet的報錯,請三台linux系統中的pwd配置文件都進行修改。
3)集群啟動。
在主服務器中,進入到data-integration目錄下,輸入./carte.sh pwd/carte-config-master-8080.xml
,啟動master節點。
./carte.sh pwd/carte-config-master-8080.xml
啟動成功提示如下:
訪問測試
然后同樣操作,在子服務器進入到data-integration目錄下,啟動9091端口的子服務器。重復動作,啟動9092端口的子服務器。
windows端連接與運行
1)在windows本機新建子服務器及集群。
在主對象樹中新建子服務器,配置分別如下圖,
主服務器
從服務器1
從服務器2
在主對象樹中,在“kettle集群schmas”中右鍵,新建,點擊“選擇子服務器”,添加剛才新建的子服務器,然后確定。
轉換頁 -> 主對象樹 ->Run Configurations ->右鍵新建 -> 新建運行環境。注意選擇Clustered。如下:
2)集群執行
集群遠程執行開發。在kettle開發中,通常是需要遠程調用測試環境的kettle集群來進行開發測試的。現在,集群環境在linux環境,采用遠程執行的方式進行運行設計好的帶有集群的kettle代碼。
選擇需要集群運行的組件,右鍵->集群->選擇我們創建的集群
運行,選擇我們配置到的集群運行環境
運行成功,在web監控頁面查看運行結果
主服務器web頁面
子服務器1web頁面
子服務器2web頁面
評價3種運行方式
遠程執行,集群執行與本地執行
遠程執行與本地執行
本地執行部署簡單,網絡要求低,但是這種方式不利於監控、調度和資源分配。
與之相對,遠程執行具備以上優點。
集群執行
優點
和其它系統的集群一樣,有以下優點:
1)多服務器運行,加快處理速度,對於大數據量的操作更明顯
2)防單點失敗,一台服務器故障后其它服務器還可以運行
缺點
1)采用主從結構,不具備自動切換主從的功能。所以一旦主節點宕機,整個系統不可用
2)對網絡要求高,節點之間需要不斷的傳輸數據
3)需要更多的服務器,而且主節點沒有處理能力
適用場景
適合於:
1)需求kettle能時刻保持正常運行的場景
2)大批量處理數據的場景