Hive客户端连接失败,提示“Read timed out”
客户端连接失败,提示“Read timed out”
现象描述
安全版本的集群中,HiveServer服务正常的情况下,使用Shell客户端或二次开发工具登录HiveServer失败,日志异常提“Read timed out”示关键字,具体信息如下:
org.apache.hadoop.hive.ha.client.HAConnectMonitor.<init>(HAConnectMonitor.java:54) at org.apache.hadoop.hive.ha.client.HATTransport.open(HATTransport.java:158) at org.apache.hadoop.hive.jdbc.ha.HAHiveConnection.<init>(HAHiveConnection.java:60) ... 6 more Caused by: java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:152) at java.net.SocketInputStream.read(SocketInputStream.java:122) at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127)
可能原因
网络原因导致Hive客户端连接HiveServer时,Socket超时,连接失败。
定位思路
- Hive客户端连接HiveServer时,是建立Socket连接,当网络丢包时,就有可能导致Socket超时,使Hive客户端连接HiveServer失败。
- 执行ping命令检查客户端到HiveServer所在节点的网络连通性与稳定性。
- 当网络经过排查和修复达到稳定后,正常连接耗时在1分钟以内。
处理步骤
- 在客户端所在机器上,执行ping HiveServer所在节点IP地址命令检查Hive客户端与集群网络质量。 如果执行命令后,如果网络不通或者延迟较大,证明网络状况较差。 请联系网络管理员排查网络问题,以保证满足业务使用。
- 增加网络闪断的保护,使用Hive客户端的应用层,增加连接失败重试机