kettle集群搭建


一、         Kettle集群概述

1)  Kettle集群簡介

    集群技術可以用來水平擴展轉換,使得他們能夠同時運行在多台服務器上。它將轉換的工作量均分到不同的服務器上。這一部分,我們將介紹怎樣配置和執行一個轉換,讓其運行在多台機器上。

一個集群schema由一台主服務器,和一些子服務器組成,主服務器作為一個集群的控制器。簡單的說,我們提到的Carte控制服務器就是主服務器,其他的Carte服務器就是子服務器。

 

2)  Kettle集群優劣勢

集群的優點

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

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

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

集群的缺點

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

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

         3)需要更多的服務器,而且主節點沒有處理能力(在該步驟沒有處理能力,在其他的沒有使用集群功能的步驟仍具有處理能力)。

適用場景

         適合於:

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

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

二、         Kettle集群部署方案

1)  Window本機部署三節點集群

Window本機部署只適用於本地開發環境。它作為一個偽集群方式進行部署,采用的一個kettle安裝文件且用不同的端口進行集群部署。首先采用的環境是Win10,kettle版本采用的5.4.0,jdk采用的1.8.0_91。(當然,首先需要配置java環境變量,保證kettle正常啟動)

1.首先確認本機是否有tomcat運行,因為kettle集群的master默認采用8080端口,這和tomcat的默認端口是沖突的,當然可以進行端口修改,自定義使用端口。

2.打開kettle的安裝目錄,進入到data-integration->pwd目錄,找到carte-config-master-8080.xml文件。

 

   3.打開carte-config-master-8080.xml文件,如下圖。該文件主要是進行master主機配置。

注意:在本機部署的集群環境中,建議hostname填localhost,因為開發者很多會在本機安裝虛擬機,虛擬機NAT網絡連接會修改本地的ip地址,如果是熟練使用wmware等虛擬機軟件的開發者,請忽略。

4.carte-config-8081.xml文件是子服務器的配置文件。打開該文件,如下圖。其中masters中,name、hostname、port需要和carte-config-master-8080.xml中完全一致。然后,同樣修改carte-config-8082.xml文件。

注意:username和password並不是指主機的登陸賬號和密碼,是集群的賬號密碼,該賬號密碼是集群連接的依據,賬號密碼是通過混淆的方式保存在pwd文件,kettle默認的賬號密碼是cluster/cluster,所以,在本機開發的時候,為了方便,賬號密碼都不用修改,都使用cluster即可。

5.集群啟動。在開始菜單中啟動命令提示符(管理員),進入到data-integration目錄下,輸入carte.bat pwd\carte-config-master-8080.xml,啟動master節點。

 

注意:啟動時,出現attemping to load ESAPI.properties等提示為kettle出現的bug,暫時未發現解決方法。

然后,再打開一個命令提示符的窗口,進入到data-integration目錄下,執行命令carte.batpwd\carte-config-8081.xml,則啟動8081端口的子服務器。重復動作,啟動8082端口的子服務器。

   在啟動了三台集群服務器之后,在瀏覽器中輸入localhost:8080,進入到頁面如下:

 

輸入cluster/cluster,進入到頁面如下:

 

表示主節點已經啟動完畢。輸入localhost:8081及localhost:8082查看子服務器狀態。

到此,windows本機三節點集群部署完畢。

2)  windows調用linux環境集群組

由於大多數kettle集群開發采用windows本地開發,然后集群環境在linux上。因此,則需要在此環境進行開發,測試及部署。

此文檔的開發環境是:Centos7、kettle5.4.0、jdk1.9.0、本機為win10。

網絡連接為:

本機:Vmnet8設置192.168.10.100

集群Master:192.168.10.101

集群Slave1:192.168.10.102

集群Slave2:192.168.10.103

需要在centos7上安裝好jdk,配置好環境變量,並且把kettle安裝好。(kettle不需要啟動spoon來啟動圖形界面,利用kitchen調試好即可,linux上安裝kettle網上有很多教程,自行查閱即可)

注意:在集群運行環境中,需要端口打開或者直接關閉防火牆,供主服務器及子服務器互相連通通訊,在centos7中,放火牆采用firewalld的方式,和以前的iptable不一樣,檢查端口是否開通,可以通過本機進行telnet測試。Centos7防火牆配置見筆記。

首先,像windows開發環境一樣,配置pwd中的carte-config-master-8080.xml、carte-config-8081.xml和carte-config-8082.xml文件,配置文件見下圖:

注意:再次聲明,配置文件中的username和password並不是指主機的登陸賬號和密碼,是集群的賬號密碼,該賬號密碼是集群連接的依據,賬號密碼是通過混淆的方式保存在pwd文件,kettle默認的賬號密碼是cluster/cluster,修改該賬號密碼需要修改pwd文件。

 

 

注意:該環境將master、slave1、slave2的pwd的三個配置文件都修改了,並且都修改的一樣。理論上是master修改carte-config-master-8080.xml、slave1修改carte-config-8081.xml、slave2修改carte-config-8082.xml即可。如果不修改出現了cannotconnet的報錯,請三台linux系統中的pwd配置文件都進行修改。

 

啟動master。在master的虛擬機(192.168.10.101)中,進入到data-integration目錄下,運行./carte.sh192.168.10.101 8080。啟動服務,啟動192.168.10.101為carte-config-master-8080.xml設置的ip,8080為carte-config-master-8080.xml設置端口。

 

注意:啟動時,出現attemping to load ESAPI.properties等提示為kettle出現的bug,暫時未發現解決方法。

   啟動之后,在瀏覽器輸入192.168.10.101:8080,出現如下圖:

輸入cluster/cluster,登陸進入。

 

表示master啟動成功。

   啟動slave1,在salve1(192.168.10.102)中,進入到data-integration目錄下,運行./carte.sh192.168.10.102 8081。

 

啟動之后,在瀏覽器輸入192.168.10.102:8081,輸入cluster/cluster出現如下圖:

 

 表示slave1啟動成功。

啟動slave2,在salve2(192.168.10.103)中,進入到data-integration目錄下,運行./carte.sh192.168.10.103 8082。

啟動之后,在瀏覽器輸入192.168.10.102:8081,輸入cluster/cluster出現如下圖:

 

表示slave2啟動成功。

在windows本機新建子服務器及集群。在主對象樹中新建子服務器,配置分別如下圖,

 

 

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

到此,集群搭建完畢。

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

點擊運行,選擇遠程執行,選擇遠程主機為master,然后啟動。

出現如下界面:

刷新下192.168.10.101:8080、192.168.10.102:8081和192.168.10.103:8083頁面,出現如下頁面

 

 

如上圖所見,排序記錄被salve1和salve2分開執行了,表示,集群運行無誤。

三、         Kettle集群開發

kettle集群開發的方式,是通過job及trans開發過程中使用集群的方式。子服務器中新建三個子服務器。

1)  trans集群開發

在主對象樹子服務器中右鍵,新建,填寫服務器連接信息

注意:該部分配置信息需要和carte-config-m、aster,-8080.xml配置信息一致,由於是主服務器,需要勾選最后一欄。

然后填寫兩個子服務器信息,需要和carte-config-master-8081.xml和carte-config-master-8082.xml中的信息一致。

 

在主對象樹中的kettle集群Schemas,右鍵,新建,選擇子服務器,將剛剛配置好的三台子服務器添加到Schemas中。

 

然后點擊確定,這樣trans中的集群配置就完成了。

  然后為了測試,做了一個trans進行集群測試,如下圖。在排序的時候右鍵,選擇集群,選擇配置好的集群,該步驟右上方會有一個Cx2標識,表示有兩台子服務器的集群。

 

點擊“執行”,選擇“提交轉換”、“准備執行”、“開始執行”,“顯示轉換”如果選擇則會在spoon中顯示相應的運行日志。

    在trans執行過程中,刷新打開的localhost:8080/kettle/status和localhost:8081/kettle/status和localhost:8082/kettle/status,會發現我們剛才做的trans正在執行。

 

執行的日志同樣也可以在命令提示符中可以查看。

2)  job集群開發

  job的集群開發,並不是和trans一樣,job的集群開主要是將trans分配到不同的子服務器中執行。

   首先配置子服務器的方法和trans一樣,如下圖:

   在轉換的步驟,高級選項,選擇遠程從服務器,選擇要執行的服務器,確定,即可。

   注:如果trans是需要在在集群的環境下執行,則需要勾選上面的“在集群模式下運行這個轉換”。

四、         Kettle集群筆記

1)  Centos7防火牆開端口

Centos7放火牆功能由iptables替換為firewalld。在firewalld的各種服務里,是以區域為定義進行設定的,設定的區域和網絡接口關聯起來生效。

防火牆的開啟/關閉

#systemctl start firewalld

#systemctl enable firewalld

停止Firewalld,及關閉開機自啟。

# systemctl stop firewalld

# systemctl disable firewalld

 

打開端口

firewall-cmd –zone=public –add-port=80/tcp –permanent(-permanent是永久開放端口,沒有該配置在重啟后開啟端口失效。)

 

查看打開端口

firewall-cmd --list-all

 

打開端口之后建議重啟放火牆

 

2)  Cater安全-賬號密碼設置

  在上面提到pwd文件夾中的master等配置文件中的username和password默認是cluster/cluster,如果需要修改密碼,則需要到pwd文件夾中的kettle.pwd文件修改參數。

   如圖:在pwd文件中,第一未注釋的行是cluster的賬號密碼。其中加了OBF的意思是字符串是被混淆了的(但是並不等同於加密)。

   如果要新建一個賬號密碼。則只需要在下面另起一行以username:password的形式添加即可,如圖。

   如果需要進行混淆,可以利用kettle自帶的encr工具來進行混淆。

 

 

kettle 連接mysql出錯 Driver class 'org.git.mm.mysql.Driver' could not be found, make sure the ........

解決方法: 下載mysql-connector-java.jar 放置到data-integration\lib\目錄下

 


免責聲明!

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



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