0

我正在执行多个 PIG 脚本,比如 script1、script2、script3、script4。因为我 script1 独立执行,而 script2、3、4 在脚本执行后并行执行。我正在提供大小为 7-8 GB 的输入文件。因此,在执行 script1 之后,我观察到不是并行执行脚本 2、3、4,而是仅执行 script2,因为它消耗了 33-35 个映射器。其他保留在类似队列中(意味着 script3,4 没有获得映射器分配)。由于这需要太多时间来执行所有脚本。

所以我在想的是,如果我能够为每个脚本设置映射器的限制,那么执行所需的时间可能会更少,因为所有脚本都可以分配映射器。

那么有没有办法将特定数量的映射器分配给多个脚本?

4

2 回答 2

0

如果您的地图编号设置正确(根据您的核心/节点和磁盘/节点值),那么让 1 个作业消耗所有地图或让 N 个作业消耗 MapNumber / N 个地图将具有相同的结果。但是,如果您真的想将地图分发到大量工作上,您可以设置每个工作的地图编号(mapreduce.job.mapsmapred-site.xml认为)。

考虑到您仍然有空闲的地图插槽,有一些配置可以启用作业并行执行,如下所述:在 hadoop 中并行运行作业

如果您提供一个在其中将地图编号设置为 hadoop 命令的 job.xml,您还可以为每个作业设置一个地图编号(即使我不确定它是否真的有效)。

于 2013-07-24T09:57:32.303 回答
0

您可以在脚本的开头添加以下行:

设置 mapred.map.tasks 8

这将使您的所有脚本同时运行。

请注意,如果您的机器已饱和,这不会影响所有脚本的运行时间

于 2013-07-24T12:28:05.643 回答