无法为任务尝试 ID NNN 释放容器
Posted
技术标签:
【中文标题】无法为任务尝试 ID NNN 释放容器【英文标题】:Could not deallocate container for task attemptId NNN 【发布时间】:2015-03-10 17:42:23 【问题描述】:我试图了解容器如何在 YARN 中分配内存以及它们基于不同硬件配置的性能。
因此,机器有 30 GB 的 RAM,我选择 24 GB 用于 YARN,并为系统留出 6 GB。
yarn.nodemanager.resource.memory-mb=24576
然后我跟着http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0/bk_installing_manually_book/content/rpm-chap1-11.html 想出了一些用于 Map & Reduce 任务内存的值。
我将这两个保留为默认值:
mapreduce.map.memory.mb
mapreduce.map.java.opts
但是我改变了这两个配置:
mapreduce.reduce.memory.mb=20480
mapreduce.reduce.java.opts=Xmx16384m
但是当我使用该设置放置作业时,我收到错误并且作业被强制终止:
2015-03-10 17:18:18,019 ERROR [Thread-51] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Could not deallocate container for task attemptId attempt_1426006703004_0004_r_000000_0
到目前为止,唯一对我有用的值是设置 reducer 内存
那么我在这里缺少什么?在设置这些值以获得更好的性能时,我还需要考虑什么?
【问题讨论】:
看起来您的 java opts 中缺少一个“-”。可能不是问题的根本原因,很可能是问题中的拼写错误。 是的,你是对的。在从另一个环境复制粘贴时错过了那个“-”。谢谢你的收获:) 【参考方案1】:通过更改 yarn.scheduler.maximum-allocation-mb 值解决了这个问题。在 YARN 中,作业使用的内存不得超过服务器端配置 yarn.scheduler.maximum-allocation-mb。虽然我设置了 yarn.nodemanager.resource.memory-mb 的值,但它也应该反映最大分配大小。因此,在更新最大分配后,作业按预期工作:
yarn.nodemanager.resource.memory-mb=24576
yarn.scheduler.maximum-allocation-mb=24576
【讨论】:
我想这就是它的意思...还没来得及写答案:P 您本可以节省我的 1 小时 :@ :) 我以为我更改了该属性,但后来我发现该值远低于我的总资源内存值。以上是关于无法为任务尝试 ID NNN 释放容器的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 协程协程取消 ③ ( finally 释放协程资源 | 使用 use 函数执行 Closeable 对象释放资源操作 | 构造无法取消的协程任务 | 构造超时取消的协程任务 )
Kotlin 协程协程取消 ③ ( finally 释放协程资源 | 使用 use 函数执行 Closeable 对象释放资源操作 | 构造无法取消的协程任务 | 构造超时取消的协程任务 )