Armin
迷茫的话 TRY AGAIN 多少次都能重新再来

本片文章主要是关于使用Kettle的UI界面:

Spoon来实现基于集群的对数据库中的数据表数据进行排序的试验。

以及在实验过程中所要开启的Carte服务的一些配置文件的设置,

还有基于Windows cmd 的相关Carte命令。

文章主要分为六个部分

1.介绍carte     

2.carte相关配置文件的设定

3.carte服务的开启命令

4.在kettle的图形界面中对集群进行相关的设定   

5.使用kettle集群模式对相关的数据进行排序

6.有关于集群调用子服务器的java源代码调用实现

1.介绍carte

carte是由kettle所提供的web server的程序,
carte也被叫做子服务器(slave) 在kettle调用集群(cluster)来进行分布式分发、处理任务的时候,

可以开启多个carte服务进程 来进行分发ETL(master)任务和接收,运行,提交ETL任务(slave)。

就像是《pentaho kettle solutions》中对Carte的定义:

"Carte a lightweight server process allows for remote monitoring and enables the transformation clustering capabilities ".

"Carte是一个轻量级的服务器进程,可以远程监控和开启转换集群的能力".

 

2.carte相关配置文件的设定

与hadoop的结点设置类似,本实验将要实现的是基于一台主机,

开启四个carte服务,其中一台为Master另外三台为Slave,

来实现在Kettle的Spoon中对数据库中数据表读取后 以集群的方式来执行排序的过程。

开启的carte服务所显示的命令窗口都是一样的,但是究竟哪一个是主服务哪些又是子服务呢?

对于集群中的主服务器还是子服务器的设定,

我们仍旧引用《pentaho kettle solutions》书中的一段话进行说明(因为很权威的):

"A cluster schema consists of one master server that is being used as a controller

for the cluster , and a number of non-master slave servers.  In short, we refer to

the controlling Carte server as the master and the other Carte servers as slaves"

LZ在不考虑到句式主 谓 宾 定  状 补的条件下,对上述介绍的理解是这样的。

"一个集群实体是由 一个 用来主控整个集群的主节点

和多个 不是主节点

(也就是主节点除外,即配置文件中 属性<master>N</master>对应的值置为N的对应结点)

的子服务器所构成的。

简而言之,我们把开启的主控Carte 服务器 叫做 主节点 而其他的Carte 服务器叫做 从结点"。

 

关于Carte的服务器是主还是从是由相关的配置文件:carte-config.xml中的

属性<master></master>中是"Y"还是"N" 所设定的,

其实这个和hadoop通过相关的XML配置文件来设定是主节点还是从节点是很神似的。

配置文件吧,其实根据计算机不同,以及计算机中的环境变量的不同而千差万别。

主要说一下LZ关于配置文件的设定过程吧,

若想让Carte程序可以成功运行的话,首先就应该设定它的配置文件,

配置文件所在的路径,如下图所示:

(carte-config.xml 截图)

在这里LZ在正常进行配置的时候cmd窗口报错,说是在kokia/Acer/user/acer/

的下面找不到pwd文件夹(kokia是LZ的计算机名称)

所以LZ根据提示将kettle安装解压路径下的pwd文件夹复制了一份到提示信息的路径下,

才使得Carte正常运行,不过要让LZ说是什么原理嘛,其实LZ也不知道的,

或许默认Carte服务启动的时候会到该路径下自行寻找相关的配置文件吧......

pwd这个文件夹下面默认存放的是关于Carte的一些配置文件以及登陆用户名以及密码等等,

它所在的kettle安装包的路径就是./data-integration/pwd 这个下面的。

 

下面是关于主服务器(master:carte-config-master-8080.xml)配置文件进行相关注释说明:

<slave_config>

<slaveserver>
<name>master1</name>
<hostname>localhost</hostname>
<port>8080</port>
<master>Y</master>
</slaveserver>


</slave_config>

<!--
even though called master node  ,

it is a instance of the  slaveserver

<name> attribute is used to define the name of the slaveserver
<hostname> in this conf file is the localhost which equal
to the "127.0.0.1" IP address

当然,对于这个hostname的话,在Linux的环境中,

在对应的配置文件中 有相关的IP地址与主机名称相对应的,

在Windows下面,LZ并不知道相关的配置文件在哪里,

所以如果是集群的节点所在的并不是基于一台主机的话,
<hostname>这个属性的值可以使用该节点所在的主机IP地址所代替。 <port> 8080 , in carte the port of 8080 is regarded as the port of the master node in default <master> : Y which talked about above , attribute value = Y means that the current slaveserver is regarded as the master node in the cluster.
-->

下面是关于子服务器(slave)的配置文件进行相关注释说明:

<slave_config>

<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>

从节点的配置文件照比主节点的配置文件要稍微多一些内容的,

首先,多的是<masters>这个属性,其中包含的是关于一个<slaveserver>实体的设定,

其实也就是相应的在其中引入了主节点的相关设定的属性值。

 

然后有一个属性是<report_to_masters>这个属性是用来设定:

slave1-8081这个节点已经是主节点的子节点了,但是是否向主节点提交信息还是不知道的,

所以要通过这个属性对其进行相关的设定。

接下来就是对从节点进行相关的设定,关于IP地址,端口号,节点名称,登录用户名以及密码,

又因为该节点是子节点,所以<master>这个属性值对应的是"N".

 

需要注意的是,如果是在开启carte或是Spoon的时候进行相关的配置文件 进行设定的话呢,

需要退出程序之后再次进入才能是相关的配置文件生效。

  

3.carte服务的开启命令

Carte 有着针对不同系统可以正常运行的不同脚本文件,

对于Windows有着:Carte.bat

 对于Linux有着:carte.sh

本文主要讨论的是基于Windows的运行。

首先,打开cmd控制台窗口:

然后(LZ的cmd 运行有一些问题,因为LZ的计算机是64bit的,

所以需要右键单击cmd:选择这个"以管理员的身份运行"这个选项,

才能保证carte的正确运行,不然权限不够启动会出错的)

Windows下,运行Carte:

./Carte.bat  IP address  port

如截图所示:master node是8080端口,下面开启master node:

 

 

如下图所示,代表的是本地的主节点(port=8080)Carte服务已经被成功开启了,

4.在kettle的图形界面中对集群进行相关的设定

首先,应该开启Spoon程序,进入到图形界面中后,创建一个转换,

然后选择左边选项树的的左选项:主对象树,

然后找到子服务器右击选择新建,如下图所示配置好主节点。

 

需要注意的是:

1.服务器的名称一定要与pwd文件夹下面的配置文件<name>属性所对应的值是一致的

2.所新建的子服务器一定要在pwd文件夹下面要有对应的配置文件才可以,

否则即便在Spoon中进行相关的设定也不会在集群中作为一个节点所运行的。

因为配置文件决定的是Carte服务的启动运行,而Spoon中需要调用到Carte服务。

如果一开始配置文件中没有该节点的话,就无法启动Carte服务,

在Spoon中也就无法调用该Carte作为子服务器,更不用说是将该子服务器作为集群中的节点了。

 

当然LZ也试着在Spoon界面中创建相关的子服务器,然后存盘该.ktr文件,

然后到相应的pwd文件夹下面寻找是否有相关的配置文件生成,但没有找到。

 

所以今后在Spoon中设定配置子服务器的时候,一定要先配置好Carte的配置文件才好。

 

下面的截图是,将要作为集群的一个子节点在pwd文件夹下的配置文件信息:

可以看到的是,对应的<name>属性的值是:slave1-8081

所以在Spoon中设定子服务器作为子节点的时候,

最好是要保证二者(Spoon中的子服务器设定和配置文件)的一致性才好:

接下来的其余子节点就不进行一一演示了。

在"是主服务器吗?"这个选项中,因为它不是主服务器,所以不对其进行勾选。

 

接下来将各个子服务器导入到集群中去,

选择左对象树,然后右键单击:Kettle集群schemas->新建。

接下来选中相关的子服务器:

选中所有的要加入到cluster中的子服务器之后,点击确定。

接下来就可以在集群schema对话框中看到相应的选中的服务器了,如下图所示:

 

 

感觉这篇文章的内容有一点多了呢,估计后面的两个主题也会涉及到很多的东西呢,

所以5、6这 两个主题就留到接下来的一篇文章中来介绍吧~

 

5.使用kettle集群模式对相关的数据进行排序

 http://www.cnblogs.com/inuyasha1027/p/kettle_cluster_sorting2.html

6.有关于集群调用子服务器的java源代码实现

 

posted on 2013-08-15 17:00  Armin  阅读(8518)  评论(0编辑  收藏  举报