内容简介:最近对一个HBase集群增加了BucketCache配置,减少其堆内内存GC已达到提升新能的目的。但是,没过多久整个集群就出现了大面积OOM现象,而且是发生在Direct Memory,日志错误信息如下。在没开启BucketCache之前,在hbase-env.sh中是没有分配堆外内存Direct Memory的。
1、java.lang.OutOfMemoryError: Direct buffer memory
最近对一个HBase集群增加了BucketCache配置,减少其堆内内存GC已达到提升新能的目的。
但是,没过多久整个集群就出现了大面积OOM现象,而且是发生在Direct Memory,日志错误信息如下。
2018-08-30 02:44:00,199 ERROR [Thread-40464] hdfs.DFSClient: Failed to close inode 43777915 java.io.IOException: DataStreamer Exception: at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:666) Caused by: java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:693) at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311) at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:241) at sun.nio.ch.IOUtil.write(IOUtil.java:58) at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471) at org.apache.hadoop.net.SocketOutputStream$Writer.performIO(SocketOutputStream.java:63) at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:142) at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:159) at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:117) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:122) at java.io.DataOutputStream.write(DataOutputStream.java:107) at org.apache.hadoop.hdfs.DFSPacket.writeTo(DFSPacket.java:176) at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:611)
2、OOM异常原因
在没开启BucketCache之前,在hbase-env.sh中是没有分配堆外内存Direct Memory的。
而BucketChace的分配的方式是offheap(支持heap,offheap,file,file通常是建立在SSD或者PCIE-IO存储上)
<property> <name>hbase.bucketcache.ioengine</name> <value>offheap</value> </property> <property> <name>hbase.bucketcache.size</name> <value>12000</value> </property>
DirectMemory分配为:
-XX:MaxDirectMemorySize=12100m
除去BucketCache占用的堆外之外,仅100M空间可用,DFSClient用到Direct Memory因而容易出现OOM现象。
建议:MaxDirectMemorySize – hbase.bucketcache.size >= 2048M
参考资料:
https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.2.0/bk_Sys_Admin_Guides/content/ref-db219cd6-c586-49c1-bc56-c9c1c5475276.1.html
https://community.hortonworks.com/content/supportkb/150736/error-hdfsdfsclient-datastreamer-exception-javalan.html
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序设计语言理论基础
米切尔 / 电子工业出版社 / 2006-11 / 68.00元
本书提出了一个框架,用于分析程序设计语言的语法、操作和语义性质,该框架基于称为类型化λ演算的数学系统。λ演算的主要特色是对于函数和其他可计算的值的一种记法,以及一个等式逻辑和用于表达式求值的一组规则。本书中最简单的系统是称为泛代数的一个等式系统,它可以用来公理化和分析通常用于程序设计的许多数据类型。可作为理论计算机科学、软件系统和数学专业的大学本科高年级或者研究生初始学习阶段的教材,同时也适合用于......一起来看看 《程序设计语言理论基础》 这本书的介绍吧!