首页 > 代码库 > Kettle(Pentaho)实现web方式远程执行job或transformation

Kettle(Pentaho)实现web方式远程执行job或transformation

一、背景

     公司在用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,是不是很方便?

 

Kettle(Pentaho)实现web方式远程执行job或transformation