kettle 集群、分区

Kettle集群、分区执行顺序与结果

 

 

 

 

 

 

 

 

 

 

网络感知中心 

 

2014年08月07日

 


 

目录

1.     Kettle集群、分区的执行顺序... 3

a)     转换中的一个步骤单独使用集群... 3

b)     转换中的两个步骤使用集群... 3

c)     转换中的一个步骤单独使用分区... 4

d)     转换中的两个步骤使用分区... 5

e)     转换中的一个步骤既使用分区又使用集群... 6

i.      分区数和集群的子服务器数一致... 6

ii.     分区数是集群的子服务器的倍数... 7

f)      转换中的两个步骤使用分区和集群... 8

2.     Kettle集群、分区的执行结果... 9

a)     转换中的一个步骤既使用分区又使用集群... 9

b)     转换中的一个步骤既使用分区又使用集群,另一个步骤仅使用集群... 10

c)     两个步骤都使用集群和分区... 11

 


 

最近测试了一下kettle集群(cluster)、分区(partitioning)的执行顺序和执行结果。

1.        Kettle集群、分区的执行顺序

为了验证kettle转换的多个步骤在使用集群、分区的执行顺序是顺序执行还是在两个步骤之间重新分配集群的子服务器再执行,做了如下实验:

a)        转换中的一个步骤单独使用集群

kettle 集群、分区_第1张图片

Figure1 一个步骤使用集群

kettle 集群、分区_第2张图片

Figure2 主服务器转换步骤

kettle 集群、分区_第3张图片

Figure3 子服务器转换步骤

b)        转换中的两个步骤使用集群

kettle 集群、分区_第4张图片

Figure4 两个步骤使用集群

kettle 集群、分区_第5张图片

Figure5 主服务器转换步骤

kettle 集群、分区_第6张图片

Figure6 子服务器转换步骤

从a)部分和b)部分的六张图对比来看,kettle的多个步骤在使用集群时是顺序执行的而不是在两个步骤之间重新分配子服务器这样大大降低了服务器回收、切换的时间消耗。

c)        转换中的一个步骤单独使用分区

kettle 集群、分区_第7张图片

Figure7 一个步骤使用分区

kettle 集群、分区_第8张图片

Figure8 执行结果日志

kettle 集群、分区_第9张图片

Figure9 执行结果步骤度量

d)        转换中的两个步骤使用分区

kettle 集群、分区_第10张图片

Figure10 两个步骤使用分区

kettle 集群、分区_第11张图片

Figure11 执行结果日志

kettle 集群、分区_第12张图片

Figure12 执行结果步骤度量

从c)部分和d)部分的六张图对比和做得多个实验的结果来看,kettle的多个步骤在使用分区时也是顺序执行的而不是在两个步骤之间重新分区,无论这两个分区依据的是哪个字段,都按前一个分区的字段来划分执行。

e)        转换中的一个步骤既使用分区又使用集群

                        i.             分区数和集群的子服务器数一致

kettle 集群、分区_第13张图片

Figure13 一个步骤使用分区和集群

kettle 集群、分区_第14张图片

Figure14 主服务器转换步骤

kettle 集群、分区_第15张图片

Figure15 子服务器转换步骤

                      ii.             分区数是集群的子服务器的倍数

kettle 集群、分区_第16张图片

Figure16 一个步骤使用分区和集群

kettle 集群、分区_第17张图片

Figure17 主服务器转换步骤

kettle 集群、分区_第18张图片

Figure18 子服务器转换步骤

从i部分和ii部分的六张图来看,步骤在确定分区数和集群的子服务器数时要保证子服务器是分区数的倍数,才能确保在转换执行时可以给每个服务器分配同等数量的分区数(即分区数/子服务器数)。

f)         转换中的两个步骤使用分区和集群

kettle 集群、分区_第19张图片

Figure19 两个步骤使用分区和集群

kettle 集群、分区_第20张图片

Figure20 主服务器转换步骤

kettle 集群、分区_第21张图片

Figure 21 子服务器转换步骤

从ii部分和f)部分的六张图对比来看,kettle的多个步骤在使用集群和分区时是顺序执行的而不是在两个步骤之间重新分配子服务器,这样大大降低了服务器回收、切换的时间消耗。该种情况跟只使用分区时一样,不管两个分区依据的是哪个字段,都按前一个分区的字段来划分执行。

2.        Kettle集群、分区的执行结果

该实验的目的是检验在kettle的转换步骤中使用集群和不同的分区转换后的结果是否是正确的。

a)        转换中的一个步骤既使用分区又使用集群

kettle 集群、分区_第22张图片

Figure22 一个步骤使用分区、集群

若分区与分组是同一字段type,结果:

kettle 集群、分区_第23张图片

Figure23 执行结果1

若分区与分组是不同字段分组type,分区id,结果:

kettle 集群、分区_第24张图片

Figure24 执行结果2

其中type_num是对type个数的使用连接同组字符串,type_all_num是type_num的求和。从图23、24可以看出不管分区时使用哪个字段最终的结果都是正确的,只不过中间会多做一步处理。

b)        转换中的一个步骤既使用分区又使用集群,另一个步骤仅使用集群

kettle 集群、分区_第25张图片

Figure25 一个步骤使用分区、集群,另一个步骤使用集群

若分区与分组是同一字段type,结果:

kettle 集群、分区_第26张图片

Figure26 执行结果1

若分区与分组是不同字段分组type,分区id,结果:

kettle 集群、分区_第27张图片

Figure27 执行结果2

c)        两个步骤都使用集群和分区

kettle 集群、分区_第28张图片

Figure28 两个步骤都使用集群、分区

从a)、b)、c)三个步骤的结果来看,不管分区根据哪个字段,不管有几个步骤使用分区,转换的执行结果都是正确的。需要注意的是,若有一个步骤使用了集群(不管有没有使用分区),另一个步骤只要使用分区必须同时使用集群,否在在使用集群方式执行时会报错。

你可能感兴趣的:(kettle集群并发多服务器)