我正在运行一个超过550 Gb数据的猪拉丁文字。 减速器是默认值1.生成结果大约需要38分钟。 我想知道增加减速器的数量是否会更快地执行脚本
任何帮助将不胜感激。
另外,我想知道设置mapper和reducers背后的概念。
答案 0 :(得分:2)
增加减速器的数量肯定会有所帮助(如果您正在执行的操作具有聚合)。由于实际聚合发生在reduce方面,运行多个reducers会提高性能。
您可以使用&& 39; Parallel'来设置猪的减速器数量。关键词。 例如: A = LOAD' myfile' AS(t,u,v); B = GROUP A BY t PARALLEL 18;
映射器的数量取决于输入的大小和我们使用的输入格式。映射器的数量通常等于输入分割的数量。
答案 1 :(得分:2)
以前的答案不一定适合您的情况。确实,如果你有各种reduce键并且你的数据集没有严重偏向其中一个,并且shuffle和/或reduce阶段是你操作中的瓶颈,并且你有多个内核可用作reducer,然后添加更多减速器将有所帮助。在Pig中,您可以使用PARALLEL
子句指定要使用的数字。
正如所暗示的,在某些情况下,添加更多减速器对您没有帮助:
JOIN
期间发生这种情况,您可以使用USING 'skewed'
子句解决此问题。除了添加reducer之外,另一种让你的作业运行得更快的方法是减少任何不必要的地图输出。所有映射输出都写入磁盘,然后分发到reducer,再次将其写入磁盘。磁盘I / O非常慢,如果不需要大量数据,请在映射阶段将其丢弃。例如,在Pig中,您可能只想获得每个键的记录数。在这种情况下,除了密钥之外的所有数据都应该被丢弃。
通常,自动选择映射器的数量。如果你觉得地图制作者的数量太小,你可以使用一些技巧。例如,您可能会发现Pig在将输入文件组合在一起时过于激进,因此您只需要一个或两个映射器,这需要很长时间。在这种情况下,您可以SET pig.maxCombinedSplitSize
更大的数字。但通常情况下,地图制作者的数量无法控制。
您想要使用的减速器数量取决于您可以使用的资源(即,可以一次使用多少减速器?如果您的工作长时间占用集群中的所有减速器,这是否可以?时间?)和数据的性质(即,它是否严重偏向一个减少键?)。另请注意,每个reducer都有一个输出文件,因此在某些情况下更多的reducer可能会有问题。
答案 2 :(得分:1)
是的,当然你可以有多个减速器。
不同的颜色代表不同的键。具有相同键的所有值都将显示在单个reduce任务中。
这意味着。,您可以为不同的密钥设置多个reducer
参考此链接
答案 3 :(得分:0)
您可以使用PIG中提供的并行功能。有关详细信息,请参阅此链接。PIG Parallel Feature