博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop 点点滴滴(二)
阅读量:5350 次
发布时间:2019-06-15

本文共 3411 字,大约阅读时间需要 11 分钟。

hadoop2.0 yarn 内存溢出问题解决

异常提示:

Container [pid=20170,containerID=container_1390877171119_0002_01_000005] is running beyond virtual memory limits. Current usage: 416.8 MB of 1 GB physical memory used; 2.7 GB of 2.1 GB virtual memory used. Killing container.

Dump of the process-tree for container_1390877171119_0002_01_000005 :
|- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE
|- 20175 20170 20170 20170 (java) 939 42 2806788096 106404 /usr/local/jdk/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Xmx2048M -Djava.io.tmpdir=/home/hadoop/hadoop-2.2.0/tmp/nm-local-dir/usercache/hadoop/appcache/application_1390877171119_0002/container_1390877171119_0002_01_000005/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/home/hadoop/hadoop-2.2.0/logs/userlogs/application_1390877171119_0002/container_1390877171119_0002_01_000005 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA org.apache.hadoop.mapred.YarnChild 10.100.2.9 34637 attempt_1390877171119_0002_m_000001_1 5
|- 20170 19734 20170 20170 (bash) 0 0 108646400 301 /bin/bash -c /usr/local/jdk/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -Xmx2048M -Djava.io.tmpdir=/home/hadoop/hadoop-2.2.0/tmp/nm-local-dir/usercache/hadoop/appcache/application_1390877171119_0002/container_1390877171119_0002_01_000005/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/home/hadoop/hadoop-2.2.0/logs/userlogs/application_1390877171119_0002/container_1390877171119_0002_01_000005 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA org.apache.hadoop.mapred.YarnChild 10.100.2.9 34637 attempt_1390877171119_0002_m_000001_1 5 1>/home/hadoop/hadoop-2.2.0/logs/userlogs/application_1390877171119_0002/container_1390877171119_0002_01_000005/stdout 2>/home/hadoop/hadoop-2.2.0/logs/userlogs/application_1390877171119_0002/container_1390877171119_0002_01_000005/stderr

Container killed on request. Exit code is 143

1. io.file.buffer.size 的设置问题

io.file.buffer.size 的值设置过大,map和reduce的任务可能会存在溢出。我这个值的设置是128k,其实不大,后来改成4k仍然出现异常证明不是这个问题. (io.file.buffer.size作为hadoop缓冲区,用于 hadoop读hdfs的文件和写hdfs的文件,还有map的输出都用到了这个缓冲区容量)

2. yarn的虚拟内存计算方式导致

这个问题应该是导致running beyond virtual memory limits.虽然没有解决问题,但感觉不知道这个的人很容易被坑的

running beyond virtual memory limits. Current usage: 32.1mb of 1.0gb physical memory used; 6.2gb of 2.1gb virtual memory used. Killing container。
该错误是YARN的虚拟内存计算方式导致,上例中用户程序申请的内存为1Gb,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的 值,当YARN计算的用户程序所需虚拟内存值大于计算出来的值时,就会报出以上错误。调节比例值可以解决该问题。具体参数为:yarn-site.xml 中的yarn.nodemanager.vmem-pmem-ratio

3.内存监控的问题

看到网上有人说,hadoop有个内存监控,可以设置当task,map,reduce or job 的累计使用的内存量大于limit的时候kill 程序。

第一,我增加了一倍reduce的数目,试着跑了一下,successed

第二,我保持之前的reduce的数目,在mapred-site.xml 配置文件中加入了两段语句 同样successed

<property>
<name>mapreduce.cluster.map.memory.mb</name>
<value>-1</value>
</property>
<property>
<name>mapreduce.cluster.reduce.memory.mb</name>
<value>-1</value>
</property>

第一个目的很明显是分摊每个reduce的累计内存使用量

第二个的目的是关闭监控机制,只有值大于0的时候才会启动,当然默认值是-1,
只不过我设置了mapreduce.{map|reduce}.memory.mb。 看大神的博客里有这么一句话“They typically match the default values set for the options mapreduce.{map|reduce}.memory.mb。”
只是对于官网文档上的此配置解释的 vitual memory还有一点疑惑。

关于内存配置 见

http://blog.csdn.net/amaowolf/article/details/7188504

 

转载于:https://www.cnblogs.com/luxiaorui/p/3931020.html

你可能感兴趣的文章
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>
关于谷歌浏览器Chrome正在处理请求的问题解决
查看>>
Git核心技术:在Ubuntu下部署Gitolite服务端
查看>>
平面波展开法总结
查看>>
建造者模式
查看>>
ArraySort--冒泡排序、选择排序、插入排序工具类demo
查看>>
composer 安装laravel
查看>>
8-EasyNetQ之Send & Receive
查看>>
Android反编译教程
查看>>
List<string> 去重复 并且出现次数最多的排前面
查看>>
js日志管理-log4javascript学习小结
查看>>
Android之布局androidmanifest.xml 资源清单 概述
查看>>
How to Find Research Problems
查看>>
Linux用户管理
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>
使用iperf测试网络性能
查看>>