压力环境下HiveServer报错


集群规模:

37+3台物理机,每台128G内存;CPU:2*16C;SATA磁盘,2T*12

hadoop社区版本:**

商业版本:FusionInsight_HD_V100R002C30

MetaStore:高斯数据库(Postgresql)

问题描述:

关闭流控开关之后,2016-08-09到08-10号出现多次主备倒换,查看单个HiveServer连接个数大约为500左右。

问题分析:

当前版本上Hive服务的几个背景:

  1. HiveServer区分主备模式,单一时刻内,只有一个HiveServer对外提供服务。

  2. 主备选举的触发条件是HiveServer与ZooKeeper之前的连接断开超过配置的超时时间hive.zookeeper.session.timeout。

  3. HiveServer当前支持对所有的连接进行并行处理,在并行过程中,依据SQL的复杂程度,越复杂就越消耗内存。

基于上述3个背景特点,结合现网业务量(同时关闭了流控系统),在业务暴涨并且SQL业务复杂的情况下,对HiveServer的内存消耗非常大,当前HiveServer内存配置为16G,已经比较大了,在内存不够时,出现GC停顿的时间最长可以达到1分钟左右。超过了当前配置的ZK连接超时时间45s,从而引发主备选举执行倒换。

例如8月10日凌晨5点多的这次切换,GC时间长达55秒。

根本原因:

业务连接过多,超越了当前HiveServer配置的物理极限,导致GC时间太长引发主备倒换。

解决措施

临时解决措施:

暂时减缓系统压力,增加HiveServer的内存,同时给ZK设置更长的超时时间以满足大内存引发的GC时间长的状况,保持HiveServer持续运行,能支撑更多连接

最终解决措施

升级到FusionInsight V100R002C60,在该版本中,HiveServer采用多活架构,在单个HiveServer处理能力不足的情况下,可以通过增加HiveServer的数量来达到负载分担的效果,提供更多的处理能力。并进行合理进行的物理参数配置,开启HiveServer的流控机制,确保HiveServer工作在其能承受的范围内

规避措施

暂时减缓系统压力,增加HiveServer的内存,同时给ZK设置更长的超时时间以满足大内存引发的GC时间长的状况,保持HiveServer持续运行,能支撑更多连接。

results matching ""

    No results matching ""