dre*_*mer 2 memory hadoop mapreduce bigdata hadoop-yarn
我试图了解容器如何根据不同的硬件配置在 YARN 中分配内存及其性能。
所以,这台机器有 30 GB 的 RAM,我为 YARN 选择了 24 GB,为系统保留了 6 GB。
yarn.nodemanager.resource.memory-mb=24576
Run Code Online (Sandbox Code Playgroud)
然后我按照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
Run Code Online (Sandbox Code Playgroud)
但我改变了这两个配置:
mapreduce.reduce.memory.mb=20480
mapreduce.reduce.java.opts=Xmx16384m
Run Code Online (Sandbox Code Playgroud)
但是,当我使用该设置放置工作时,出现错误并且该工作被强行杀死:
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
Run Code Online (Sandbox Code Playgroud)
到目前为止对我有用的唯一值是设置 reducer memory <= 12 GB,但这是为什么呢?为什么我不能分配更多内存或最多(2 * RAM-per-container?
那么我在这里缺少什么?在设置这些值以获得更好的性能时,我还需要考虑什么吗?
通过更改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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3413 次 |
| 最近记录: |