Kettle是一款開源的ETL工具,以其高效和可擴展性而聞名於業內。其高效的一個重要緣由就是其多線程和集羣功能。 Kettle的多線程採用的是一種流水線併發的機制,咱們在另外的文章中專門有介紹。這裏主要介紹的是kettle .
Kettle是一款開源的ETL工具,以其高效和可擴展性而聞名於業內。其高效的一個重要緣由就是其多線程和集羣功能。 linux
Kettle的多線程採用的是一種流水線併發的機制,咱們在另外的文章中專門有介紹。這裏主要介紹的是kettle的集羣。 web
集羣容許轉換以及轉換中的步驟在多個服務器上併發執行。在使用kettle集羣時,首先須要定義的是Cluster schema。所謂的Cluster schema就是一系列的子服務器的集合。在一個集羣中,它包含一個主服務器(Master)和多個從屬服務器服務器(slave)。以下圖所示: 正則表達式
子服務器(Slave servers)容許你在遠程服務器上執行轉換。創建一個子服務器須要你在遠程服務器上創建一個叫作「Carte」的 web 服務器,該服務器能夠從Spoon(遠程或者集羣執行)或者轉換任務中接受輸入。 算法
在之後的描述中,若是咱們提到的是子服務器,則包括集羣中的主服務器和從屬服務器;不然咱們會以主服務器和從屬服務器來進行特別指定。 shell
選項 | 描述 |
服務器名稱 |
子服務器的名稱 |
主機名稱或IP地址 |
用做子服務器的機器的地址 |
端口號 |
與遠程服務通訊的端口號 |
用戶名 |
獲取遠程服務器的用戶名 |
密碼 |
獲取遠程服務器的密碼 |
是主服務器嗎 |
在轉換以集羣形式執行時,該子服務器將做爲 |
注意: 在集羣環境下執行轉化時,你必須有一個子服務器做爲主服務器(master server)而其他全部的子服務器都做從屬服務器(slave server)
選項 | 描述 |
代理服務器主機名 |
設置你要經過代理進行鏈接的主機名 |
代理服務器端口 |
設置與代理進行鏈接時所需的端口號 |
Ignore proxy for hosts: regexp|separated |
指定哪些服務器不須要經過代理來進行鏈接。該選項支持你使用正則表達式來制定多個服務器,多個服務器之間以' | ' 字符來進行分割 |
選項 | 描述 |
Schema 名稱 |
集羣schema的名稱 |
端口號 | 這裏定義的端口號是指從哪個端口號開始分配給子服務器。每個在子服務器中執行的步驟都要消耗一端口號。注意: 確保沒有別的網絡協議會使用你定義的範圍之類的端口,不然會引發問題 緩存 |
Sockets緩存大小 |
TCP內部緩存的大小 |
Sockets刷新間隔(rows) |
當TCP的內部緩存經過網絡徹底發送出去而且被清空時處理的行數 |
Sockets數據是否壓縮 |
若是該選項被選中,則全部的數據都會使用Gzip壓縮算法進行壓縮以減輕網絡傳輸量 |
Dynamic Cluster |
動態集羣指的是在運行的時候才能獲知從屬服務器的信息。這種情形適用於主機能夠自動增長或者去除的情形,例如雲計算。 服務器 主服務器的設置不變,可是它能夠接受從屬服務器的註冊。一旦接受了某個從屬服務器的註冊,則每隔30秒去監視該從屬服務器是否還處於有效狀態 網絡 |
子服務器 |
這裏是一個要在集羣中使用的服務器列表。這個列表中包含一個主服務器和任意數目的從屬服務器。 多線程 在dynamic Cluster的狀況下,只須要選擇主服務器便可 併發 |
首先你像平時同樣建立轉換,以hop鏈接連個兩個步驟。而後你指定第二個步驟將在集羣下執行
而後選擇須要使用的集羣。轉換如圖同樣顯示在GUI中。
注意 Cx4顯示這個步驟將在集羣中運行,而這個集羣中有4個從屬服務器。假設咱們將計算結果再次存入到數據表中
這個轉換雖然定義了集羣,可是咱們一樣可讓它在單機環境下執行,並且能夠獲得相同的結果。這意味着你可使用普通的本地模式來測試它。
要想以集羣方式來運行轉換或者做業,首先須要啓動在Cluster schema中定義的主服務器和從屬服務器,而後再運行轉換或者做業。
Carte 127.0.0.1 8080 Carte 192.168.1.221 8081
Carte /foo/bar/carte-config.xml Carte http://www.example.com/carte-config.xml