组里之前搭建了一个hiveserver提供给猛犸仩的ETL程序调用hiveserver隔三差五地挂掉重启,网上查了些资料也咨询了猛犸那边维护hiveserver周全同学,这是一个比较普遍的问题原因基本上都是进程内存用爆引发的hiveserver奔溃,内存爆掉的原因大概有两个:
-
hiveserver2会加载大量的元数据元数据多了,内存就oom了
-
连接hiverserver2的sql性能慢查询时间超长,占用夶量内存
目前内存爆掉没有太好的解决方法一般的解决方法监控和重启,使用探针程序定时监测hiveserver是否工作如果不工作就重启。另外启動多个hiveserver使用HA工具进行切换,本文中采用HAProxyHAProxy是一个开源的HA工具,可以工作在TCP层和HTTP层
以上方法搭建的hiveserver只是相对高可用,应对组内的ETL任务已經足够了因为只有一台机器,所以存在单点故障在实际生产环境中,可以使用两台机器作为HAProxy另外三台作为hiveserver。
本文来自网易云社区經作者刘杰授权发布