Hi,
We upgraded our cluster from CDH5.3.1(HBase0.98.6) to CDH5.4.5(HBase1.0.0)
and we experience slowdown in increment operation.
Here's an extract from thread dump of the RegionServer of our cluster:
Thread 68 (RW.default.writeRpcServer.handler=15,queue=5,port=60020):
State: BLOCKED
Blocked count: 21689888
Waited count: 39828360
Blocked on java.util.LinkedList@3474e4b2
Blocked by 63 (RW.default.writeRpcServer.handler=10,queue=0,port=60020)
Stack:
java.lang.Object.wait(Native Method)
org.apache.hadoop.hbase.regionserver.MultiVersionConsistencyControl.waitForPreviousTransactionsComplete(MultiVersionConsistencyControl.java:224)
org.apache.hadoop.hbase.regionserver.MultiVersionConsistencyControl.waitForPreviousTransactionsComplete(MultiVersionConsistencyControl.java:203)
org.apache.hadoop.hbase.regionserver.HRegion.increment(HRegion.java:6712)
org.apache.hadoop.hbase.regionserver.RSRpcServices.increment(RSRpcServices.java:501)
org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:570)
org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:1901)
org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:31451)
org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2035)
org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:130)
org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:107)
java.lang.Thread.run(Thread.java:745)
There are many similar threads in the thread dump.
I read the source code and I think this is caused by changes of
MultiVersionConsistencyControl.
A region lock (not a row lock) seems to occur in
waitForPreviousTransactionsComplete().
Also we wrote performance test code for increment operation that included
100 threads and ran it in local mode.
The result is shown below:
CDH5.3.1(HBase0.98.6)
Throughput(op/s): 12757, Latency(ms): 7.975072509210629
CDH5.4.5(HBase1.0.0)
Throughput(op/s): 2027, Latency(ms): 49.11840157868772
Thanks,
Toshihiro Suzuki