HBase Direct Memory OutOfMemory

栏目: 数据库 · 发布时间: 5年前

内容简介:最近对一个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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

响应式Web设计实践

响应式Web设计实践

[美] Tim Kadlec / 侯鸿儒 / 人民邮电出版社 / 2013-3-1 / 55.00元

随着各种各样的移动设备不断地涌现到使用者面前,Web设计的适应性已经成为设计师们所面临的最为艰巨的挑战。你设计出的网站不仅要在桌面计算机的大尺寸屏幕上可以为用户提供友好的UI和用户体验,同时在小尺寸屏幕上也应该可以提供一致的用户体验,并可以让用户能够在桌面大屏幕上和移动小屏幕上平滑切换,同时没有任何的不适应感觉。 本书作者是一位出色的开发者,在本书中,他将诸多技术和设计理念杂糅在一起,再辅以......一起来看看 《响应式Web设计实践》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码