Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。
Kettle 中文名稱叫水壺,該項目的主程序員MATT希望把各種數據放到一個壺里,然后以一種指定的格式流出。
Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。
Kettle中有兩種腳本文件,transformation(.ktr)和job(.kjb),transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。
kettle集群中,主節點主要充當將任務分給從節點的角色,而從節點則是真正計算處理數據的節點,數據處理完畢后則將數據合并到主節點,然后主節點再將數據返回給客戶端
目錄
- 一、安裝環境
- 二、環境準備
- 三、kettle分布式集群搭建步驟
- 四、集群測試
一、安裝環境
操作系統: CentOS 7
kETTLE版本: pdi-ce-9.0.0.0-423
集群:
192.168.111.241 master
192.168.111.242 slave1
192.168.111.243 slave3
192.168.111.245:MySQL服務器(測試用,包括源庫表和目標庫表)
二、環境準備
1、JDK安裝(每個節點都要安裝配置)
yum安裝JDK
[root@master ~]# yum install java-1.8.0-openjdk* -y
環境變量配置
/etc/profile文件中追加以下:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64
export PATH=$PATH:$JAVA_HOME/bin
2、配置主機名(每個節點都要配置)
hostname文件
/etc/hostname文件將主機名修改,其中master機器中寫入master,slave1機器寫入slave1,slave2機器寫入slave2
如master:
hosts文件
在hosts文件中寫入各個節點的IP及主機名映射
3、MySQL數據庫安裝配置
此步驟省略,當然不一定是MySQL數據庫,你也可以是Oracle等等其他數據庫,此處數據庫只是用來最后測試用
三、kettle分布式集群搭建步驟
1、下載kettle安裝包
各個版本下載地址:https://sourceforge.net/projects/pentaho/files/
可以下載到本機,然后將壓縮包上傳到服務器,也可以直接在服務器上直接用wget下載
2、上傳
如果下載到本機的話就需要上傳到各個服務器,如果是在服務器上使用wget命令下載的話,每個節點都需要下載,同時本機(用來測試)也保留一份
3、解壓
# 各個節點都要操作,此處以主節點為例
[root@master home]# unzip pdi-ce-9.0.0.0-423.zip
4、修改配置文件
需要修改的配置文件及所在目錄
說明: 并不是所有的配置文件都要修改,其中,
carte-config-master-8080.xml是主節點需要修改的配置文件
carte-config-808X.xml是從節點需要修改的配置文件,需要多少個從節點就修改多少個,本例使用了兩個從節點,因此修改其中兩個即可
master節點上
修改carte-config-master-8080.xml
參數說明:
name是節點名稱
hostname是本機IP或主機名
port是監聽端口
master:Y為本節點是主節點,N為本節點為從節點
username:集群界面登錄用戶名
password:集群界面登錄密碼
slave1節點
修改carte-config-8081.xml
其中,<master>標簽中的信息是跟master節點中配置的主節點配置文件(master節點上的carte-config-master-8080.xml文件)是一致的,下面的<slaveserver>標簽中的配置為從節點的配置,各個參數意義跟master的是一樣的
slave2節點
修改 carte-config-8082.xml
修改方式與修改slave1的方式一致
下載mysql驅動包
下載mysql驅動包并放到data-integration/lib 目錄下(因為后面需要用mysql測試,如果使用其他數據庫的話那就下載對應數據庫的驅動包),每個節點都需要
啟動master
[root@master data-integration]# nohup ./carte.sh 192.168.111.241 8080 &
啟動slave1
[root@slave1 data-integration]# nohup ./carte.sh 192.168.111.242 8081 &
啟動slave1
[root@slave2 data-integration]# nohup ./carte.sh 192.168.111.243 8082 &
四、集群測試
1、在本機中將下載的kettle解壓,并雙擊spoon.bat進入kettle圖形界面
2、在spoon中新建一個轉換
然后在新建的轉換中選擇主對象樹-子服務器-新建子服務器
主節點
從節點
其中,填寫的信息要跟剛剛在服務器上配置的XML文件要一致,master子服務器填寫master中配置文件的信息,slave則填寫相應slave信息的
2、配置schema
選擇主對象樹-集群schema-新建schema
將剛剛配置的子服務器都添加進入
3、測試
1、準備一張有數據的表
2、剛剛創建的轉換中簡單弄一個轉換過程
3、右鍵排序記錄,點擊集群,然后選擇集群名稱
執行轉換,并選擇以集群方式執行,并在各個服務器查看日志
查看各個節點的日志:
master
slave1
slave2
網頁端: