2014-04-22 49 views
0

我正在运行超过550 Gb数据的拉丁脚本。 减速机是默认值1.需要大约38分钟才能生成结果。 我想知道是否增加减速器的数量将更快地执行脚本知道mapper和reducer的用法

任何帮助将不胜感激。

另外,我想知道设置mapper和reducer的概念。

+0

如果您需要更详细的解释请告诉我 – Backtrack

回答

0

您可以使用PIG提供的并行功能。请参阅此链接了解更多信息。 PIG Parallel Feature

2

增加减速器的数量肯定会有帮助(如果您正在执行的操作具有聚合)。由于实际的聚合发生在减少方面,因此运行多个减少器会提高性能。

您可以使用'并行'关键字来设置猪减速器的数量。 ex: A = LOAD'myfile'AS(t,u,v); B =组A,组B,组B,组B,组18,

映射器的数量取决于我们使用的输入和输入格式的大小。映射器的数量通常等于输入拆分的数量。

2

以前的答案不一定适合您的情况。确实,如果你有各种缩减键,而你的数据集并没有严重偏向其中一个键,而且洗牌和/或缩小阶段是你操作的瓶颈,并且你有多个核心可用作缩减器,那么添加更多的减速器将有所帮助。在Pig中,您可以指定要与PARALLEL子句一起使用的编号。

作为暗示,有其中加入更多的减速不会帮助你的情况:

  1. 你有一个降低您的大部分数据的关键。如果大多数数据导致相同的缩减键,则该键的所有映射输出都将转到单个缩减器。如果添加更多减速器,您会发现其他减速器完成得非常快,但减速器仍然需要很长时间才能完成。如果在Pig JOIN期间发生这种情况,则可以使用USING 'skewed'子句解决此问题。
  2. 主要瓶颈是在地图阶段读取数据并对其进行处理。你说你有550 GB的数据。你使用多少个mappers?他们需要多长时间才能完成?添加更多减速器只能加快洗牌和缩短阶段。
  3. 您正在研究可用于减少任务的核心数量极少的小型群集。如果您在计算机上设置了本地Hadoop集群,则可能没有超过1个或2个专用于减少任务的内核。因此,启动更多减速器意味着那些额外的减速器必须等待CPU时间,并且不会更快地移动。

除了添加减速器之外,另一种使作业更快运行的方法是减少任何不必要的地图输出。所有映射输出都写入磁盘,然后分发给还原器,再次写入磁盘。磁盘I/O非常缓慢,如果不需要大量数据,请在映射阶段将其丢弃。例如,在Pig中,您可能只希望计算每个键的记录数。在这种情况下,除键外的所有数据都应该丢失。


通常,映射器的数量是自动选择的。如果你觉得mappers的数量太小,你可以使用一些技巧。例如,您可能会发现Pig在将输入文件组合在一起过于积极,因此您只有一两个映射器需要很长时间。在这种情况下,您可以将SET pig.maxCombinedSplitSize设置为更大的数字。但通常,映射器的数量超出了你的控制范围。

要使用的还原器的数量取决于您可以使用的资源(即一次可以使用多少个还原器?如果您的作业占用了群集中的所有还原器,很长一段时间?)和你的数据的性质(即它是否严重倾向于一个缩减密钥?)。还要注意,每个reducer都有一个输出文件,所以在某些情况下,更多reducer可能会有问题。

相关问题