Kettle — 安装和集群搭建

1 篇文章 0 订阅

前提

Kettle是纯Java编写的ETL开源工具,目前Kettle7和Kettle8都需要Java8或者以上才能正常运行。所以开运行Kettle前先检查Java环境是否正确配置,Java版本是否是8或者以上。

 

Kettle安装

1)创建Kettle的目录,并将Kettle的zip包解压到Kettle目录下

 

 

2)查看一下sh文件使用都有执行的权限,如果没请加上。

 

4)执行kitchen.sh脚本

3)如果出现以下的错误,这是因为sh文件有可能是在Windows下编写的并打包到Zip包中的,编码格式不一样linux是utf-8,windows是gbk的。我这里提供两种解决方案。

 

 

         1.单个文件修改

         利用Vim进行修改,可以使用:set ff查看文件格式;可以使用:set ff=unix修改文件格式。

 

         2.批量执行

         运行下面的脚本命令即可。创建一个sh文件,将下面的shell代码复制到该文件执行即可。注意路径修改一下。

for file in `ls /opt/kettle/data-integration/*.sh` do                                                                               echo ${file}          vim +':w ++ff=unix' +':q' ${file} done

4)执行后如果出现下面的WARNING,根据提示安装即可,不然可能会导致部分特性无法使用(主要是Spoon的使用,如果是无界面环境,可以忽略)。

 

5)安装好以后,WARNING就没有了。出现以下的提示界面说明Kettle可以正常使用了。

 

同时home目录下应该会有一个.kettle的目录

 

Kettle转换与作业执行

在Kettle中pan和kitchen两个工具分别用来执行transformation(转换)和job(作业),如下所示:

 

对于文件存储,不是数据库资源库,可以如下的方式存放文件:

所有的transformation文件存放在/srv/kettle/transformations/

所有的job文件存放在/srv/kettle/jobs/

所有的日志文件存放在/var/kettle/logs/

使用pan执行transformation

pan语法:./pan.sh -option=value arg1 arg2

 

具体使用参考:https://www.cnblogs.com/xiaopan-cp9/p/7608203.html(非常仔细的介绍)

使用kitchen执行job

kitchen语法:./kitchen.sh -option=value arg1 arg2

 

常用参数列表:


            命令
            
            
            描述
            
        
            -rep
            
            
            选择一个资源库的名字
            
        
            -user
            
            
            资源库用户名
            
        
            -pass
            
            
            资源库密码
            
        
            -file
            
            
            job文件路径
            
        
            -job
            
            
            资源库中的job名称
            
        
            -dir
            
            
            指定资源库目录
            
        
            -norep
            
            
            标明不是资源库里的文件
            
        
            -level
            
            
            日志级别(Basic, Detailed, Debug, Rowlevel, Error, Nothing)
            
        
            -logfile
            
            
            日志输出到指定的文件
            
        
            -listdir
            
            
            在使用 -dir 时,打印出资源库目录下所有子目录
            
        
            -listjob
            
            
            列出资源库中的所有jobs
            
        
            -listrep
            
            
            列出当前所有已经定义的资源库
            
        
            -export
            
            
            导出所有的job到一个zip包中
            
        
            -version
            
            
            显示版本
            
        
            -listparam
            
            
            列出所有的参数
            
        
            -param
            
            
            参数设置,例如-param:FOO=bar
            
        
            -level
            
            
            log级别 (Basic, Detailed, Debug, Rowlevel, Error, Nothing)
            
        Kettle服务器端部署

通过Start组件定时执行任务

在Kettle中我们可以通过Start组件来设置定时任务,如下所示,这种方式不推荐使用,因为该Job会一直占有一个进程,容易内存溢出。

 

通过crontab执行Kettle任务

在Linux中crontab是用来提交和管理用户周期性执行的任务。

例如(文件存放位置):

所有的transformation文件存放在/srv/kettle/transformations/

所有的job文件存放在/srv/kettle/jobs/

所有的日志文件存放在/var/kettle/logs/

所有的执行脚本存放在/srv/kettle/script/

1)首先我们创建一个脚本。因为是crontab执行任务,我们需要重新导入Java配置。

 

2)在终端上,键入“crontab-e”,进入定时任务文件,添加任务。

 

3)重启cron 并查看任务

 

Kettle通过Carte远程调度

Kettle的部署有很多种模式,上面讲的是最原生的模式(Pan/Kitchen)。但是这种方式不利于监控、调度和资源分配。Kettle本身提供了一个用于调度的Web服务Carte。Carte允许远程请求HTTP进行监控、启动、停止在Carte服务上运行的job和trans。要部署使用Carte的大致过程如下所示:

1)修改xml配置文件

 

 

在kettle.pwd的描述中可以知道默认的用户名密码都是cluster(不放心的话可以通过<username>和<password>节点设置用户名密码),如果要修改密码可以在配置文件中配置。

2)启动Carte

启动时将刚刚的配置文件加上。

 

启动完成后就可以访问Carte了,界面非常的简陋。

 

PDI Status应该可以理解,下面的Configuration details上面三条代表日志最大长度、日志存活时间和指定转换或者作业产生的对象的存活时间,这三个属性都是为了防止Out Of Memory。在上面的配置文件中的配置如下所示:

 

最后一个参数是资源库名称。

3)配置子服务器

上面是成功的将Carte服务打开,下面就需要将Spoon连接到Carte。在左侧的树中我们需要增加一个子服务器。如下所示:

 

4)创建一个新的运行配置,setting选择Slave Server。

 

5)提交任务

运行时选择刚刚配置的Carte执行。这样我们执行文件就会上传到Carte服务器指定的目录然后执行。

 

*****************************************KETTLE集群搭建********************************

说明:

本文档基于kettle5.4

 

一、集群的原理与优缺点

1.1集群的原理

         Kettle集群是由一个主carte服务器和多个从carte服务器组成的,类似于master-slave结构,不同的是’master’处理具体任务,只负责任务的分发和收集运行结果。

Master carte结点收到请求后,把任务分成多个部分交给slave carte执行,slave执行完毕后把结果交给mater 进行汇总,再由mster返回结果。

1.2集群的优点

         和其它系统的集群一样,有以下优点:

         1)多服务器运行,加快处理速度,对于大数据量的操作更明显

         2)防单点失败,一台服务器故障后其它服务器还可以运行

1.3集群的缺点

         1)采用主从结构,不具备自动切换主从的功能。所以一旦主节点宕机,整个系统不可用

         2)对网络要求高,节点之间需要不断的传输数据

         3)需要更多的服务器,而且主节点没有处理能力

1.4 适用场景

         适合于:

         1)需求kettle能时刻保持正常运行的场景

         2)大批量处理数据的场景

二、集群搭建

2.1 配置子服务器

2.1.1 配置主服务器

打开ketlle目录,找到pwd目录,里面有4个XML文件,分别是子服务器的配置文件和密码文件:

Carte-config-master-8080.xml是主服务器的配置文件。编辑该文件,根据情况修改其中的name\hostname\port\master等属性。Name是服务器的名称,hostname是主机名或者IP,port是端口号,Master表明是否是主服务器。此外,加上两行:

<username>cluster</username>

<password>cluster</password>

在<master>Y<mater>之下

         接着启动主服务器,在kettle目录中打开cmd窗口,执行carte localhost 8080:

         至此,主服务器配置完成。

 

2.1.2 配置从服务器

         剩下的三个为从服务器的配置文件。以carte-config-8081.xml为例。打开该文件:

发现该文件有<master>和<slaveserver>两层标签,<master>标签表示该服务器要连接的主服务器的信息,保持与carte-config-master.xml一致。<slaveserver>标签是从服务器的信息,按照需要更改即可。

         然后启动slave1-8081从服务器:

         按照同样的方法,配置slave2-8082\slave3-8083并启动。(本实验只配置一主两从)

2.2 建立集群

2.2.1 在spoon中创建子服务器。

         打开spoon.bat,新建一个转换。选择主对象树-子服务器,右键新键子服务器:

把xml中的信息复制过来,保证与xml中的信息一模一样。按照这种文件配置master slave1-8081 slave2-8082。

2.2.2 建立集群

         在主对象树中选择kettle集群schemas,填写schema名称,端口、sokects缓存大小、sockets刷新时间间隔、socketts数据是否压缩。在右边点击选择子服务器,选择需要的子服务器。

Schema名称即集群的名称。

端口即集群对外服务的端口.

sockets缓存大小:sockets缓存

Sockets刷新时间间隔:达到多少行记录时刷新到子服务器。

Sockets数据是否压缩:如果网络状况差,则建议选择。网络良好时不用选择。

 

2.3 执行转换

         配置完集群后,选择转换中的执步骤”排序记录“,右键该步骤,选择”集群”,选择刚才配置的集群。

         选择然后会发现排序纪录多出”CX2”,表示有2个子服务器来执行。在一个三个子服务器的集群中,主服务器负责任务分发、结果收集,转换任务由从服务器执行,故只有两个节点执行。

         执行该转换:

         在命令台中,主服务器:

         从服务器1:

         从服务器2:

可以看到各个子服务器的执行情况。

         至此,集群搭建成功。

 

                                

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值