一、故障症状

最近公司一个集群跑大任务时,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故障,以及解决方案相关推荐

  1. jvm性能调优实战 -55RPC调用引发的OOM故障

    文章目录 Pre 系统架构介绍 故障发生现场 初步查找内存溢出的故障发生点 分析内存快照找到占用内存最大的对象 通过分析源代码找出原因 铺垫一个关键知识点:RPC框架的类定义 RPC框架的一个bug: ...

  2. nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案

    nginx系列友情链接: nginx高性能WEB服务器系列之一简介及安装 https://www.cnblogs.com/maxtgood/p/9597596.html nginx高性能WEB服务器系 ...

  3. Hadoop DataNode : Address already in use

    1.背景 发现dataNode挂了,但是重启的时候报错Hadoop DataNode : Address already in use 报错: 2.确认端口

  4. 关于项目IIS CPU100%故障临时解决方案

    关于项目IIS CPU100%故障临时解决方案 参考文章: (1)关于项目IIS CPU100%故障临时解决方案 (2)https://www.cnblogs.com/allenfly/p/69521 ...

  5. Hadoop中Namenode单点故障的解决方案

    Hadoop中Namenode单点故障的解决方案 需求: 实现namenode元数据的备份,解决namenode单点宕机导致集群不可用的问题. 方案描述: 当namenode所在服务器宕机的时候,我们 ...

  6. 记一次EFCore类型转换错误及解决方案

    记一次EFCore类型转换错误及解决方案 参考文章: (1)记一次EFCore类型转换错误及解决方案 (2)https://www.cnblogs.com/seekdream/p/11748975.h ...

  7. 校园网常见故障及解决方案

    常见故障及解决方案 客户端错误代码 客户端错误提示 系统后台报错 错误原因 解决方案 628 629 651 -- 线路问题 找学校报修 678 路由器原因 重置路由器 692 重启 720 没有收到 ...

  8. mysql zimbra_记一次zimbra服务器故障导致mysql起不来问题

    记一次zimbra服务器故障导致mysql起不来问题 记一次zimbra服务器故障导致mysql起不来问题 服务器有一天突然访问不了,局域网连接不上,去机房查看,硬盘灯亮着,屏黑的,按电源键没法关机, ...

  9. 网络共享 指定的服务器无法运行请求的操作,局域网共享访问故障及解决方案...

    版权声明:可以任意转载,但请务必以超链接形式标明文章原始出处. 免责声明:操作需谨慎,本站不对使用此文后造成的任何后果负责. 本文链接:本文来自 盆盆罐罐 >> 局域网共享访问故障及解决方 ...

最新文章

  1. java.lang.RuntimeException: Parcelable encountered IOException writing
  2. redis3.2安装过程分享
  3. 一系列视频教程 收藏
  4. C#连接各类数据库 [转]
  5. mysql :The user specified ... does not exist 报错
  6. 制作html5谭木记页面,北斗区域地理配套练习答案
  7. 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
  8. css 样式文字溢出显示省略号
  9. costmap代价地图学习
  10. 2017年总结和2018年计划
  11. websocket的属性readyState
  12. MySQL的binLog、redoLog、undoLog是什么?
  13. 代数表达式c语言表达式,[单选] 设floata=2,b=4,c=3;,以下C语言表达式与代数式(a+b)+c计算结果不一致的是()...
  14. python绘制的Svg图打开一片空白
  15. Centos用speedtest.py测试服务器(国外)上传下载速度
  16. 80老翁谈人生(347):老翁因火星人失窃源代码与方正结成“死结“
  17. MySQL数据库与登录注册
  18. SugarNMS交换机、路由器监控软件
  19. UE4 通过UI蓝图来控制游戏的暂停和返回
  20. 蓝牙AOA高精度定位基站原厂深圳核芯物联科技参加2021中国国际高新技术成果交易会诚邀生态合作伙伴莅临交流指导2021.12.27-29深圳宝安国际会展中心11号馆

热门文章

  1. cocos2d-x游戏开发 跑酷(四) 关联与物理世界
  2. 在main函数前后执行的函数之 C语言
  3. Weblogic EJB 学习笔记(3)精
  4. 偷梁换柱做自己的封装系统
  5. Linux网络编程小知识(字节序、IP格式、函数、子网掩码、DNS域名解析代码实现)
  6. Mac安装RocketMQ和可视化控制台教程
  7. xp系统连接服务器工具,xp系统远程连接服务器
  8. 数据库:Redis数据库优点介绍
  9. 网络进阶:用了HTTPS就安全了吗?HTTPS 会被抓包吗?
  10. ASP.NET MVC ActionFilter自定义过滤器异常过滤器过滤器用法