Hadoop YARN减速机/ shuffle卡住了

时间:2014-11-26 08:38:42

标签: hadoop shuffle reduce yarn

我正在从Hadoop 1迁移到Hadoop 2 YARN。源代码使用MRV2罐重新编译,并没有任何兼容性问题。当我试图在YARN下运行这个工作时,地图工作得很好并达到了100%,但是降低了~6,7%。没有性能问题。实际上,我检查了CPU的使用情况,原来当减少卡住时,似乎没有计算进行,因为CPU大多是100%空闲。该作业可以在Hadoop 1.2.1上成功运行。

我检查了来自resourcemanager的日志消息,发现自映射完成后,不再分配容器,因此任何容器都没有运行reduce。造成这种情况的原因是什么?

我想知道它是否与yarn.nodemanager.aux-services属性设置有关。通过遵循官方教程(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html),此属性必须设置为mapreduce_shuffle,这表示MR仍将使用默认shuffle方法而不是其他shuffle插件(http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/PluggableShuffleAndPluggableSort.html)。我试着不设置这个属性,但Hadoop不会让我。

这是userlogs / applicationforlder / containerfolder / syslog的日志,当它即将达到减少的7%时。之后该日志不再更新,并且还会停止。

2014-11-26 09:01:04,104 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.Fetcher: fetcher#1 about to shuffle output of map attempt_1416988910568_0001_m_002988_0 decomp: 129587 len: 129591 to MEMORY
2014-11-26 09:01:04,104 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput: Read 129587 bytes from map-output for attempt_1416988910568_0001_m_002988_0
2014-11-26 09:01:04,104 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 129587, inMemoryMapOutputs.size() -> 2993, commitMemory -> 342319024, usedMemory ->342448611
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.Fetcher: fetcher#1 about to shuffle output of map attempt_1416988910568_0001_m_002989_0 decomp: 128525 len: 128529 to MEMORY
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.InMemoryMapOutput: Read 128525 bytes from map-output for attempt_1416988910568_0001_m_002989_0
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl: closeInMemoryFile -> map-output of size: 128525, inMemoryMapOutputs.size() -> 2994, commitMemory -> 342448611, usedMemory ->342577136
2014-11-26 09:01:04,105 INFO [fetcher#1] org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl: datanode03:13562 freed by fetcher#1 in 13ms

从Hadoop 1迁移到2时,这是一个常见问题吗?在Hadoop 2中运行map-shuffle-sort-reduce的策略是否已更改?是什么导致了这个问题非常感谢。任何评论都会有所帮助!

主要环境设置:

  • Hadoop版本:2.5.2
  • 具有8核CPU的6节点群集,每个节点上15 GB内存

相关属性设置:

  • yarn.scheduler.maximum-allocation-mb:14336
  • yarn.scheduler.minimum-allocation-mb:2500
  • yarn.nodemanager.resource.memory-mb:14336
  • yarn.nodemanager.aux-services:mapreduce_shuffle
  • mapreduce.task.io.sort.factor:100
  • mapreduce.task.io.sort.mb:1024

1 个答案:

答案 0 :(得分:0)

最后解决了谷歌搜索后的问题,发现我已经在三个月前发布了这个问题。

这是因为数据偏差。