基于Hiveserver的查询平台Timeout异常排查

简介:

线上查询平台刚上线时经常跑一个查询跑到5分钟左右就抛异常了,因为是基于Hiveserver2的,先看一下是否在目标端超时设置有问题.

对于Hiveserver2的超时设置有2个参数来决定的(Hive 0.10),默认值如下:

1
2
3
4
5
6
7
8
9
10
< 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 >
1
2
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));

1
2
3
4
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分钟:

1
2
3
< 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()异常).

对于分层架构的超时设置必须要协调好啊:)


本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1334513,如需转载请自行联系原作者



相关文章
|
Java
Notepad++ 中如何将代码格式化
Notepad++ 中如何将代码格式化   在阅读别人的代码时偶尔会遇到格式很乱,阅读起来很费劲的情况,若手动改,很容易出错且很费时间,这时可以借助一些专业的编辑器来格式化代码,NotePad++是一个轻量级的代码编辑器,占用内存少,运行速度快,但是Notepad++本身是不带这个格式化功能的,但他支持NppAStyle插件 完成格式化。
4990 0
|
6月前
|
人工智能
智能体(AI Agent)开发实战之【Coze】(一)治愈和疗愈系图文一键量产
智能体(AI Agent)开发实战之【Coze】(一)治愈和疗愈系图文一键量产(附保姆级工作流)
智能体(AI Agent)开发实战之【Coze】(一)治愈和疗愈系图文一键量产
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
369 8
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
4322 2
|
监控 数据可视化 数据挖掘
数字化转型项目管理:轻松驾驭关键挑战
本文《数字化项目管理:从入门到精通的实践指南》探讨了数字化项目管理的核心要素、常见误区及实战策略。文中介绍了项目管理的目的、SMART原则、瀑布式与敏捷式交付方式的区别,以及项目成功的关键要素,包括风险管理、需求管理、成本控制、质量保障和沟通管理。此外,还讨论了项目管理中的挑战及解决方案,并推荐了一些提升效率的工具。
|
Java C++
jni编程(windows+JDK11+clion)
jni编程(windows+JDK11+clion)
261 1
|
Java API
DirectByteBuffer内存释放原理
DirectByteBuffer内存释放原理
224 0
|
前端开发 JavaScript 安全
Web前端开发中的三大主流框架
Web前端开发中的三大主流框架
|
Web App开发 安全 数据安全/隐私保护
|
存储 SQL 关系型数据库
MySql加密存储的数据,如何模糊搜索?
MySql加密存储的数据,如何模糊搜索?
700 0