調研Kettle遠程執行及集群執行功能


目錄

toc

摘要

目前的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或者以上。)

image-20200701104225850

安裝步驟

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

image-20200701104016250

image-20200701103933493

unzip pdi-ce-9.0.0.0-423.zip -d ../module/kettle/

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

image-20200701105056766

3)執行kitchen.sh腳本,出現以下界面說明kettle可以正常使用

image-20200701105635503

同時home目錄下應該有個.kettle目錄,使用ll -a查看,默認.xx文件是隱藏的

image-20200701121333804

Kettle轉換與作業執行

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

image-20200701120529526

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

所有的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

image-20200701124611578

./pan.sh -file=/home/atguigu/srv/kettle/transformations/kettle_test.ktr -level=Detailed > /home/atguigu/var/kettle/logs/kettle_test.log

日志內容:

image-20200701124638284

使用kitchen執行job

kitchen語法:./kitchen.sh -option=value arg1 arg2

image-20200701203251402

[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配置文件

image-20200701203622731

image-20200701210055651

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

2)啟動Carte

image-20200701205253219

nohup ./carte.sh pwd/carte-config-master-8080.xml

最終出現下圖即成功開始Carte服務

image-20200701204950354

啟動完成后就可以訪問Carte了,界面非常的簡單。

image-20200701210211194

PDI Status應該可以理解,下面的Configuration details上面三條代表日志最大長度、日志存活時間和指定轉換或者作業產生的對象的存活時間,這三個屬性都是為了防止Out Of Memory。

3)配置子服務器

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

image-20200701213812298

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

image-20200701213848436

5)提交任務

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

image-20200701213942060

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

image-20200701214017060

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目錄下,如下所示。

image-20200702105530062

對於從服務器配置也沒有什么特別的地方,我們需要先配置主服務器。

image-20200702105556623

image-20200702121828584

配置從服務器,需要指定主服務器

從服務器1

image-20200702131016842

從服務器2

image-20200702131117905

注意:該環境將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

image-20200702112541369

啟動成功提示如下:

image-20200702124747031

訪問測試

image-20200702124821828

然后同樣操作,在子服務器進入到data-integration目錄下,啟動9091端口的子服務器。重復動作,啟動9092端口的子服務器。

image-20200702132407580

image-20200702135302064

windows端連接與運行

1)在windows本機新建子服務器及集群。

在主對象樹中新建子服務器,配置分別如下圖,

image-20200702155508746

主服務器

image-20200702190303736

從服務器1

image-20200702190333880

從服務器2

image-20200702190346784

在主對象樹中,在“kettle集群schmas”中右鍵,新建,點擊“選擇子服務器”,添加剛才新建的子服務器,然后確定。

image-20200702192354609

轉換頁 -> 主對象樹 ->Run Configurations ->右鍵新建 -> 新建運行環境。注意選擇Clustered。如下:

image-20200702192453062

2)集群執行

集群遠程執行開發。在kettle開發中,通常是需要遠程調用測試環境的kettle集群來進行開發測試的。現在,集群環境在linux環境,采用遠程執行的方式進行運行設計好的帶有集群的kettle代碼。

選擇需要集群運行的組件,右鍵->集群->選擇我們創建的集群

image-20200702192811797

運行,選擇我們配置到的集群運行環境

image-20200702195304952

運行成功,在web監控頁面查看運行結果

主服務器web頁面

image-20200702193217527

子服務器1web頁面

image-20200702193028636

子服務器2web頁面

image-20200702193144908

評價3種運行方式

遠程執行,集群執行與本地執行

遠程執行與本地執行

本地執行部署簡單,網絡要求低,但是這種方式不利於監控、調度和資源分配。

與之相對,遠程執行具備以上優點。

集群執行

優點

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

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

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

缺點

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

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

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

適用場景

適合於:

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

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

參考文獻

Kettle — 安裝和部署

Kettle — 集群使用

Kettle集群介紹及(windows、linux)環境搭建

Kettle之旅-carte集群搭建以及遠程執行轉換和作業


免責聲明!

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



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