zoukankan      html  css  js  c++  java
  • 在使用Kettle的集群排序中 Carte的设定——(基于Windows)

    在使用Kettle的集群排序中 Carte的设定——(基于Windows)

    本片文章主要是关于使用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集群模式对相关的数据进行排序

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

     
     
    分类: Kettle
  • 相关阅读:
    hdu 5001 从任意点出发任意走d步不经过某点概率
    hdu 5007
    hdu 5009 离散化
    hdu 5011 Nim+拿完分堆
    thinkphp 删除多条记录
    thinkphp 实现无限极分类
    图片生成唯一的名字
    html 标签学习
    PHP比较运算!=和!==
    php使用 set_include_path
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3260909.html
Copyright © 2011-2022 走看看