【问题标题】:JVM crash on hadoop reducerhadoop reducer 上的 JVM 崩溃
【发布时间】:2017-07-11 14:56:22
【问题描述】:

我在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开始的所有日志都汇总了,找不到日志hs_err_pid31718.log和replay_pid31718.log。

通常 1) JVM 在 reducer 几分钟后崩溃,2) 有时 reducer 的自动重试可以成功,3) 一些 reducer 可以成功而没有失败。

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

我的问题:

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

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

感谢您的任何建议。

【问题讨论】:

    标签: java hadoop jvm


    【解决方案1】:

    答案

    1. 使用 -XX:ErrorFile=<your prefered location>/hs_err_pid<pid>.log 将 hs_error 文件位置设置为您喜欢的位置。
    2. 崩溃是由于 JDK 错误JDK-6675699 已在 JDK9 中修复,并且在 JDK8 更新 74 之后提供反向移植。

    您正在使用 JDK8 更新 72。 请从here 升级到最新版本以避免此崩溃。

    【讨论】:

    • 这行得通,当我们升级我们的hadoop环境的JDK时,JVM崩溃得到了解决,尽管我仍然想知道为什么每次都没有发生这种崩溃,因为我们使用相同的业务代码和输入。
    • 崩溃是由于编译器试图构建理想图,编译器会在运行时进行优化和内联,所以它并不总是可重现的。我希望它会很清楚。
    • 知道了,真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2014-10-13
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多