调研Kettle远程执行及集群执行功能

目录

toc

摘要

目前的UDI转换任务都是采用的本地运行模式,想了解一下远程服务器运行和集群运行模式。

调研Kettle的集群及远程执行功能

(1) 如何配置远程服务器

(2) 如何搭建kettle集群

(3) 远程执行,集群执行与本地执行有什么区别

参考链接https://blog.csdn.net/demonson/article/details/90268034

Kettle安装

软件

链接:https://pan.baidu.com/s/1SaVAaLNmRFDEUbWQVyHmJw
提取码:0hke

Windows

1) 安装jdk

2) 下载kettle压缩包,因kettle为绿色软件,解压缩到任意本地路径即可

3) 双击Spoon.bat,启动图形化界面工具,就可以直接使用了

Linux

环境

centos6

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

image-20200701104225850

安装步骤

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

image-20200701104016250

image-20200701103933493

unzip pdi-ce-9.0.0.0-423.zip -d ../module/kettle/

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

image-20200701105056766

3)执行kitchen.sh脚本,出现以下界面说明kettle可以正常使用

image-20200701105635503

同时home目录下应该有个.kettle目录,使用ll -a查看,默认.xx文件是隐藏的

image-20200701121333804

Kettle转换与作业执行

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

image-20200701120529526

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

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

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

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

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

将从windows上配置好的.ktr和.kjb程序分别放在transition目录和job目录下(或linux下编写后直接保存到该目录下)

使用pan执行transformation

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

image-20200701124611578

./pan.sh -file=/home/atguigu/srv/kettle/transformations/kettle_test.ktr -level=Detailed > /home/atguigu/var/kettle/logs/kettle_test.log

日志内容:

image-20200701124638284

使用kitchen执行job

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

image-20200701203251402

[atguigu@hadoop101 data-integration]$ ./kitchen.sh -file=/home/atguigu/srv/kettle/jobs/job_test.kjb -level=Detailed > /home/atguigu/var/kettle/logs/job_test.log

Kettle通过Carte远程调度

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

1)修改xml配置文件

image-20200701203622731

image-20200701210055651

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

2)启动Carte

image-20200701205253219

nohup ./carte.sh pwd/carte-config-master-8080.xml

最终出现下图即成功开始Carte服务

image-20200701204950354

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

image-20200701210211194

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

3)配置子服务器

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

image-20200701213812298

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

image-20200701213848436

5)提交任务

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

image-20200701213942060

然后在PDI Status界面就能看到执行的任务。点击进行可以看到详细的任务详情。

image-20200701214017060

Kettle集群

原理

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

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

在Kettle中合理的使用集群可以加快执行的速度,并且还能在部分服务器宕机的情况下继续使用,但一旦主服务器宕机,则Kettle集群就不能使用了。

Carte集群搭建

基本上集群部署就是将Kettle安装到多个服务器上,分别在不同的服务器执行主从服务器

集群Master:192.168.109.101

集群Slave1:192.168.109.102

集群Slave2:192.168.109.103

需要在centos6上安装好jdk,配置好环境变量,并且把kettle安装好。

注意:在集群运行环境中,需要端口打开或者直接关闭防火墙,供主服务器及子服务器互相连通通讯

注意:再次声明,配置文件中的username和password并不是指主机的登陆账号和密码,是集群的账号密码,该账号密码是集群连接的依据,账号密码是通过混淆的方式保存在pwd文件,kettle默认的账号密码是cluster/cluster,修改该账号密码需要修改pwd文件。

Linux端部署与启动

1)首先是将Kettle程序拷贝到主从服务器上,并配好环境

2)修改主从服务器配置文件

进入到PDI的pwd目录下,如下所示。

image-20200702105530062

对于从服务器配置也没有什么特别的地方,我们需要先配置主服务器。

image-20200702105556623

image-20200702121828584

配置从服务器,需要指定主服务器

从服务器1

image-20200702131016842

从服务器2

image-20200702131117905

注意:该环境将master、slave1、slave2的pwd的三个配置文件都修改了,并且都修改的一样。理论上是master修改carte-config-master-8080.xml、slave1修改carte-config-8081.xml、slave2修改carte-config-8082.xml即可。如果不修改出现了cannotconnet的报错,请三台linux系统中的pwd配置文件都进行修改。

3)集群启动。

在主服务器中,进入到data-integration目录下,输入./carte.sh pwd/carte-config-master-8080.xml,启动master节点。

./carte.sh pwd/carte-config-master-8080.xml

image-20200702112541369

启动成功提示如下:

image-20200702124747031

访问测试

image-20200702124821828

然后同样操作,在子服务器进入到data-integration目录下,启动9091端口的子服务器。重复动作,启动9092端口的子服务器。

image-20200702132407580

image-20200702135302064

windows端连接与运行

1)在windows本机新建子服务器及集群。

在主对象树中新建子服务器,配置分别如下图,

image-20200702155508746

主服务器

image-20200702190303736

从服务器1

image-20200702190333880

从服务器2

image-20200702190346784

在主对象树中,在“kettle集群schmas”中右键,新建,点击“选择子服务器”,添加刚才新建的子服务器,然后确定。

image-20200702192354609

转换页 -> 主对象树 ->Run Configurations ->右键新建 -> 新建运行环境。注意选择Clustered。如下:

image-20200702192453062

2)集群执行

集群远程执行开发。在kettle开发中,通常是需要远程调用测试环境的kettle集群来进行开发测试的。现在,集群环境在linux环境,采用远程执行的方式进行运行设计好的带有集群的kettle代码。

选择需要集群运行的组件,右键->集群->选择我们创建的集群

image-20200702192811797

运行,选择我们配置到的集群运行环境

image-20200702195304952

运行成功,在web监控页面查看运行结果

主服务器web页面

image-20200702193217527

子服务器1web页面

image-20200702193028636

子服务器2web页面

image-20200702193144908

评价3种运行方式

远程执行,集群执行与本地执行

远程执行与本地执行

本地执行部署简单,网络要求低,但是这种方式不利于监控、调度和资源分配。

与之相对,远程执行具备以上优点。

集群执行

优点

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

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

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

缺点

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

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

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

适用场景

适合于:

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

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

参考文献

Kettle — 安装和部署

Kettle — 集群使用

Kettle集群介绍及(windows、linux)环境搭建

Kettle之旅-carte集群搭建以及远程执行转换和作业

原文地址:https://www.cnblogs.com/yyjjtt/p/13226989.html