在Hadoop中调整内存消耗和容器数量的问题

时间:2014-12-10 12:48:48

标签: java xml hadoop memory-management

我正在尝试配置Hadoop集群。默认配置工作正常,但资源消耗很差。例如,从站中CPU的总使用率略高于40%。我想更有效地使用集群,并查阅此页面:

docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0/bk_installing_manually_book/content/rpm-chap1-11.html

我有一个小集群(1个主服务器和5个从服务器),每个节点都有这个硬件:

  • 4个核心
  • 8 RAM Gb
  • 1 HardDisk 500Gb

SO是Ubuntu 14.04,Hadoop版本是2.5.0。

我尝试计算值,然后得到:

总可用RAM = 8192 - 2024 = 6168(系统为2Gb) MIN_CONTAINER_SIZE = 512(从上面链接中的表中提取) RAM-per-container = 771 - > MAX(MIN_CONTAINER_SIZE,(总可用RAM)/容器)) 容器数量:8 - > MIN(2 * CORE,总可用RAM / MIN_CONTAINER_SIZE)

Configuration File      Configuration Setting                   Formula                             Value
yarn-site.xml           yarn.nodemanager.resource.memory-mb     = containers * ram-per-container    6168
yarn-site.xml           yarn.scheduler.minimum-allocation-mb    = ram-per-container                 771
yarn-site.xml           yarn.scheduler.maximum-allocation-mb    = containers * ram-per-container    6168
mapred-site.xml         mapreduce.map.memory.mb                 = ram-per-container                 771
mapred-site.xml         mapreduce.reduce.memory.mb              = 2 * ram-per-container             1542
mapred-site.xml         mapreduce.map.java.opts                 = 0.8 * ram-per-container           616.8
mapred-site.xml         mapreduce.reduce.java.opts              = 0.8 * 2 * ram-per-container       1233.6
yarn-site.xml (check)   yarn.app.mapreduce.am.resource.mb       = 2 * ram-per-container             1542
yarn-site.xml (check)   yarn.app.mapreduce.am.command-opts      = 0.8 * 2 * ram-per-container       1

233.6

这个配置,以及相同的一些变体,不起作用,我得到像这样的错误

14/12/09 17:17:34 INFO mapreduce.Job: Task Id : attempt_1418155570046_0004_m_000060_1, Status : FAILED
Container [pid=5808,containerID=container_1418155570046_0004_01_000081] is running beyond physical memory limits. Current usage: 827.2 MB of 771 MB physical memory used; 1.6 GB of 1.9 GB virtual memory used. Killing container.
Dump of the process-tree for container_1418155570046_0004_01_000081 :
    |- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
    |- 5815 5808 5808 5808 (java) 580 27 1706360832 211455 /usr/lib/jvm/default-java/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Xmx1024M -Djava.io.tmpdir=/usr/local/hadoop/hadoop_store/tmp/nm-local-dir/usercache/hduser/appcache/application_1418155570046_0004/container_1418155570046_0004_01_000081/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/usr/local/hadoop/logs/userlogs/application_1418155570046_0004/container_1418155570046_0004_01_000081 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA org.apache.hadoop.mapred.YarnChild 10.4.1.103 57356 attempt_1418155570046_0004_m_000060_1 81 
    |- 5808 4341 5808 5808 (bash) 0 0 14008320 303 /bin/bash -c /usr/lib/jvm/default-java/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN  -Xmx1024M -Djava.io.tmpdir=/usr/local/hadoop/hadoop_store/tmp/nm-local-dir/usercache/hduser/appcache/application_1418155570046_0004/container_1418155570046_0004_01_000081/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/usr/local/hadoop/logs/userlogs/application_1418155570046_0004/container_1418155570046_0004_01_000081 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA org.apache.hadoop.mapred.YarnChild 10.4.1.103 57356 attempt_1418155570046_0004_m_000060_1 81 1>/usr/local/hadoop/logs/userlogs/application_1418155570046_0004/container_1418155570046_0004_01_000081/stdout 2>/usr/local/hadoop/logs/userlogs/application_1418155570046_0004/container_1418155570046_0004_01_000081/stderr  

Container killed on request. Exit code is 143

或者我也得到了Java Heaps错误。

默认配置相同的应用程序没有失败。

那是什么问题?

感谢您提前。

0 个答案:

没有答案