如何在Hadoop中为多个作业分配特定数量的映射器?

如何在Hadoop中为多个作业分配特定数量的映射器?,hadoop,apache-pig,Hadoop,Apache Pig,我正在执行多个PIG脚本,比如script1、script2、script3、script4。因为脚本1是独立执行的,脚本2、3、4在脚本执行后并行执行。 我给输入文件的大小7-8GB。所以在执行script1之后,我观察到只有script2在执行,而不是并行执行script2,3,4,因为它消耗了33-35个映射器。其他仍在like队列中(意味着script3,4尚未获得映射器分配)。因此,执行所有脚本需要太多时间 所以我想的是,如果我能够为每个脚本设置映射器的限制,那么执行wll所需的时间可

我正在执行多个PIG脚本,比如script1、script2、script3、script4。因为脚本1是独立执行的,脚本2、3、4在脚本执行后并行执行。 我给输入文件的大小7-8GB。所以在执行script1之后,我观察到只有script2在执行,而不是并行执行script2,3,4,因为它消耗了33-35个映射器。其他仍在like队列中(意味着script3,4尚未获得映射器分配)。因此,执行所有脚本需要太多时间

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


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

如果映射号设置正确(根据核心/节点和磁盘/节点值),那么让1个作业使用所有映射或让N个作业使用映射号/N映射将得到相同的结果。但是,如果您真的想在大量作业上分发地图,您可以设置每个作业的地图编号(
mapreduce.job.maps
in
mapred site.xml

考虑到您仍然有可用的映射槽,有一些配置可以启用作业并行执行,如下所述:


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

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

设置mapred.map.tasks 8

这将允许所有脚本同时运行

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