[ 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)