记一则Hadoop DataNode OOM故障,以及解决方案
一、故障症状
最近公司一个集群跑大任务时,datanode日志报DataXceiveServer: Exiting due to:java.lang.OutOfMemoryError: unable to create new native thread异常,然后计算节点上的DataNode直接挂掉。DataNode异常日志截图如下:
2014-03-06 03:41:05,881 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: DatanodeRegistration(172.16.8.5:50010, storageID=DS-2085721072-172.16.8.5-50010-1386684967398, infoPort=50075, ipcPort
=50020):DataXceiveServer: Exiting due to:java.lang.OutOfMemoryError: unable to create new native thread
TaskTracker上的异常日志信息:
2014-03-06 03:43:52,760 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:job_201403051809_0018 cause:java.io.IOException: Unknown task; attempt_201403051809_0018_r_000000_0. Ignoring getMapCompletionEvents Request
2014-03-06 03:43:52,760 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:job_201403051809_0018 cause:java.io.IOException: Unknown task; attempt_201403051809_0018_r_000000_0. Ignoring getMapCompletionEvents Request
二、解决故障思路分析
从TaskTracker的异常日志来看,报的是一个IO异常,反应的情况是无法从HDFS中获取到job的信息,另外日志中的“Ignoring getMapCompletionEvents Request”则是Reduce Task中的GetMapEventsThreads线程抛出的,该线程的主要作用是周期性通过RPC从TaskTracker获取已经完成的Map Task列表,为shuffle阶段做准备的。再联系DataNode上的异常日志信息我们知道DataNode进程由于出现OOM而挂掉了,那么在TaskTracker中获取不到HDFS上的作业信息也就可以解析了,因此得出一个结论:TaskTracker中的异常是由于DataNode进程挂掉引起的。接下来,将精力转到DataNode上的OOM分析。
TaskTracker报OOM异常我们见多了,最常见的就是reduce阶段的内存溢出,另外可能在map阶段中的sort和spill中,也就是io.sort.mb参数所控制的环形内存所做的快速排序上出现内存溢出,但是map阶段的内存溢出几率还是比较少的,因为通常默认情况下一个map只是处理一个数据块(一个block左右的大小),而且一般io.sort.mb设置都比一个block大小要大。另外TaskTracker上的OOM还可以通过mapred.map.child.java.opts来进行调整。那么对于现在这种情况,在DataNode上出现OOM,第一感觉是不是HADOOP_HEAPSIZE配置的太小了导致DataNode和TaskTracker进程不够内存用(这个值使用默认的1000m)?但是仔细想想觉得不怎么可能,因为集群是刚刚部署不久的,数据存储量还不是很多。但是为了测试还是将HADOOP_HEAPSIZE调到了2000,再跑任务测试,不幸的是DataNode还是出现OOM,进而挂掉。此时,我想会不会是什么配置限制了内存的使用或者限制了新线程的创建?于是看看系统的限制参数,如下图:
看了上面的参数,open files是当初改大了的,max user processes这个参数是系统默认的1024。起初对这个变量值的认识只是认为它仅仅限制了系统的最大进程数,又为了安全起见上网查查看,惊喜地发现,原来这个参数会对系统中所有application创建的总线程数有限制的(具体情况请参考:http://www.iteye.com/topic/654172)。这样一下子明白什么回事了,将max user processes调大,调到81920(可以直接在bash_profiles添加ulimit -u 81920进行设置)。设置完了,如图:
起任务再跑,观察DataNode日志,一切正常,不会出现OOM,稳!!
二、总结
OOM是hadoop集群运行时比较容易出现的故障,其解决方案也各有不同,要看实际情况而定。对于在Map或者reduce出现的OOM故障还是比较容易处理的,具体的可以看上面分析,对于DataNode中的OOM故障,其原因还是比较隐蔽的,需要一定的运维知识和工作经验的积累。哎,都深夜了,就记录这么多了,睡觉!!
记一则Hadoop DataNode OOM故障,以及解决方案相关推荐
- jvm性能调优实战 -55RPC调用引发的OOM故障
文章目录 Pre 系统架构介绍 故障发生现场 初步查找内存溢出的故障发生点 分析内存快照找到占用内存最大的对象 通过分析源代码找出原因 铺垫一个关键知识点:RPC框架的类定义 RPC框架的一个bug: ...
- nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
nginx系列友情链接: nginx高性能WEB服务器系列之一简介及安装 https://www.cnblogs.com/maxtgood/p/9597596.html nginx高性能WEB服务器系 ...
- Hadoop DataNode : Address already in use
1.背景 发现dataNode挂了,但是重启的时候报错Hadoop DataNode : Address already in use 报错: 2.确认端口
- 关于项目IIS CPU100%故障临时解决方案
关于项目IIS CPU100%故障临时解决方案 参考文章: (1)关于项目IIS CPU100%故障临时解决方案 (2)https://www.cnblogs.com/allenfly/p/69521 ...
- Hadoop中Namenode单点故障的解决方案
Hadoop中Namenode单点故障的解决方案 需求: 实现namenode元数据的备份,解决namenode单点宕机导致集群不可用的问题. 方案描述: 当namenode所在服务器宕机的时候,我们 ...
- 记一次EFCore类型转换错误及解决方案
记一次EFCore类型转换错误及解决方案 参考文章: (1)记一次EFCore类型转换错误及解决方案 (2)https://www.cnblogs.com/seekdream/p/11748975.h ...
- 校园网常见故障及解决方案
常见故障及解决方案 客户端错误代码 客户端错误提示 系统后台报错 错误原因 解决方案 628 629 651 -- 线路问题 找学校报修 678 路由器原因 重置路由器 692 重启 720 没有收到 ...
- mysql zimbra_记一次zimbra服务器故障导致mysql起不来问题
记一次zimbra服务器故障导致mysql起不来问题 记一次zimbra服务器故障导致mysql起不来问题 服务器有一天突然访问不了,局域网连接不上,去机房查看,硬盘灯亮着,屏黑的,按电源键没法关机, ...
- 网络共享 指定的服务器无法运行请求的操作,局域网共享访问故障及解决方案...
版权声明:可以任意转载,但请务必以超链接形式标明文章原始出处. 免责声明:操作需谨慎,本站不对使用此文后造成的任何后果负责. 本文链接:本文来自 盆盆罐罐 >> 局域网共享访问故障及解决方 ...
最新文章
- java.lang.RuntimeException: Parcelable encountered IOException writing
- redis3.2安装过程分享
- 一系列视频教程 收藏
- C#连接各类数据库 [转]
- mysql :The user specified ... does not exist 报错
- 制作html5谭木记页面,北斗区域地理配套练习答案
- 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
- css 样式文字溢出显示省略号
- costmap代价地图学习
- 2017年总结和2018年计划
- websocket的属性readyState
- MySQL的binLog、redoLog、undoLog是什么?
- 代数表达式c语言表达式,[单选] 设floata=2,b=4,c=3;,以下C语言表达式与代数式(a+b)+c计算结果不一致的是()...
- python绘制的Svg图打开一片空白
- Centos用speedtest.py测试服务器(国外)上传下载速度
- 80老翁谈人生(347):老翁因火星人失窃源代码与方正结成“死结“
- MySQL数据库与登录注册
- SugarNMS交换机、路由器监控软件
- UE4 通过UI蓝图来控制游戏的暂停和返回
- 蓝牙AOA高精度定位基站原厂深圳核芯物联科技参加2021中国国际高新技术成果交易会诚邀生态合作伙伴莅临交流指导2021.12.27-29深圳宝安国际会展中心11号馆
热门文章
- cocos2d-x游戏开发 跑酷(四) 关联与物理世界
- 在main函数前后执行的函数之 C语言
- Weblogic EJB 学习笔记(3)精
- 偷梁换柱做自己的封装系统
- Linux网络编程小知识(字节序、IP格式、函数、子网掩码、DNS域名解析代码实现)
- Mac安装RocketMQ和可视化控制台教程
- xp系统连接服务器工具,xp系统远程连接服务器
- 数据库:Redis数据库优点介绍
- 网络进阶:用了HTTPS就安全了吗?HTTPS 会被抓包吗?
- ASP.NET MVC ActionFilter自定义过滤器异常过滤器过滤器用法