• Hiveserver2 OOM问题解法


    数据平台做一些计算需要通过hive jdbc方式连到hiveserver2执行job,但是hiveserver 正常运行一段时间后,总是会报如下OOM:

    偶尔碰到未解决问题,重启HiveServer2,印证了那句老话,重启能解决80%以上的问题,但是好景不长,经过长期的观察,发现是HiveServer进程GC状况:

    hiveserver2_gc

    到这一步可以断定有资源没有释放, 再看下Heap对象分布:

    hiveserver2_jmaphisto

    看到这里我确实找不到招了,HashMap HashTable代码在Hive源码遍地都是,压根无法定位是哪个代码片段存在内存泄漏

    然后我尝试去官网查下别人是否也碰到过同样的问题,果然在jira里搜索 “HiveServer2 OutOfMemoryError” ,存在一个Case跟我的情况一模一样,但Bug是Open状态,也就是还未解决!!  https://issues.apache.org/jira/browse/HIVE-9893

    有问题就解决问题,考虑到HiveServer2是单点,对系统高可用、稳定性都会带来隐患;于是我想到了一个解决办法——开启多个HiveServer2,上层用Haprocxy来转发请求,再通过服务拨测实时对OOM的节点报警通知,以便研发能第一时间发现问题。但OOM依然存在,治标不治本。

    这个Bug一直持续了将近半年,直到最近在调研Spark并计划将Spark取代Mapreduce来提升平台的计算效率时,发现Spark-sql能完美的兼容Hive SQL,同时还提供了ThriftServer(就是SparkHiveServer),不止于此,由于Spark更好的使用了内存,期执行效率是MR/Hive的10倍以上。

    其实就是在Spark集群上执行$SPARK_HOME/sbin/start-thriftserver.sh –master=spark://MASTER:7077 就默认开启了10000端口,该服务可以取代hiveserver2,如果与HiveServer2在同一台服务器上,可以先shutdown hiveserver2,再启动spark thriftserver。运行了1个礼拜,服务非常稳定,GC也正常!

  • 相关阅读:
    机器学习之逻辑回归
    机器学习之线性回归与模型保存
    机器学习之决策树
    机器学习之贝叶斯算法
    机器学习之KNN算法
    算法基础与开发流程
    特征选择与特征降维
    特征预处理
    RSA加密算法和签名算法
    Java中使用OpenSSL生成的RSA公私钥
  • 原文地址:https://www.cnblogs.com/cxhfuujust/p/7568314.html
Copyright © 2020-2023  润新知