在使用Kettle的集羣排序中 Carte的設定

原文

本片文章主要是關於使用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中設定子服務器作爲子節點的時候:

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

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

 

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

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

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

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

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

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

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

 

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

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

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