kettle任务的远程执行

kettle任务的远程执行

突然发现博客中还没有一篇关于kettle这个工具的文章,自己使用这个工具还是蛮久了,在数据处理方面的确是没有发现出其二的产品。

之前我有篇博客是介绍jaspersoft的,其中提到了pentaho的开源BI解决方案,这个kettle其实就是pentaho下的一个子工具,虽然自己被pentaho坑了一道,不过发现kettle这个工具也还是不错了。

刚说到数据处理,看下kettle在百科上的介绍:

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出

在2012年的时候,自己就使用它来进行系统切换间的数据转移工作,在内网环境下,一秒5000行的效率,的确让我吃了一惊,妈妈在也不用担心系统数据迁移不完了,不管是Mysq到Mysql还是Oracle到Mysql,统统没有问题。

最关键的是,它不只可以处理数据库的迁移,它的输入输出模式决定了只要能装数据的地方,都能和kettle对接,不管你是用的表还是树还是图,它都能搞定。

这货让业务人员培训一下都能用···

之前使用的方式都是本地写了本地运行,遇到一些大批量数据迁移,就找台win服务器,远程来做,虽然它提供了远程模式、集群模式一直没去研究···

好了····现在切入正题,kettle的远程运行怎么做?

1.使用远程资源库,把它的转换、任务都放入到数据库中,这个代价就是远程更新、读取比较慢,特别是在本地编辑保存的时候。

2.在服务器上部署一个kettle,不难,它是绿色的··

3.把本地的资源库信息拷贝到服务器上,路径是对应的用户目录~/.kettle/repositories.xml,这里其实就是对应的资源库配置,包括用户和密码,密码已经被加密了。

对于如何在远程服务器命令行下直接创建资源库信息,本人愚钝一直没搞明白,只有用这种比较怂的拷贝方式。

4.远程服务器,通过carte.sh[空格]ip[空格]port的方式开启接口服务

5.本地添加子服务器,默认用户名和密码为:cluster/cluster。

6.本地运行任务,选择远程方式,选择远程机器,开始后,在远程服务器上会有日志打印、本地会开启一个监控标签页。

方式就是上面描述的这些步骤,当然做为了一个开源社区的项目,步步挖坑制造乐趣也是免不了的,比如跑着跑着就内存溢出了,

这时候我们需要在spoon.sh中去调整对应的JVM参数。

但我发现这个JVM参数调大后,效果有改进,但还是免不了死的结局,目前我使用的方式是直接在远程通过命令行运行任务。

其实就目录下的Pan.sh和Kitchen.sh,对应就是转换和任务,运行方式还是比较简单:

1.服务器上的资源库还是要有的,参考上面的步骤。

2.运行转换:

./pan.sh -rep repId -user user -pass password -dir /hidehai/test2 -trans simple

— 运行/hidehai/test2目录下名为simple的转换.

如果是Job,则通过Kitchen来做,参数有差异。

这种方式自己测试一了下是比较稳定的,几百行的处理没发现问题,直接远程执行的方式几十万就会报异常。

 

Kettle社区版:目前版本5.0.2

http://community.pentaho.com/projects/data-integration/

留下回复