文档首页/
MapReduce服务 MRS/
故障排除/
使用Hive/
beeline客户端报错“Failed to execute session hooks: over max connections”
更新时间:2024-05-28 GMT+08:00
beeline客户端报错“Failed to execute session hooks: over max connections”
问题背景与现象
HiveServer连接的最大连接数默认为200,当超过200时,beeline会报Failed to execute session hooks: over max connections:
beeline> [root@172-27-16-38 c70client]# beeline Connecting to jdbc:hive2://129.188.82.38:24002,129.188.82.36:24002,129.188.82.35:24002/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;sasl.qop=auth-conf;auth=KERBEROS;principal=hive/hadoop.hadoop.com@HADOOP.COM Debug is true storeKey false useTicketCache true useKeyTab false doNotPrompt false ticketCache is null isInitiator true KeyTab is null refreshKrb5Config is false principal is null tryFirstPass is false useFirstPass is false storePass is false clearPass is false Acquire TGT from Cache Principal is xxx@HADOOP.COM Commit Succeeded Error: Failed to execute session hooks: over max connections. (state=,code=0) Beeline version 1.2.1 by Apache Hive
查看HiveServer日志(/var/log/Bigdata/hive/hiveserver/hive.log)报over max connections错误:
2018-05-03 04:31:56,728 | WARN | HiveServer2-Handler-Pool: Thread-137 | Error opening session: | org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:542) org.apache.hive.service.cli.HiveSQLException: Failed to execute session hooks: over max connections. at org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:322) at org.apache.hive.service.cli.CLIService.openSessionWithImpersonation(CLIService.java:189) at org.apache.hive.service.cli.thrift.ThriftCLIService.getSessionHandle(ThriftCLIService.java:663) at org.apache.hive.service.cli.thrift.ThriftCLIService.OpenSession(ThriftCLIService.java:527) at org.apache.hive.service.cli.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1257) at org.apache.hive.service.cli.thrift.TCLIService$Processor$OpenSession.getResult(TCLIService.java:1242) at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) at org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor.process(HadoopThriftAuthBridge.java:710) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: org.apache.hive.service.cli.HiveSQLException: over max connections. at org.apache.hadoop.hive.transporthook.SessionControllerTsaslTransportHook.checkTotalSessionNumber(SessionControllerTsaslTransportHook.java:208) at org.apache.hadoop.hive.transporthook.SessionControllerTsaslTransportHook.postOpen(SessionControllerTsaslTransportHook.java:163) at org.apache.hadoop.hive.transporthook.SessionControllerTsaslTransportHook.run(SessionControllerTsaslTransportHook.java:134) at org.apache.hive.service.cli.session.SessionManager.executeSessionHooks(SessionManager.java:432) at org.apache.hive.service.cli.session.SessionManager.openSession(SessionManager.java:314) ... 12 more
原因分析
业务量大导致连接HiveServer单个节点最大连接数超过了200,需要调大连接HiveServer实例的最大连接数。
解决办法
- 进入Hive服务配置页面:
- MRS 3.x之前版本,单击集群名称,登录集群详情页面,选择“组件管理 > Hive > 服务配置”,单击“基础配置”下拉菜单,选择“全部配置”。
如果集群详情页面没有“组件管理”页签,请先完成IAM用户同步(在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步)。
- MRS 3.x及后续版本,登录FusionInsight Manager,然后选择“集群 > 服务 > Hive > 配置 > 全部配置”。
- MRS 3.x之前版本,单击集群名称,登录集群详情页面,选择“组件管理 > Hive > 服务配置”,单击“基础配置”下拉菜单,选择“全部配置”。
- 搜索hive.server.session.control.maxconnections配置项,并修改hive.server.session.control.maxconnections配置的值到合适值,不能超过1000。
- 保存配置并重启受影响的服务或者实例。
父主题: 使用Hive