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