测试中hdfs map reduce的Yarn容器内存可以设置多低?
Posted
技术标签:
【中文标题】测试中hdfs map reduce的Yarn容器内存可以设置多低?【英文标题】:How low can Yarn container memory be set for hdfs map reduce in test? 【发布时间】:2016-02-10 03:45:40 【问题描述】:我正在设置一个 hadoop 单节点环境,用于在只有 4GB 物理 RAM 并使用 hadoop 2.6.0 的硬件上进行测试。
我只使用了针对这种环境建议的基本配置。但我现在担心我可能应该调整内存资源管理,以便能够运行一些 map reduce 示例。
我知道有几个设置需要查看,包括 java 堆,以及用于 map 和 reduce 任务的内存。对于像我这样的小规模测试环境,我应该/可以将最小、最大容器大小设置到多低才能使适度的 map reduce 任务发挥作用?
我特别指的是:
yarn.scheduler.minimum-allocation-mb
yarn.scheduler.maximum-allocation-mb
在 start-dfs 和 start-yarn 之后,机器上的可用物理空间远低于 1 GB。
【问题讨论】:
【参考方案1】:我经常在虚拟机上工作,我的 yarn-site.xml 中有这些设置:
<property>
<description>Max available memory on each data node.</description>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<description>Max available cores data node.</description>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<property>
<description>Minimum allocation unit.</description>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>256</value>
</property>
<property>
<description>Max allocation unit.</description>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<description>Minimum increment setting - set to same as min-allocation</description>
<name>yarn.scheduler.increment-allocation-mb</name>
<value>256</value>
</property>
这在 mapred-site.xml -
<!-- small cluster memory settings -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>256</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>256</value>
</property>
<property>
<description>Application master allocation</description>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>256</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx204m</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx204m</value>
</property>
<property>
<description>Application Master JVM opts</description>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Xmx204m</value>
</property>
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>50</value>
</property>
我发现这些设置适用于我在 VM 上运行的任何具有 Vm 大小的数据量(即不太大!)。
【讨论】:
谢谢。我尝试了这些设置,在 start-dfs+yarn 之后,我在日志中收到警告:NodeManager configured with 4 G physical memory allocated to containers, more than 80% of the total physical memory available (3.7 G).
我可能必须减少yarn.nodemanager.resource.memory-mb
。我在运行 map-reduce 示例时处理的实际症状是此错误:Error in instantiating YarnClient Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
在应用您的设置之前和之后,该错误仍然存在。
该警告在 VM 环境中可能不值得担心。听起来您还缺少其他一些设置。您是否使用 Hadoop 发行版,例如 Cloudera CDH?如果你只是想玩转 Hadoop,你可以从 Cloudera 获取一个快速启动 VM,它开箱即用。或者,Clouderas 文档中也有很好的“快速入门”设置说明来构建 VM。
可能过早地接受了答案。我运行了这个例子:hadoop jar mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /user/WordCount.txt /user/output2
并得到了这个结果:Container [pid=17656,containerID=container_145...] is running beyond virtual memory limits. Current usage: 192.2 MB of 256 MB physical memory used; 892.3 MB of 537.6 MB virtual memory used. Killing container.
在将 mapreduce.reduce.memory.mb
和 yarn.app.mapreduce.am.resource.mb
增加到 512 后,示例映射作业成功以上是关于测试中hdfs map reduce的Yarn容器内存可以设置多低?的主要内容,如果未能解决你的问题,请参考以下文章