Amazon EMR MapReduce进度回滚?

时间:2017-04-13 17:00:38

标签: amazon-web-services hadoop mapreduce amazon-emr elastic-map-reduce

嗨,我刚刚想出了一个奇怪的任务:

我使用EMR运行java-MapReduce作业。

数据大约是1T,我使用了1个主人+8个奴隶。

所有实例都是r2.2xlarge。

最初,一切看起来都很好,如下所示:

INFO mapreduce.Job:  map 0% reduce 0%
INFO mapreduce.Job:  map 1% reduce 0%
INFO mapreduce.Job:  map 2% reduce 0%
INFO mapreduce.Job:  map 3% reduce 0%
INFO mapreduce.Job:  map 4% reduce 0%
INFO mapreduce.Job:  map 5% reduce 0%
INFO mapreduce.Job:  map 6% reduce 0%
INFO mapreduce.Job:  map 7% reduce 0%

...

然而,我只是注意到进度转向回落(从7%下降到1%)。

INFO mapreduce.Job:  map 4% reduce 0%
INFO mapreduce.Job:  map 5% reduce 0%
INFO mapreduce.Job:  map 6% reduce 0%
INFO mapreduce.Job:  map 7% reduce 0%
INFO mapreduce.Job:  map 6% reduce 0%
INFO mapreduce.Job:  map 5% reduce 0%
INFO mapreduce.Job:  map 4% reduce 0%
INFO mapreduce.Job:  map 3% reduce 0%

...

当我像3G数据一样测试时,结果是正确的,过程进展顺利,没有出现这种情况。

有人能告诉我为什么会出现这种情况吗?

最佳。

1 个答案:

答案 0 :(得分:1)

显示的作业进度是NodeManagers报告的作业的已完成和正在进行的任务的统一状态。

逆转作业进度表明NodeManager已经崩溃,或者它很少向ResourceManager发送心跳和任务状态。在这两种情况下,RM都将其视为NM故障,并使NM报告的特定未完成作业的所有任务进度无效。成功完成的任务以及崩溃前运行的任务必须由ApplicationMaster重新运行。因此,失败的NM对工作进展的贡献变得无效,工作进度得到重新计算。

此处,输入量很大可能会导致OOM错误或任务超时。默认情况下,mapreduce.task.timeout为600毫秒(10分钟)。如果任务在超时期限内未显示任何进度,则任务将失败。单个作业的多个故障(默认为3个)会将NM列入黑名单,并重新计算进度。 Nodemanager日志可以提供更清晰的信息。