在使用Kettle的集群排序中 Carte的設定——(基於Windows)


本片文章主要是關於使用Kettle的UI界面:

Spoon來實現基於集群的對數據庫中的數據表數據進行排序的試驗。

以及在實驗過程中所要開啟的Carte服務的一些配置文件的設置,

還有基於Windows cmd 的相關Carte命令。

文章主要分為六個部分

1.介紹carte     

2.carte相關配置文件的設定

3.carte服務的開啟命令

4.在kettle的圖形界面中對集群進行相關的設定   

5.使用kettle集群模式對相關的數據進行排序

6.有關於集群調用子服務器的java源代碼調用實現

1.介紹carte

carte是由kettle所提供的web server的程序,
carte也被叫做子服務器(slave) 在kettle調用集群(cluster)來進行分布式分發、處理任務的時候,

可以開啟多個carte服務進程 來進行分發ETL(master)任務和接收,運行,提交ETL任務(slave)。

就像是《pentaho kettle solutions》中對Carte的定義:

"Carte a lightweight server process allows for remote monitoring and enables the transformation clustering capabilities ".

"Carte是一個輕量級的服務器進程,可以遠程監控和開啟轉換集群的能力".

 

2.carte相關配置文件的設定

與hadoop的結點設置類似,本實驗將要實現的是基於一台主機,

開啟四個carte服務,其中一台為Master另外三台為Slave,

來實現在Kettle的Spoon中對數據庫中數據表讀取后 以集群的方式來執行排序的過程。

開啟的carte服務所顯示的命令窗口都是一樣的,但是究竟哪一個是主服務哪些又是子服務呢?

對於集群中的主服務器還是子服務器的設定,

我們仍舊引用《pentaho kettle solutions》書中的一段話進行說明(因為很權威的):

"A cluster schema consists of one master server that is being used as a controller

for the cluster , and a number of non-master slave servers.  In short, we refer to

the controlling Carte server as the master and the other Carte servers as slaves"

LZ在不考慮到句式主 謂 賓 定  狀 補的條件下,對上述介紹的理解是這樣的。

"一個集群實體是由 一個 用來主控整個集群的主節點

和多個 不是主節點

(也就是主節點除外,即配置文件中 屬性<master>N</master>對應的值置為N的對應結點)

的子服務器所構成的。

簡而言之,我們把開啟的主控Carte 服務器 叫做 主節點 而其他的Carte 服務器叫做 從結點"。

 

關於Carte的服務器是主還是從是由相關的配置文件:carte-config.xml中的

屬性<master></master>中是"Y"還是"N" 所設定的,

其實這個和hadoop通過相關的XML配置文件來設定是主節點還是從節點是很神似的。

配置文件吧,其實根據計算機不同,以及計算機中的環境變量的不同而千差萬別。

主要說一下LZ關於配置文件的設定過程吧,

若想讓Carte程序可以成功運行的話,首先就應該設定它的配置文件,

配置文件所在的路徑,如下圖所示:

(carte-config.xml 截圖)

在這里LZ在正常進行配置的時候cmd窗口報錯,說是在kokia/Acer/user/acer/

的下面找不到pwd文件夾(kokia是LZ的計算機名稱)

所以LZ根據提示將kettle安裝解壓路徑下的pwd文件夾復制了一份到提示信息的路徑下,

才使得Carte正常運行,不過要讓LZ說是什么原理嘛,其實LZ也不知道的,

或許默認Carte服務啟動的時候會到該路徑下自行尋找相關的配置文件吧......

pwd這個文件夾下面默認存放的是關於Carte的一些配置文件以及登陸用戶名以及密碼等等,

它所在的kettle安裝包的路徑就是./data-integration/pwd 這個下面的。

 

下面是關於主服務器(master:carte-config-master-8080.xml)配置文件進行相關注釋說明:

<slave_config>

<slaveserver>
<name>master1</name>
<hostname>localhost</hostname>
<port>8080</port>
<master>Y</master>
</slaveserver>


</slave_config>

<!--
even though called master node  ,

it is a instance of the  slaveserver

<name> attribute is used to define the name of the slaveserver
<hostname> in this conf file is the localhost which equal
to the "127.0.0.1" IP address

當然,對於這個hostname的話,在Linux的環境中,

在對應的配置文件中 有相關的IP地址與主機名稱相對應的,

在Windows下面,LZ並不知道相關的配置文件在哪里,

所以如果是集群的節點所在的並不是基於一台主機的話,
<hostname>這個屬性的值可以使用該節點所在的主機IP地址所代替。 <port> 8080 , in carte the port of 8080 is regarded as the port of the master node in default <master> : Y which talked about above , attribute value = Y means that the current slaveserver is regarded as the master node in the cluster.
-->

下面是關於子服務器(slave)的配置文件進行相關注釋說明:

<slave_config>

<masters>

<slaveserver>

<name>master1</name>
<hostname>localhost</hostname>
<port>8080</port>
<username>cluster</username>
<password>cluster</password>
<master>Y</master>
</slaveserver>

</masters>


<report_to_masters>Y</report_to_masters>

<slaveserver>
<name>slave1-8081</name>
<hostname>localhost</hostname>
<port>8081</port>
<username>cluster</username>
<password>cluster</password>
<master>N</master>
</slaveserver>

</slave_config>

從節點的配置文件照比主節點的配置文件要稍微多一些內容的,

首先,多的是<masters>這個屬性,其中包含的是關於一個<slaveserver>實體的設定,

其實也就是相應的在其中引入了主節點的相關設定的屬性值。

 

然后有一個屬性是<report_to_masters>這個屬性是用來設定:

slave1-8081這個節點已經是主節點的子節點了,但是是否向主節點提交信息還是不知道的,

所以要通過這個屬性對其進行相關的設定。

接下來就是對從節點進行相關的設定,關於IP地址,端口號,節點名稱,登錄用戶名以及密碼,

又因為該節點是子節點,所以<master>這個屬性值對應的是"N".

 

需要注意的是,如果是在開啟carte或是Spoon的時候進行相關的配置文件 進行設定的話呢,

需要退出程序之后再次進入才能是相關的配置文件生效。

  

3.carte服務的開啟命令

Carte 有着針對不同系統可以正常運行的不同腳本文件,

對於Windows有着:Carte.bat

 對於Linux有着:carte.sh

本文主要討論的是基於Windows的運行。

首先,打開cmd控制台窗口:

然后(LZ的cmd 運行有一些問題,因為LZ的計算機是64bit的,

所以需要右鍵單擊cmd:選擇這個"以管理員的身份運行"這個選項,

才能保證carte的正確運行,不然權限不夠啟動會出錯的)

Windows下,運行Carte:

./Carte.bat  IP address  port

如截圖所示:master node是8080端口,下面開啟master node:

 

 

如下圖所示,代表的是本地的主節點(port=8080)Carte服務已經被成功開啟了,

4.在kettle的圖形界面中對集群進行相關的設定

首先,應該開啟Spoon程序,進入到圖形界面中后,創建一個轉換,

然后選擇左邊選項樹的的左選項:主對象樹,

然后找到子服務器右擊選擇新建,如下圖所示配置好主節點。

 

需要注意的是:

1.服務器的名稱一定要與pwd文件夾下面的配置文件<name>屬性所對應的值是一致的

2.所新建的子服務器一定要在pwd文件夾下面要有對應的配置文件才可以,

否則即便在Spoon中進行相關的設定也不會在集群中作為一個節點所運行的。

因為配置文件決定的是Carte服務的啟動運行,而Spoon中需要調用到Carte服務。

如果一開始配置文件中沒有該節點的話,就無法啟動Carte服務,

在Spoon中也就無法調用該Carte作為子服務器,更不用說是將該子服務器作為集群中的節點了。

 

當然LZ也試着在Spoon界面中創建相關的子服務器,然后存盤該.ktr文件,

然后到相應的pwd文件夾下面尋找是否有相關的配置文件生成,但沒有找到。

 

所以今后在Spoon中設定配置子服務器的時候,一定要先配置好Carte的配置文件才好。

 

下面的截圖是,將要作為集群的一個子節點在pwd文件夾下的配置文件信息:

可以看到的是,對應的<name>屬性的值是:slave1-8081

所以在Spoon中設定子服務器作為子節點的時候,

最好是要保證二者(Spoon中的子服務器設定和配置文件)的一致性才好:

接下來的其余子節點就不進行一一演示了。

在"是主服務器嗎?"這個選項中,因為它不是主服務器,所以不對其進行勾選。

 

接下來將各個子服務器導入到集群中去,

選擇左對象樹,然后右鍵單擊:Kettle集群schemas->新建。

接下來選中相關的子服務器:

選中所有的要加入到cluster中的子服務器之后,點擊確定。

接下來就可以在集群schema對話框中看到相應的選中的服務器了,如下圖所示:

 

 

感覺這篇文章的內容有一點多了呢,估計后面的兩個主題也會涉及到很多的東西呢,

所以5、6這 兩個主題就留到接下來的一篇文章中來介紹吧~

 

5.使用kettle集群模式對相關的數據進行排序

 http://www.cnblogs.com/inuyasha1027/p/kettle_cluster_sorting2.html

6.有關於集群調用子服務器的java源代碼實現

 


免責聲明!

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



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