基于Hiveserver的查询平台Timeout异常排查
2013-12-01 23:33
465 查看
线上查询平台刚上线时经常跑一个查询跑到5分钟左右就抛异常了,因为是基于Hiveserver2的,先看一下是否在目标端超时设置有问题.对于Hiveserver2的超时设置有2个参数来决定的(Hive 0.10),默认值如下:
通过代码可见,在默认情况下会返回一个TServerSocketKeepAlive,也就是说在Hiveserver的层面是不会发生超时的,只有当hive.server.tcp.keepalive设置为false时才会在读取数据时将hive.server.read.socket.timeout设置为超时时间.既然末端不会超时那就从头看:Nginx Proxy端设置的读取超时时间proxy_read_timeout设置了30分钟,应该没问题的;接下来就是Tomcat的会话超时时间设置,是保持默认的30分钟:
对于分层架构的超时设置必须要协调好啊:)
<property> <name>hive.server.read.socket.timeout</name> <value>10</value> <description>Timeout for theHiveServer to close the connection if no response from the client in N seconds,defaults to 10 seconds.</description> </property> <property> <name>hive.server.tcp.keepalive</name> <value>true</value> <description>Whether to enable TCPkeepalive for the HiveServer. Keepalive will prevent accumulation of half-openconnections.</description> </property>
booleantcpKeepAlive = conf.getBoolVar(HiveConf.ConfVars.SERVER_TCP_KEEP_ALIVE); TServerTransportserverTransport = tcpKeepAlive ? new TServerSocketKeepAlive(cli.port) : newTServerSocket(cli.port, 1000 *conf.getIntVar(HiveConf.ConfVars.SERVER_READ_SOCKET_TIMEOUT));
Socket result = serverSocket_.accept(); TSocket result2 = new TSocket(result); result2.setTimeout(clientTimeout_); return result2;
通过代码可见,在默认情况下会返回一个TServerSocketKeepAlive,也就是说在Hiveserver的层面是不会发生超时的,只有当hive.server.tcp.keepalive设置为false时才会在读取数据时将hive.server.read.socket.timeout设置为超时时间.既然末端不会超时那就从头看:Nginx Proxy端设置的读取超时时间proxy_read_timeout设置了30分钟,应该没问题的;接下来就是Tomcat的会话超时时间设置,是保持默认的30分钟:
<session-config> <session-timeout>30</session-timeout> </session-config>到这里才想起来我们的HiveServer通过haproxy做了HA,看了一下果然这里的超时时间设置的是5分钟: timeout client 300000 timeout server 300000最后修改为30分钟解决(注意这里client,server的超时都必须设置,否则:server端没设置则在HiveStatment.execute()时报异常,而server端设置client端没设置则会抛出HiveQueryResult cannotcreate resultset retrieveSchema()异常).
对于分层架构的超时设置必须要协调好啊:)
相关文章推荐
- 【数据平台】基于pyhs2库Python作为client driver连接HiveServer
- dubbo产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response ti
- 异常:Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out
- 项目展示: 基于windows8 平台下研发的互动数字标牌 (旅游公共信息查询)
- 基于Impala平台打造交互查询系统
- 基于hadoop集群的hive 安装及异常解决方法
- hregionserver挂死,日志出现Session expired异常排查
- 给Clouderamanager集群里安装基于Hive的大数据实时分析查询引擎工具Impala步骤(图文详解)
- 基于0.14.0版本配置HiveServer2
- 基于Impala平台打造交互查询系统
- Hive删表或删除分区HDFS中文件未删除时的查询异常
- 异常:Sys.WebForms.PageRequestManagerTimeoutException: The server request timed out
- 基于TBDS的flume异常问题排查过程
- HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查
- HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查
- RDIFramework.NET — 基于.NET的快速信息化系统开发框架- 5.4平台日志、异常管理、生成自动升级配置文件模块
- Ios平台游戏异常闪退问题之get_numerous_trampoline排查记录
- Serverless 应用开发指南:基于 Serverless 与 Lambda 的微信公共平台
- 使用hive查询hdfs数据时报字段类型异常
- CDH HiveServer2异常退出