hadoop减纱器/shuffle卡滞

bksxznpy  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(491)

我正在从hadoop1迁移到hadoop2。源代码是使用mrv2jars重新编译的,没有任何兼容性问题。当我试着在Yarn下运行作业时,map运行得很好,达到了100%,但是reduce被卡在了~6,7%。没有性能问题。实际上,我检查了cpu的使用情况,结果发现当reduce被卡住时,似乎没有计算在进行,因为cpu大部分是100%空闲的。作业可以在hadoop1.2.1上成功运行。
我检查了resourcemanager的日志消息,发现自从map完成后,没有分配更多的容器,因此没有reduce在任何容器上运行。是什么导致了这种情况?
我想知道它是否与yarn.nodemanager.aux-services属性设置有关。通过遵循官方教程(http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/singlecluster.html),此属性必须设置为mapreduce\u shuffle,这表示mr仍将使用默认的shuffle方法,而不是其他shuffle插件(http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/pluggableshuffleandpluggablesort.html). 我试图不设置这个属性,但是hadoop不允许。
下面是userlogs/applicationforlder/containerfolder/syslog的日志,当它即将达到reduce的7%时。之后,日志不再更新,reduce也停止了。

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

从hadoop1迁移到hadoop2时,这是一个常见的问题吗?hadoop2中运行map-shuffle-sort-reduce的策略改变了吗?是什么导致了这个问题?非常感谢。任何评论都会有帮助!
主要环境设置:
hadoop版本:2.5.2
6节点群集,8核cpu,每个节点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\u shuffle
mapreduce.task.io.sort.factor:100
mapreduce.task.io.sort.mb:1024

hfwmuf9z

hfwmuf9z1#

终于解决了这个问题后,谷歌四处搜索,发现我张贴了这个问题三个月前已经。
这是因为数据倾斜。

相关问题