[ 
https://issues.apache.org/jira/browse/HBASE-10500?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13898087#comment-13898087
 ] 

Nick Dimiduk commented on HBASE-10500:
--------------------------------------

Here's the full stack trace:

{noformat}
Exception in thread "main" java.io.IOException: java.lang.OutOfMemoryError: 
Direct buffer memory
  at 
org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionStores(HRegion.java:731)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.initializeRegionInternals(HRegion.java:638)
  at org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:609)
  at org.apache.hadoop.hbase.regionserver.HRegion.initialize(HRegion.java:595)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.createHRegion(HRegion.java:4195)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.createHRegion(HRegion.java:4154)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.createHRegion(HRegion.java:4127)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.createHRegion(HRegion.java:4205)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.createHRegion(HRegion.java:4085)
  at 
org.apache.hadoop.hbase.util.HBaseFsckRepair.createHDFSRegionDir(HBaseFsckRepair.java:190)
  at 
org.apache.hadoop.hbase.util.HBaseFsck$TableInfo$HDFSIntegrityFixer.handleHoleInRegionChain(HBaseFsck.java:2312)
  at 
org.apache.hadoop.hbase.util.HBaseFsck$TableInfo.checkRegionChain(HBaseFsck.java:2492)
  at 
org.apache.hadoop.hbase.util.HBaseFsck.checkHdfsIntegrity(HBaseFsck.java:1226)
  at 
org.apache.hadoop.hbase.util.HBaseFsck.restoreHdfsIntegrity(HBaseFsck.java:741)
  at 
org.apache.hadoop.hbase.util.HBaseFsck.offlineHdfsIntegrityRepair(HBaseFsck.java:386)
  at org.apache.hadoop.hbase.util.HBaseFsck.onlineHbck(HBaseFsck.java:475)
  at org.apache.hadoop.hbase.util.HBaseFsck.exec(HBaseFsck.java:4029)
  at 
org.apache.hadoop.hbase.util.HBaseFsck$HBaseFsckTool.run(HBaseFsck.java:3838)
  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
  at org.apache.hadoop.hbase.util.HBaseFsck.main(HBaseFsck.java:3826)
Caused by: java.lang.OutOfMemoryError: Direct buffer memory
  at java.nio.Bits.reserveMemory(Bits.java:658)
  at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
  at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
  at 
org.apache.hadoop.hbase.util.ByteBufferArray.<init>(ByteBufferArray.java:65)
  at 
org.apache.hadoop.hbase.io.hfile.bucket.ByteBufferIOEngine.<init>(ByteBufferIOEngine.java:44)
  at 
org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.getIOEngineFromName(BucketCache.java:270)
  at 
org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.<init>(BucketCache.java:210)
  at 
org.apache.hadoop.hbase.io.hfile.CacheConfig.instantiateBlockCache(CacheConfig.java:399)
  at org.apache.hadoop.hbase.io.hfile.CacheConfig.<init>(CacheConfig.java:143)
  at org.apache.hadoop.hbase.regionserver.HStore.<init>(HStore.java:231)
  at 
org.apache.hadoop.hbase.regionserver.HRegion.instantiateHStore(HRegion.java:3309)
  at org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:702)
  at org.apache.hadoop.hbase.regionserver.HRegion$1.call(HRegion.java:699)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
  at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:722)
{noformat}

> hbck and OOM when BucketCache is enabled
> ----------------------------------------
>
>                 Key: HBASE-10500
>                 URL: https://issues.apache.org/jira/browse/HBASE-10500
>             Project: HBase
>          Issue Type: Bug
>          Components: hbck
>    Affects Versions: 0.98.0
>            Reporter: Nick Dimiduk
>            Assignee: Nick Dimiduk
>
> Running {{hbck --repair}} when BucketCache is enabled in offheap mode can 
> cause OOM. This is apparently because {{bin/hbase}} does not include 
> $HBASE_REGIONSERVER_OPTS for hbck. It instantiates an HRegion instance as 
> part of HDFSIntegrityFixer.handleHoleInRegionChain. That HRegion initializes 
> its CacheConfig, which doesn't have the necessary Direct Memory.
> Possible solutions include:
>  - disable blockcache in the config used by hbck when running its repairs
>  - include HBASE_REGIONSERVER_OPTS in the HBaseFSCK startup arguments
> I'm leaning toward the former because it's possible that hbck is run on a 
> host with the same hardware profile as the RS.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to