When I start a new cluster, package is hbase-1.0.1-bin.tar.gz, error occurs:
2015-05-18 17:21:09,514 ERROR [main] regionserver.HRegionServerCommandLine: 
Region server exiting
java.lang.RuntimeException: Failed construction of Regionserver: class 
org.apache.hadoop.hbase.regionserver.HRegionServer
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2496)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.start(HRegionServerCommandLine.java:64)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.run(HRegionServerCommandLine.java:87)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at 
org.apache.hadoop.hbase.util.ServerCommandLine.doMain(ServerCommandLine.java:126)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.main(HRegionServer.java:2511)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at 
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
        at 
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.constructRegionServer(HRegionServer.java:2494)
        ... 5 more
Caused by: java.lang.IllegalArgumentException: Queue size is <= 0, must be at 
least 1
        at 
com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor.getBalancer(RpcExecutor.java:177)
        at 
org.apache.hadoop.hbase.ipc.RWQueueRpcExecutor.<init>(RWQueueRpcExecutor.java:133)
        at 
org.apache.hadoop.hbase.ipc.RWQueueRpcExecutor.<init>(RWQueueRpcExecutor.java:95)
        at 
org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.<init>(SimpleRpcScheduler.java:134)
        at 
org.apache.hadoop.hbase.regionserver.SimpleRpcSchedulerFactory.create(SimpleRpcSchedulerFactory.java:46)
        at 
org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:792)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.createRpcServices(HRegionServer.java:575)
        at 
org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:492)


I found the probably reason:
in hbase-default.xml, hbase.ipc.server.callqueue.read.ratio default value is 0


hbase/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler#init
line 44.                public static final String 
CALL_QUEUE_SCAN_SHARE_CONF_KEY = "hbase.ipc.server.callqueue.scan.ratio";
line 123.       float callqScanShare = 
conf.getFloat(CALL_QUEUE_SCAN_SHARE_CONF_KEY, 0);        // default is 0
line 134.       callExecutor = new RWQueueRpcExecutor("RW.default", 
handlerCount, numCallQueues,
            callqReadShare, callqScanShare, maxQueueLength, conf, abortable,
            BoundedPriorityBlockingQueue.class, callPriority);
 
hbase/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor#init
line 116.       int numScanQueues = Math.max(0, (int)Math.floor(numReadQueues * 
scanShare)); // numScanQueues is 0
line 133.    this.scanBalancer = getBalancer(numScanQueues);




hbase/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor#getBalancer
line 177.    Preconditions.checkArgument(queueSize > 0, "Queue size is <= 0, 
must be at least 1");
the queueSize is 0, so, throw IllegalArgumentEception:
Caused by: java.lang.IllegalArgumentException: Queue size is <= 0, must be at 
least 1


my answer is:
this config, hbase.ipc.server.callqueue.scan.ratio, can be '0'? or other reason 
cause this fault?
Thanks

Reply via email to