一.场景分析
大数据环境频繁使用metastore连接HBase加载数据时,偶尔会抛出hbase.rpc.timeout异常导致任务直接失败的情况。
异常信息:
Caused by: org.apache.hadoop.hbase.ipc.CallTimeoutException: Call id=2, waitTime=600020, operationTimeout=600000 expired.
at org.apache.hadoop.hbase.ipc.Call.checkAndSetTimeout(Call.java:73)
at org.apache.hadoop.hbase.ipc.RpcClientImpl.call(RpcClientImpl.java:1245)
... 13 more
或
org.apache.hadoop.hbase.regionserver.LeaseException: lease '5008606692699215376' does not exist
或
WARN org.apache.hadoop.ipc.HBaseServer: IPC Server listener on 60020: readAndProcess threw exception java.io.IOException: Connection reset by peer. Count of bytes read: 0
java.io.IOException: Connection reset by peer
一般都是rpc.timeout的默认时长60s内请求没有获取到响应,客户端直接关闭导致的,适当调大该参数有利于应对高并发的场景。
二.解决方案【以Spark程序为例】
动态指定hbase.rpc.timeout参数:
.config("hbase.rpc.timeout", "300000") // 设置rpc连接超时时间为5分钟

本文分析了在大数据环境中,频繁使用metastore连接HBase加载数据时出现的hbase.rpc.timeout异常原因,通常由于60s内未获取响应导致。通过调整Spark程序中hbase.rpc.timeout参数至5分钟,有效解决了高并发场景下任务失败的问题。

2696

被折叠的 条评论
为什么被折叠?



