zoukankan      html  css  js  c++  java
  • hadoop下远程调试方法

    JPDA 简介
    Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用程序。JPDA 由两个接口(分别是 JVM Tool Interface 和 JDI)、一个协议(Java Debug Wire Protocol)和两个用于合并它们的软件组件(后端和前端)组成。它的设计目的是让调试人员在任何环境中都可以进行调试。
    更详细的介绍,您可以参考使用 Eclipse 远程调试 Java 应用程序
    JDWP 设置
    JVM本身就支持远程调试,Eclipse也支持JDWP,只需要在各模块的JVM启动时加载以下参数:

    dt_socket表示使用套接字传输。
    address=8000
    JVM在8000端口上监听请求,这个设定为一个不冲突的端口即可。
    server=y
    y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
    suspend=y
    y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。

    需要在$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件的最后添加你想debug的进程

    #远程调试namenode
    export HADOOP_NAMENODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y"
    #远程调试datanode
    export HADOOP_DATANODE_OPTS="-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y"

    #远程调试RM
    export YARN_RESOURCEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"

    #远程调试NM
    export YARN_NODEMANAGER_OPTS="-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y"

    例:
    如果要调试datanode ,使用hadoop-daemon.sh start datanode
    如果要调试namenode,使用hadoop-daemon.sh start namenode
    然后在eclipse中关联源码,并启用远程调试模式,启动某个类的main()函数。

  • 相关阅读:
    POJ 2195 Going Home(费用流)
    HDU 2485 Destroying the bus stations(费用流)
    POJ 3281 Dining(最大流)
    POJ 1122 FDNY to the Rescue!(最短路+路径输出)
    HDU 4747 Mex(线段树)
    POJ 2337 Catenyms
    UVa 10328 Coin Toss(Java大数+递推)
    HDU 1811 Rank of Tetris(拓扑排序+并查集)
    ZOJ 3747 Attack on Titans
    UVa 11404 回文子序列(LCS求最长回文串长度)
  • 原文地址:https://www.cnblogs.com/snowbook/p/5803603.html
Copyright © 2011-2022 走看看