我正在执行多个PIG脚本,例如script1,script2,script3,script4。在那里我执行脚本1并且脚本执行后并行执行脚本2,3,4执行。 我提供大小为7-8 GB的输入文件。因此,在执行script1之后,我观察到,而不是并行执行脚本2,3,4,只有script2正在执行,因为它消耗了33-35个映射器。其他保留在队列中(意味着script3,4没有得到映射器分配)。由于这需要太多时间来执行所有脚本。
所以我想的是,如果我能够为每个脚本设置mapper的限制,那么执行的时间可能会减少,因为所有脚本都可以分配映射器。
那么有没有办法将特定数量的映射器分配给多个脚本?
答案 0 :(得分:0)
如果您的地图编号已正确设置(根据您的核心/节点和磁盘/节点值),那么让1个作业消耗所有地图或使用N个作业消耗MapNumber / N地图将具有相同的结果。但是,如果您真的想在一定数量的工作上分配地图,您可以设置每个工作地图编号(我认为mapreduce.job.maps
中的mapred-site.xml
)。
考虑到你还有免费的地图插槽,有一些配置可以启用作业并行执行,如下所述:Running jobs parallely in hadoop
如果你提供一个job.xml,你可以在其中设置你的地图编号为hadoop命令,你也可以为每个作业设置一个地图编号(即使我不确定它是否真的有效)。
答案 1 :(得分:0)
您可以在脚本的开头添加以下行:
设置mapred.map.tasks 8
这将让你的所有脚本同时运行。
请注意,如果你的机器已经饱和,这不会影响所有脚本的运行时间