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

  • 相关阅读:
    ASP.NET 实现验证码以及刷新验证码
    使用纯生js操作cookie
    TesseractOCR Tutorials
    c# 解析JSON的几种办法
    ElasticSearch常用查询命令-kibana中使用
    ElasticSearch集成IK分词器
    Typora使用教程 之 PicGo集成做图床
    Kibana-CentOS7单机安装测试
    Elasticsearch-CentOS7单机安装测试
    CentOS7安装JDK8
  • 原文地址:https://www.cnblogs.com/justinzhang/p/5301140.html
Copyright © 2011-2022 走看看