2014-06-29 45 views
1

我上传了一个客户jar到S3,并且想要在EMR中运行作业。 所以在集群配置中,我选择了1个主,2个工作者,指定了jar路径,输入路径和输出路径。一切都很好。为什么AWS EMR作业的作业任务按顺序执行

一旦开始运行客户jar,我发现我无法查看工作任务,因为它告诉我“没有可用的任务”,这非常奇怪。工作完成后,我发现emr总共创建了306个任务,但是当我查看每个任务的syslog时,我发现它们都是按顺序执行的。例如,maptask260在19:40:35完成,而maptask261从19:40:40开始,并且在完成261之后启动maptask262。

据我所知,EMR根据工作规模创建了一堆任务,我认为所有任务都应该并行执行,这意味着一旦工作开始运行,就应该创建360任务,并且所有任务应该同时开始工作。

不知道我的理解是错误还是我错误配置了某些内容?

有人可以帮忙吗?

回答

0

这些任务应该在EMR中并行运行,但您只启动了2个工作人员,并且您没有指定哪种实例类型。如果您有306个任务,并且您希望所有这些任务都并行运行,那么您可能需要开始多于2个。

例如,使用EMR上的Hadoop 1,可以在m1.xlarge实例上获得8个映射器插槽。要并行运行306个任务,您必须启动39个m1.xlarge机器。

我不确定这是否是您想要的,因为即使map-reduce作业执行5分钟,您也需要为每台计算机支付整整一小时的费用。

+0

我启动了两个m1.medium实例。这只是为了测试目的,所以我没有使用两个很多的工作人员......但即使两个实例不足以并行运行306个任务,至少它应该同时运行2或3个任务......(以我个人的理解)......为什么所有的任务都是按顺序执行的?所以令人困惑... – user1453951

+0

如果您有超过1个可用插槽,map/reduce作业中的mapper任务(或reducer任务)应该并行运行。 – SNeumann