解决某个RegionServer获取行锁失败[HBase1.1.2]

来源:互联网 发布:移动数据被自动关闭 编辑:程序博客网 时间:2024/06/08 17:28
【现象】
某个RegionServer的日志中,发现有以下异常:
2017-12-13 03:19:33,953 WARN  [B.fifo.QRpcServer.handler=0,queue=0,port=16020] regionserver.HRegion: Failed getting lock in batch put, row=F680A8D4CF43A6CC66507589B82AC284
java.io.IOException: Timed out waiting for lock for row: F680A8D4CF43A6CC66507589B82AC284
        at org.apache.hadoop.hbase.regionserver.HRegion.getRowLockInternal(HRegion.java:5261)
        at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:3066)
        at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2933)
        at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2875)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.doBatchOp(RSRpcServices.java:715)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.doNonAtomicRegionMutation(RSRpcServices.java:677)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.multi(RSRpcServices.java:2054)
        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32303)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2127)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:107)
        at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:108)
        at java.lang.Thread.run(Thread.java:745)

【解决】
可以在Ambari UI界面修改hbase组件中的Custom hbase-site,在其中增加自定义配置:
<property>
       <name>hbase.rowlock.wait.duration</name>
       <value>90000</value>
       <description> 
       # 以毫秒为单位:每次持续等待多久以获取row lock,也就是每次获取行锁的超时时间.默认30秒
       </description> 
</property>
<property>
            <name>hbase.regionserver.lease.period</name>
            <value>180000</value>
            <description> 
            # 客户端每次获得RegionServer的socket连接持续多久(ms)
            </description> 
</property>

<property>
       <name>hbase.rpc.timeout</name>
       <value>180000</value>
            <description> 
            # 设置rpc多久超时(ms)
            </description> 
</property>

<property>
       <name>hbase.client.scanner.timeout.period</name>
       <value>180000</value>
            <description> 
            # 客户端每次scan|get的超时时间(ms)
            </description> 
</property>

<property>
        <name>hbase.client.scanner.caching</name>
        <value>50</value>
            <description> 
            # 客户端每次扫描的缓存大小,也即一次next获得的行数(这里是50行),默认一行
            # [此项在Ambari上面对应着Number of Fetched Rows when Scanning from Disk]
            </description> 
</property>
阅读全文
0 0