zoukankan      html  css  js  c++  java
  • Eclipse远程调试HDP源代码

        使用的是自己编译的HDP2.3.0的源代码编译的集群,此文介绍如何使用Eclipse远程调试Hadoop内核源代码,以调试namenode为例进行介绍。

        在/usr/hdp/2.3.0.0-2557/hadoop-hdfs/bin/hdfs.distro 目录下,添加如下内容,这个内容是让namenode在启动的时候,打开调试模式:

        image

        图片中的代码是(不要写错了):

    HADOOP_OPTS="$HADOOP_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n"

        然后使用脚本启动namenode进程:

    [root@n124 sbin]# ./hadoop-daemon.sh --script hdfs start namenode
    starting namenode, logging to /var/log/hadoop/root/hadoop-root-namenode-n124.ccsdp.com.out
    Listening for transport dt_socket at address: 8002
    [root@n124 sbin]# jps
    7635 NameNode
    7744 Jps
    1944 AmbariServer
    [root@n124 sbin]# pwd
    /usr/hdp/2.3.0.0-2557/hadoop/sbin

    这样设置以后,NameNode这个进程会监听两个端口,其中一个就是8002,如下图:

    image

    Eclipse中的设置如下,Debug-> Debug configurations->Remote Java Application

    image

    image

    在eclipse中,如下位置打一个端点:

    image

    设置好Eclipse后,在shell中,使用命令行在hdfs中创建一个文件夹:

    [root@n124 sbin]# hadoop fs -mkdir /user/root/zhangchao

    可以看到Eclipse中的代码进入调试模式,然后就可以一步一步的进行调试,查看到每一步运行的情况:

    image

    调试的过程中,将Eclipse的进程优先级设置成Very high,可以让Eclipse的反映快不少,如果用默认的优先级,Eclipse将会非常卡:

    image

    在调试的过程中,发现ipc/Server.java这个文件中的,run方法,会不断的监听来自datanode的心跳数据,这个地方如果打上端点,会不断的被中断:

    image

    在Shell上,创建一个目录 hadoop fs -mkdir /user/zhangchao/32,然后可以在调试的过程中,发现ClientProtocol.mkdirs从客户端传递到server:

    image

  • 相关阅读:
    BZOJ-1034: [ZJOI2008]泡泡堂BNB (田忌赛马贪心)
    BZOJ-2190: [SDOI2008]仪仗队 (欧拉函数)
    BZOJ-1864: [Zjoi2006]三色二叉树 (julao都说简单的树形DP)
    BZOJ-2657: [Zjoi2012]旅游(journey) (树形DP求最长链)
    BZOJ-2241: [SDOI2011]打地鼠 (模拟+枚举)
    BZOJ-1207: [HNOI2004]打鼹鼠 (LIS类似DP)
    BZOJ-1821: [JSOI2010]Group 部落划分 Group (二分+并查集)
    BZOJ-1218: [HNOI2003]激光炸弹 (前缀和+模拟)
    [SinGuLaRiTy] ZKW线段树
    [SinGuLaRiTy] 字节大小
  • 原文地址:https://www.cnblogs.com/justinzhang/p/5301140.html
Copyright © 2011-2022 走看看