hiveserver2服务异常停止java.lang.OutOfMemoryError: Java heap space

原创 2017年01月03日 10:52:38
2017-01-02 15:34:04,461 WARN  [IPC Client (188363230) connection to nn01/192.168.1.4:8020 from hive]: ipc.Client (Client.java:run(955)) - Unexpected error reading responses on connection Thread[IPC Client (188363230) connection to nn01.100.cloud/172.16.8.4:8020 from hive,5,main]
java.lang.OutOfMemoryError: Java heap space
    at com.google.protobuf.CodedInputStream.<init>(CodedInputStream.java:573)
    at com.google.protobuf.CodedInputStream.newInstance(CodedInputStream.java:55)
    at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:199)
    at com.google.protobuf.AbstractParser.parsePartialDelimitedFrom(AbstractParser.java:241)
    at com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:253)
    at com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:259)
    at com.google.protobuf.AbstractParser.parseDelimitedFrom(AbstractParser.java:49)
    at org.apache.hadoop.ipc.protobuf.RpcHeaderProtos$RpcResponseHeaderProto.parseDelimitedFrom(RpcHeaderProtos.java:2364)
    at org.apache.hadoop.ipc.Client$Connection.receiveRpcResponse(Client.java:1055)
    at org.apache.hadoop.ipc.Client$Connection.run(Client.java:949)
2017-01-02 15:34:03,365 FATAL [Thread-51]: thrift.ThriftCLIService (ThriftBinaryCLIService.java:run(91)) - Error starting HiveServer2: could not start ThriftBinaryCLIService
java.lang.OutOfMemoryError: Java heap space
    at java.io.BufferedOutputStream.<init>(BufferedOutputStream.java:76)
    at org.apache.thrift.transport.TSocket.<init>(TSocket.java:78)
    at org.apache.thrift.transport.TServerSocket.acceptImpl(TServerSocket.java:114)
    at org.apache.thrift.transport.TServerSocket.acceptImpl(TServerSocket.java:35)
    at org.apache.thrift.transport.TServerTransport.accept(TServerTransport.java:31)
    at org.apache.thrift.server.TThreadPoolServer.serve(TThreadPoolServer.java:121)
    at org.apache.hive.service.cli.thrift.ThriftBinaryCLIService.run(ThriftBinaryCLIService.java:86)
    at java.lang.Thread.run(Thread.java:745)
2017-01-02 15:34:29,186 INFO  [Thread-50]: server.HiveServer2 (HiveServer2.java:stop(266)) - Shutting down HiveServer2
2017-01-02 15:34:29,186 INFO  [Thread-50]: thrift.ThriftCLIService (ThriftCLIService.java:stop(137)) - Thrift server has stopped
2017-01-02 15:34:29,187 INFO  [Thread-50]: service.AbstractService (AbstractService.java:stop(125)) - Service:ThriftBinaryCLIService is stopped.
2017-01-02 15:34:29,187 INFO  [Thread-50]: service.AbstractService (AbstractService.java:stop(125)) - Service:OperationManager is stopped.
2017-01-02 15:34:29,187 INFO  [Thread-50]: service.AbstractService (AbstractService.java:stop(125)) - Service:SessionManager is stopped.
2017-01-02 15:34:29,188 INFO  [Thread-3]: server.HiveServer2 (HiveStringUtils.java:run(679)) - SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down HiveServer2 at nn02.100.cloud/192.168.1.5

分析及解决:

java.lang.OutOfMemoryError: Java heap space内存溢出报错

This Error happened during connect hiveserver2 via beeline, both happened from hiveserver node and remote node.

heapsize太小了,可以适当的调大些
Root cause, the heapsize of hadoop opts is too small, need to increase the size in hive-env.sh as bold:
if [ "$SERVICE" = "cli" ]; then
   if [ -z "$DEBUG" ]; then
     export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -Xmx12288m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit"
   else
     export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -Xmx12288m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit"
   fi
fi

# The heap size of the jvm stared by hive shell script can be controlled via:
#
export HADOOP_HEAPSIZE=2048

继续分析查看下进程:

监控语句如下:

jstat -gcutil [进程号] 5000 --每5秒打印一次jvm各个内存区的状态

另外找了一个监控系统内存的语句:

vmstat | sed -n '/[0-9]/p'  


观察2天后发现新生代和老年代都已经爆满,永久代几乎爆满,jvm一直在做full GC,但是没有效果,各个内存区都被占用了。
就日志来看,老年代和持久代的内存只要上去了,就再没有下降过,而当这两块区域饱和后,新生代也出现了这种现象。

是有什么资源没释放吧?一看代码,果然,有的连接没有关闭!

如果还是有问题,hive0.14版本,自身也存在着bug,可以考虑进行定期重启hiveserver2服务,别笑实际工作中很多大的公司都是这样做的。

参考:

http://blog.csdn.net/gklifg/article/details/50418109

http://blog.csdn.net/lulynn/article/details/46455097

版权声明:原创文章,欢迎转载但请备注来源及原文链接

相关文章推荐

Hive学习之HiveServer2服务端配置与启动

在之前的学习和实践Hive中,使用的都是CLI或者hive –e的方式,该方式仅允许使用HiveQL执行查询、更新等操作,并且该方式比较笨拙单一。幸好Hive提供了轻客户端的实现,通过HiveServ...

Hive hiveserver2 配置运行

1:运行 命令行模式: hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001 服务模式: hiveser...
  • wind520
  • wind520
  • 2015年03月05日 17:16
  • 29950

Hive的hiveserver2后台开启和关闭

前提:hive/bin配置了环境变量。如果没有配置,cd到 hive目录下的bin里,再执行。 开启命令: nohup hive --service hiveserver2 & 产生...

hiveserver2遇到的问题

对于hiveserver,看教程是直接一个bin/hiveserver指令就启动了,但是我的总是不行,贴下输出: [root@hadoop apache-hive-2.1.1-bin]# bin/...

hadoop hive执行count(*)提示OutOfMemoryError: Java heap space

昨天在把hive部署到hadoop2.0 HA MR1集群中的时候,hive执行count(*)出错,日志为: java.lang.Exception: java.lang.OutOfMemoryEr...
  • sanms
  • sanms
  • 2013年11月15日 15:35
  • 4125

java.lang.OutOfMemoryError: Java heap space解决方法

 //首先检查程序有没有限入死循环这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问...
  • jq_diy
  • jq_diy
  • 2009年05月06日 11:39
  • 152150

记一次hive的内存溢出(OutOfMemoryError: Java heap space)排查

刚刚从java组转岗找数据组,学习大数据的知识,开发语言也从java转到python新奇之外也遇到了诸多问题,其中最令我头疼的就是在hive上的统计任务总是三天两头地报告OutOfMemory一开始因...
  • gklifg
  • gklifg
  • 2015年12月28日 14:41
  • 4896

解决Eclipse和MyEclipsejava.lang.OutOfMemoryError Java heap space的错误

Eclipse和MyEclipse出现错误:java.lang.OutOfMemoryError: Java heap space的错误,很熟悉的错误信息,可咋就想不起来在哪里设JVM的参数啊。请看下...

hive on tez Caused by: java.lang.OutOfMemoryError: Java heap space

昨天进行两个hive表关联导出数据,不幸的是爆出如下错误: Status: Failed Vertex failed, vertexName=Map 5, vertexId=vertex_1443...

spark 使用中会遇到的一些问题及解决思路

7 内存溢出问题     在Spark中使用hql方法执行hive语句时,由于其在查询过程中调用的是Hive的获取元数据信息、SQL解析,并且使用Cglib等进行序列化反序列化,中间可能产生较多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hiveserver2服务异常停止java.lang.OutOfMemoryError: Java heap space
举报原因:
原因补充:

(最多只允许输入30个字)