某行Hive无法启动问题报告

发布时间:  2015-05-13 浏览次数:  419 下载次数:  0
问题描述

125日某行报告HADOOP运行环境的HiveServer主备进程状态出现Unknown等不正常状态,批量请求大量失败。使用命令行也无法连接到HiveServer

告警信息

1、从HiveServer GC日志发现,进程一直处于GC状态,每30秒钟发生一次GC。如下:


2、从HiveServer运行日志发现,由于不停在GCHiveServerZK不断发生断连重连,触发主备选举,造成主备进程状态不正常。如下:


3、统计HiveServer的连接请求数,从2014-12-05 12:17:04,1822014-12-05 12:51:49,608累计共有18101个连接请求。如下:


 

4、同时在现场环境的某台客户端,使用Linux命令“netstat –anp | grep 10000 | wc –l”统计当时的连接数也超过1000多。

处理过程

HiveServer侧进行流量控制,避免大量客户端连接。

流控配置参数如下:


//每一个用户最多建立800/2=400个连接

hive.server.session.control.maxconnection.peruser         800

//hiveserver最多接受800/2=400个连接

hive.server.session.control.maxconnections                800

//连接建立控制时间窗,默认为1分钟

hive.server.timewindow.delaytime                          60

//连接建立控制时间窗内最多可以建立200/2=100个连接

hive.server.timewindow.maxsessions.in.delaytime           200

 

 

根因

如此大量的连接请求,在HiveServer侧会产生大量的线程,内存资源占用巨大,资源耗尽,触发GC垃圾回收。进一步造成进程占用CPU极高,与ZooKeeper连接中断,不断进行选举,发生状态异常。

解决方案

HiveServer侧进行流量控制,根据实际情况进行参数配置,避免因大量客户端连接,从而造成HiveServer异常。

建议与总结

在HADOOP部署环境中,需根据现场情况,合理的设置HiveServer的参数,避免因参数设置不合理导致异常。

END