一、背景 公司在用kettle做數據etl,每做完一個job或transformation發佈上線想要立即執行看數據效果的話每次都是找運維同學登陸伺服器打開kettle找到對應的文件點擊執行,整個過程效率低下,不僅占用運維時間,期間自己也在白白等待,浪費生命。 google “kettle remo ...
一、背景
公司在用kettle做數據etl,每做完一個job或transformation發佈上線想要立即執行看數據效果的話每次都是找運維同學登陸伺服器打開kettle找到對應的文件點擊執行,整個過程效率低下,不僅占用運維時間,期間自己也在白白等待,浪費生命。
google “kettle remotely execute” 得知,這個是有解決方案的,其實kettle 本身就自帶了此解決方案,只是一直忙於工作無(lan)暇(de)研究。大致就是利用kettle自帶的Carte 開啟一個web伺服器,再加上job 或transformation做一點配置即可實現登錄web來觸發執行某一任務。
二、準備工作
此博客基於windows伺服器
1.下載Java JDK,版本1.5以上,如果之前已經安裝且版本混亂之類,直接先卸載再重新下載一個安裝
2.下載kettle。kettle綠色無需安裝,下載完之後解壓到指定的文件夾即可,同時請配置系統環境變數(PENTAHO_JAVA_HOME),value指定到安裝的jdk對應的jre的目錄(如下圖),並找到Spoon.bat點擊打開kettle。
請註意,是指定到jre的目錄,不要搞錯
三、開啟伺服器
基於第二步準備工作之後,請確保能正確打開kettle 軟體。如果有問題無法正常打開,google解決方案。
我們先看到kettle的根目錄,5.0之後的kettle 在根目錄下會有Carte.bat(.sh是linux系統下使用的),我們要使用的就是它
window下 打開cmd,cd切換到kettle的根目錄:
然後執行命令行,開啟一個web伺服器。
carte.bat 127.0.0.1 8081
等待十幾秒,如出現下圖提示即表示伺服器開啟成功
這一步成功的前提是 PENTAHO_JAVA_HOME環境變數配置正確,不然會提示java.exe找不到錯誤。
成功之後我們就可以瀏覽器打開 http:127.0.0.1:8081 看效果了,會給一個彈出框要求你輸入賬號密碼驗證:
這個賬號密碼是什麼呢?別急,我們回到kettle的根目錄下,找到pwd文件夾,雙擊進入,發現如下幾個文件:
咱們的賬號密碼就配置在裡面,打開-8081的xml文件:
<?xml version="1.0"?> -<slave_config> <!-- Document description... - masters: You can list the slave servers to which this slave has to report back to. If this is a master, we will contact the other masters to get a list of all the slaves in the cluster. - report_to_masters : send a message to the defined masters to let them know we exist (Y/N) - slaveserver : specify the slave server details of this carte instance. IMPORTANT : the username and password specified here are used by the master instances to connect to this slave. --> -<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>
咱們開啟的是一個slave伺服器,所以看slaveserver裡面配置的username 和password,對,預設的都是cluster,這裡的配置值就是你登錄的賬號密碼。現在可以登錄配置的carte伺服器了。
進來後發現並沒有任何東西,這是正常現象,因為我們還需要配置一下kettle的 job 和transformation,到這一步整個web伺服器的工作就算完成了。接下來就是kettle文件的配置了。
四、Kettle配置
1.打開kettle,並任意打開一個job 活著transformation ,在左部菜單選擇view,菜單選項裡面有個Slave Server,這裡我們需要配置一下。
咱們new一個 slaveserver ,響應的值:
這裡請註意,ip 和 port 必須和我們之前開啟的web 伺服器一致,點擊ok保存之後,記得share一下記住下來。
2.配置 job 或 transformation 的run options
打開任意一個job或transformation,配run options ,如下圖:
繼續配置:
會產生一個新的tab,這裡我們的配置就完成了。
再打開 http://127.0.0.1:8081看看,在job 列表裡面已經出現了剛剛我們配置的job
我們就可以點進去,在web 裡面控制這個job,是不是很方便?