hadoop reducer上的JVM崩溃

时间:2017-07-11 14:56:22

标签: 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-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

当我转到节点管理器时,自yarn.log-aggregation-enable is true以来聚合了所有日志,并且找不到log hs_err_pid31718.log和replay_pid31718.log。

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

Hadoop版本是2.6.0,Java是Java8。这不是新环境,我们在群集上运行了大量作业。

我的问题:

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

  2. 缩小深潜范围的常见步骤是什么?由于jvm崩溃了,我在代码中看不到任何异常。我已经尝试了-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp这个args但是没有堆转储在主机上没有执行reduce任务。

  3. 感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

答案

  1. 使用-XX:ErrorFile=<your prefered location>/hs_err_pid<pid>.log将hs_error文件位置设置为您喜欢的文件位置。
  2. 崩溃是由于JDK错误JDK-6675699已经在JDK9中修复了,而且在JDK8更新74之后可以使用反向移植。
  3. 您正在使用JDK8更新72。 请从here升级到最新版本以避免此次崩溃。