Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hadoop reducer上的JVM崩溃_Java_Hadoop_Jvm - Fatal编程技术网

Java hadoop reducer上的JVM崩溃

Java hadoop reducer上的JVM崩溃,java,hadoop,jvm,Java,Hadoop,Jvm,我正在hadoop上运行java代码,但遇到以下错误: # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f2ffe7e1904, pid=31718, tid=139843231057664 # # JRE version: Java(TM) SE Runtime Environment (8.0_72-b15) (build 1.8.0_72

我正在hadoop上运行java代码,但遇到以下错误:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f2ffe7e1904, pid=31718, tid=139843231057664
#
# JRE version: Java(TM) SE Runtime Environment (8.0_72-b15) (build 1.8.0_72-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.72-b15 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V  [libjvm.so+0x813904]  PhaseIdealLoop::build_loop_late_post(Node*)+0x144
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /hadoop/nm-local-dir/usercache/ihradmin/appcache/application_1479451766852_3736/container_1479451766852_3736_01_000144/hs_err_pid31718.log
#
# Compiler replay data is saved as:
# /hadoop/nm-local-dir/usercache/ihradmin/appcache/application_1479451766852_3736/container_1479451766852_3736_01_000144/replay_pid31718.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
当我转到节点管理器时,所有日志都被聚合,因为
warn.log-aggregation-enable为true
,并且找不到日志hs_err_pid31718.log和replay_pid31718.log

通常情况下,1)reducer运行几分钟后JVM崩溃,2)reducer的自动重试有时会成功,3)某些reducer可以成功而不失败

Hadoop版本是2.6.0,Java是Java8。这不是一个新的环境,我们有很多作业在集群上运行

我的问题是:

  • 在聚合日志并删除文件夹后,我是否可以在任何位置找到hs_err_pid31718.log?或者是否有保留所有本地日志的设置,以便在按纱线聚合日志时检查hs_err_pid31718.log

  • 缩小深潜范围的常见步骤是什么?由于jvm崩溃,我在代码中看不到任何异常。我已经尝试了
    -XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/tmp
    此参数,但没有在主机上转储的堆无法完成reduce任务

  • 谢谢你的建议。

    答案

  • 使用
    -XX:ErrorFile=/hs\u err\u pid.log
    将hs\u错误文件位置设置为首选位置
  • 崩溃是由于JDK错误造成的,这已在JDK9中修复,并且在JDK8更新74之后可以使用Backport
  • 您正在使用JDK8更新72。
    请从升级到最新版本以避免此崩溃。

    这样做,JVM崩溃在升级我们的JDK of hadoop环境时得到解决,尽管我仍然想知道为什么每次都不会发生此崩溃,因为我们使用相同的业务代码和输入。崩溃是由于编译器试图构建理想的图形,编译器将在运行时进行优化和内联,所以它并不总是可复制的。我希望一切都会清楚明白了真的很有帮助。