测试中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.mbyarn.app.mapreduce.am.resource.mb 增加到 512 后,示例映射作业成功

以上是关于测试中hdfs map reduce的Yarn容器内存可以设置多低?的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop之YARN的安装与测试

可以在没有运行任何 Map/Reduce (/Yarn) 的情况下对 Hive 表执行 Spark SQL 吗?

HDFS/Yarn相关设置参数

跟我一起学Hadoop YARN

hadoop 简单安装部署

Yarn中的Map和Reduce的优化