kettle集群搭建

一、         Kettle集群概述

1)  Kettle集群简介

    集群技术可以用来水平扩展转换,使得他们能够同时运行在多台服务器上。它将转换的工作量均分到不同的服务器上。这一部分,我们将介绍怎样配置和执行一个转换,让其运行在多台机器上。

一个集群schema由一台主服务器,和一些子服务器组成,主服务器作为一个集群的控制器。简单的说,我们提到的Carte控制服务器就是主服务器,其他的Carte服务器就是子服务器。

2)  Kettle集群优劣势

集群的优点

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

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

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

集群的缺点

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

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

         3)需要更多的服务器,而且主节点没有处理能力(在该步骤没有处理能力,在其他的没有使用集群功能的步骤仍具有处理能力)。

适用场景

         适合于:

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

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

二、         Kettle集群部署方案

1)  Window本机部署三节点集群

Window本机部署只适用于本地开发环境。它作为一个伪集群方式进行部署,采用的一个kettle安装文件且用不同的端口进行集群部署。首先采用的环境是Win10,kettle版本采用的5.4.0,jdk采用的1.8.0_91。(当然,首先需要配置java环境变量,保证kettle正常启动)

1.首先确认本机是否有tomcat运行,因为kettle集群的master默认采用8080端口,这和tomcat的默认端口是冲突的,当然可以进行端口修改,自定义使用端口。

2.打开kettle的安装目录,进入到data-integration->pwd目录,找到carte-config-master-8080.xml文件。

   3.打开carte-config-master-8080.xml文件,如下图。该文件主要是进行master主机配置。

注意:在本机部署的集群环境中,建议hostname填localhost,因为开发者很多会在本机安装虚拟机,虚拟机NAT网络连接会修改本地的ip地址,如果是熟练使用wmware等虚拟机软件的开发者,请忽略。

4.carte-config-8081.xml文件是子服务器的配置文件。打开该文件,如下图。其中masters中,name、hostname、port需要和carte-config-master-8080.xml中完全一致。然后,同样修改carte-config-8082.xml文件。

注意:username和password并不是指主机的登陆账号和密码,是集群的账号密码,该账号密码是集群连接的依据,账号密码是通过混淆的方式保存在pwd文件,kettle默认的账号密码是cluster/cluster,所以,在本机开发的时候,为了方便,账号密码都不用修改,都使用cluster即可。

5.集群启动。在开始菜单中启动命令提示符(管理员),进入到data-integration目录下,输入carte.bat pwdcarte-config-master-8080.xml,启动master节点。

注意:启动时,出现attemping to load ESAPI.properties等提示为kettle出现的bug,暂时未发现解决方法。

然后,再打开一个命令提示符的窗口,进入到data-integration目录下,执行命令carte.batpwdcarte-config-8081.xml,则启动8081端口的子服务器。重复动作,启动8082端口的子服务器。

   在启动了三台集群服务器之后,在浏览器中输入localhost:8080,进入到页面如下:

输入cluster/cluster,进入到页面如下:

表示主节点已经启动完毕。输入localhost:8081及localhost:8082查看子服务器状态。

到此,windows本机三节点集群部署完毕。

2)  windows调用linux环境集群组

由于大多数kettle集群开发采用windows本地开发,然后集群环境在linux上。因此,则需要在此环境进行开发,测试及部署。

此文档的开发环境是:Centos7、kettle5.4.0、jdk1.9.0、本机为win10。

网络连接为:

本机:Vmnet8设置192.168.10.100

集群Master:192.168.10.101

集群Slave1:192.168.10.102

集群Slave2:192.168.10.103

需要在centos7上安装好jdk,配置好环境变量,并且把kettle安装好。(kettle不需要启动spoon来启动图形界面,利用kitchen调试好即可,linux上安装kettle网上有很多教程,自行查阅即可)

注意:在集群运行环境中,需要端口打开或者直接关闭防火墙,供主服务器及子服务器互相连通通讯,在centos7中,放火墙采用firewalld的方式,和以前的iptable不一样,检查端口是否开通,可以通过本机进行telnet测试。Centos7防火墙配置见笔记。

首先,像windows开发环境一样,配置pwd中的carte-config-master-8080.xml、carte-config-8081.xml和carte-config-8082.xml文件,配置文件见下图:

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

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

启动master。在master的虚拟机(192.168.10.101)中,进入到data-integration目录下,运行./carte.sh192.168.10.101 8080。启动服务,启动192.168.10.101为carte-config-master-8080.xml设置的ip,8080为carte-config-master-8080.xml设置端口。

注意:启动时,出现attemping to load ESAPI.properties等提示为kettle出现的bug,暂时未发现解决方法。

   启动之后,在浏览器输入192.168.10.101:8080,出现如下图:

输入cluster/cluster,登陆进入。

表示master启动成功。

   启动slave1,在salve1(192.168.10.102)中,进入到data-integration目录下,运行./carte.sh192.168.10.102 8081。

启动之后,在浏览器输入192.168.10.102:8081,输入cluster/cluster出现如下图:

 表示slave1启动成功。

启动slave2,在salve2(192.168.10.103)中,进入到data-integration目录下,运行./carte.sh192.168.10.103 8082。

启动之后,在浏览器输入192.168.10.102:8081,输入cluster/cluster出现如下图:

表示slave2启动成功。

在windows本机新建子服务器及集群。在主对象树中新建子服务器,配置分别如下图,

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

到此,集群搭建完毕。

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

点击运行,选择远程执行,选择远程主机为master,然后启动。

出现如下界面:

刷新下192.168.10.101:8080、192.168.10.102:8081和192.168.10.103:8083页面,出现如下页面

如上图所见,排序记录被salve1和salve2分开执行了,表示,集群运行无误。

三、         Kettle集群开发

kettle集群开发的方式,是通过job及trans开发过程中使用集群的方式。子服务器中新建三个子服务器。

1)  trans集群开发

在主对象树子服务器中右键,新建,填写服务器连接信息

注意:该部分配置信息需要和carte-config-m、aster,-8080.xml配置信息一致,由于是主服务器,需要勾选最后一栏。

然后填写两个子服务器信息,需要和carte-config-master-8081.xml和carte-config-master-8082.xml中的信息一致。

在主对象树中的kettle集群Schemas,右键,新建,选择子服务器,将刚刚配置好的三台子服务器添加到Schemas中。

然后点击确定,这样trans中的集群配置就完成了。

  然后为了测试,做了一个trans进行集群测试,如下图。在排序的时候右键,选择集群,选择配置好的集群,该步骤右上方会有一个Cx2标识,表示有两台子服务器的集群。

点击“执行”,选择“提交转换”、“准备执行”、“开始执行”,“显示转换”如果选择则会在spoon中显示相应的运行日志。

    在trans执行过程中,刷新打开的localhost:8080/kettle/status和localhost:8081/kettle/status和localhost:8082/kettle/status,会发现我们刚才做的trans正在执行。

执行的日志同样也可以在命令提示符中可以查看。

2)  job集群开发

  job的集群开发,并不是和trans一样,job的集群开主要是将trans分配到不同的子服务器中执行。

   首先配置子服务器的方法和trans一样,如下图:

   在转换的步骤,高级选项,选择远程从服务器,选择要执行的服务器,确定,即可。

   注:如果trans是需要在在集群的环境下执行,则需要勾选上面的“在集群模式下运行这个转换”。

四、         Kettle集群笔记

1)  Centos7防火墙开端口

Centos7放火墙功能由iptables替换为firewalld。在firewalld的各种服务里,是以区域为定义进行设定的,设定的区域和网络接口关联起来生效。

防火墙的开启/关闭

#systemctl start firewalld

#systemctl enable firewalld

停止Firewalld,及关闭开机自启。

# systemctl stop firewalld

# systemctl disable firewalld

 

打开端口

firewall-cmd –zone=public –add-port=80/tcp –permanent(-permanent是永久开放端口,没有该配置在重启后开启端口失效。)

 

查看打开端口

firewall-cmd --list-all

 

打开端口之后建议重启放火墙

 

2)  Cater安全-账号密码设置

  在上面提到pwd文件夹中的master等配置文件中的username和password默认是cluster/cluster,如果需要修改密码,则需要到pwd文件夹中的kettle.pwd文件修改参数。

   如图:在pwd文件中,第一未注释的行是cluster的账号密码。其中加了OBF的意思是字符串是被混淆了的(但是并不等同于加密)。

   如果要新建一个账号密码。则只需要在下面另起一行以username:password的形式添加即可,如图。

   如果需要进行混淆,可以利用kettle自带的encr工具来进行混淆。

kettle 连接mysql出错 Driver class 'org.git.mm.mysql.Driver' could not be found, make sure the ........

解决方法: 下载mysql-connector-java.jar 放置到data-integrationlib目录下

原文地址:https://www.cnblogs.com/liuruilongdn/p/13809657.html