kettle的并行,集群和分区

kettle的并行,集群和分区

ID:6142369

大小:2.63 MB

页数:27页

时间:2018-01-04

kettle的并行,集群和分区_第1页
kettle的并行,集群和分区_第2页
kettle的并行,集群和分区_第3页
kettle的并行,集群和分区_第4页
kettle的并行,集群和分区_第5页
资源描述:

《kettle的并行,集群和分区》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、kettle的并行,集群和分区January4th,2011byahuooLeaveareply»当你有很多数据要处理的时候,能够有效地使用所有的计算资源是非常重要的。不管是台个人电脑,还是有数百台服务器,你都想让Kettle能尽可能的使用所有可用的计算资源,并在可接受的时间范围内获取执行结果。在这一章节,我们将解开kettle的转换和作业在垂直扩展和水平扩展方面的秘密。垂直扩展是尽可能的使用单台服务器上的多CPU核。水平扩展是使用多台机器资源,使他们并行计算。这两种方法都是ETL子系统的一部分(#

2、31,并行/流水线系统)。章节的第一部分先谈谈转换内部的并行机制和多种使用其进行垂直扩展的方法。然后我们讲解怎样在子服务器集群环境下进行水平扩展转换。最后我们讲讲kettle分区的一些具体细节,利用分区进一步提升并行计算的性能。一、多线程在章节2中,我们已经了解了转换的基本组成部分是步骤,而且每个步骤是并行执行的。现在我们将更深入这一话题,解释kettle的多线程能力怎样使你更充分利用机器所有的计算资源,垂直扩展一个转换。默认情况下,转换中的每一个步骤都是在单一隔离的线程里面并行的执行。但可以为任何

3、单一的步骤增加线程的数目,也可叫做复制。在15章里我们也解释过,这种办法能够提高那些CPU时间消耗量大的转换步骤的性能。[*1]让我们看一个简单的例子,如图16-1,其中所有数据的记录都被一个UserDefinedJavaClass步骤处理图16-1:一个简单的转换你可以右键这个UserDefinedJavaClass步骤,选择菜单中的“改变开始复制的数量”,如果你指定4份,你将看到转换的图形表示如下,见图16-2图16-2:在多个复制下运行一个步骤这个“4x”的符号指示了4个复制将在运行的时候被启

4、动。注意:所有步骤复制只维护一份步骤的描述,[*2]为了理解接下来的章节,这儿定义几个专业术语:·Step:描叙需要做的某项工作的定义或元数据·Stepcopy:在步骤里定义的执行某项工作的一个并行工作线程换句话说,一个step仅仅是任务的定义,而一个stepcopy则表示一个实际执行的任务。记录行分发在这个例子里,你使得一个步骤复制发送记录给4个步骤复制,所以这些记录是怎样分发给目标步骤复制的呢?默认情况下,分发工作在一个循环的方式下执行。也就是说如果有N份复制,第一份复制获取第一条记录,第二份复

5、制获取第二条记录,第N份复制接受第N条记录。记录N+1又分发给第一份复制,依此类推,直到没有记录分发为止。这里还有另外一个比较少用的功能,使用它可以将所有的记录发送给所有的复制,你可以在步骤的上下文菜单中启用这个“复制数据到所有的步骤”选项。这个选项会发送这些记录到多个目标的步骤,例如同时往数据库表和文件里面写入数据。在例子中,会得到一个警告对话框,见图:16-3,询问你选哪个选项图16-3:一个警告对话框选择Copy,可拷贝所有的数据记录给数据库和文本文件,这个转换结果看起来像下面这个例子,见图1

6、6-4[*3]图16-4:拷贝数据到多个目标步骤这应该是个例外,通常情况是处理每一条记录仅仅一次(而不是处理多次),余下的章节中的例子使用的是记录的分发,而非复制。[*4]记录行合并记录合并发生在几个步骤或者步骤复制发送多条记录给单个步骤复制时。图16-5显示了2个这样的例子。如果站在步骤“Textfileoutput”和“Addsequence”的角度考虑,记录集从每个源步骤复制里面不是一次性读取(而是一行一行的读取),当一个步骤复制正在以缓慢的步伐发送少量的数据记录,而另外一个步骤复制正在以迅速

7、的步伐产生记录集,而此时从源步骤复制里批次读取数据行,那可能导致严重的性能问题,。[*5]警告:从前一步骤读取记录行的顺序是决不保证的!图16-5:合并数据的记录行记录行再分发在记录行再分发里,你有X个步骤复制发送记录集给Y个目标步骤复制,想想图16-6的这个例子:图16-6记录行再分发同样的规则适用于之前的记录集分发:在这个实例中,UserDefinedJavaClass的3个源步骤复制每一个都分发记录集给2个目标步骤复制。这个结果等同于图16-7里面显示的转换。这个再分发算法的主要优势是记录集被

8、平等的分发给这些骤复制,防止了转换里面某个步骤复制有很多工作,而其他仅仅有一点工作干的情形。正如你在图16-7里面看到的,有X乘Y行缓冲区被分配在UDJC和Formula步骤之间。在我们的例子中,有6个缓冲区(箭头)被分配给3个源步骤和2个目标步骤。在设计转换的时候得记住这一点哦,特别是在你的转换末端有很慢的步骤时,这些缓存能够被填满到达它们的最大值“Rowsetsize”,那反过来会增加你的转换的内存消耗。例如,看看图16-8里面的一个例子:图16-7:记录行再分发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。