在《在eclipse下编译hadoop2.0源码》一文中,我详细介绍了如何在eclipse环境和命令行环境下编译hadoop2.0源代码,并简单介绍了如何构建hadoop环境,这篇文章将着重介绍如何在eclipse下调试源代码。

在hadoop2.0中,常用的模块有NameNode,DataNode, ResourceManager, NodeManager, FsShell等。这里我们以调试FsShell和NameNode模块为例。

FsShell命令调试:

FsShell命令是hadoop的Client端(任何hadoop集群上的节点都可以作为Client端)访问hadoop集群的最基本方式。比如 bin/hadoop fs 命令就是客户端访问hadoop文件系统的命令集。我们以bin/hadoop fs -ls / (显示hadoop文件系统根目录下的文件)为例。

  • 在Client节点上的hadoop目录下找到文件bin/hadoop。打开这个脚本,找到如下图所在位置

  • 改成如下图所示:

  • 注意suspent设置为y表示暂停等待,知道调试器(这里是用eclipse中的调试)连接上才继续执行, address=8000表示在8000端口监听请求,也可以换成其他不冲突的端口。

因为调试的FsShell需要hadoop运行时环境,所以首先应当启动hadoop集群。启动过程这里不做介绍,启动成功以后,我们在Client端输入命令, 会显示如下图所示的信息:

这就表示调试环境已经建好并在8000端口开始监听调试请求。下面是在eclipse开始调试的步骤

  • 打开eclipse并找到hadoop-common(上一篇博客介绍了如何将hadoop导入到eclipse中)
  • 在hadoop-common找到文件FsShell.java文件并打开
  • 找到FsShell中的main函数,并在main函数第一行处设置断点。
  • 右键改文件,选择Debug As -> Debug Configurations... 弹出配置对话框
  • 在左侧找到并双击Remote Application,这时会新建一个配置页,主机填Client端对应的IP地址,端口为8000,如下图

  • 点击Debug,现在,你就可以调试刚刚输入的命令了,跟踪该条命令的执行过程。

NameNode调试:

NameNode调试和上面的调试步骤基本类似,下面只做简单的介绍。

  • 调试NameNode需要修改NameNode所在节点的bin/hdfs文件,修改如下:

  改为

  其中,suspend=n,如果设置为y,则可以调试NameNode的启动过程。

  • 启动NameNode
  • 调试NameNode的入口在hadoop-hdfs项目的NameNode.java文件中,找到main函数,并设置断点
  • 同FsShell一样,新建一个Remote Application,填入的主机为NameNode节点所在的IP,端口为8000
  • 点击Debug,调试就可以开始了。

关于eclipse调试hadoop2.0的内容就介绍到这里。现在我们就可以利用调试跟踪hadoop的执行流程,更深入的分析hadoop源代码。 最后甚至可以修改hadoop源代码,加入自己需要的功能。

本文来自博客园,如果查看原文请点击 http://www.cnblogs.com/meibenjin/p/3175679.html

在eclipse下远程调试hadoop2.0的更多相关文章

  1. 在Eclipse下远程调试Beagleboneblack

    安装调试器 1. gdbserver 2. gdb-multiarch 建立工程 新建一个cpp工程,ToolChains选择Cross GCC 这里使用的是arm-linux-gnueabihf-的 ...

  2. tomcat开发远程调试端口以及利用eclipse进行远程调试

    一.tomcat开发远程调试端口 方法1 WIN系统 在catalina.bat里:  SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compi ...

  3. [转载]eclipse的远程调试功能配置

    原文地址:eclipse的远程调试功能配置作者:我的 用途:web应用部署并运行于外部(区别于eclipse环境中启动的)应用服务器中,当出现问题时,可以使用eclipse工程的源代码进行跟踪调试. ...

  4. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

  5. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  6. Window下Eclipse+Tomcat远程调试

    需求:       项目在开发环境跑得好好的,但是当发布到服务器上时,却出现了一些意外的问题.服务器上不可能给你装IDE调试工具啊,又没有很好的日志帮助下,这时候就用到了JVM的Java Platfo ...

  7. 【Java】使用Eclipse进行远程调试,Linux下开启远程调试

    原博地址:http://blog.csdn.net/dfdsggdgg/article/details/50730311 1.center下,在startup.sh文件首行中添加如下语句 declar ...

  8. 【Java】使用Eclipse进行远程调试,Windows下开启远程调试

    原博链接:http://blog.csdn.net/sunyujia/article/details/2614614   今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可 ...

  9. 使用Eclipse进行远程调试(转)

    做开发好多年了,Debug大家肯定都不陌生,绝对称得上是家常便饭了.博主虽不敢妄下断言,但是这里也猜一下,肯定有很多人都没有使用过Remote Debug(远程调试).说来惭愧,博主也是工作了3年才用 ...

随机推荐

  1. Alljoyn 概述(1)

    Alljoyn Overview Feb. 2012- AllJoyn 是什么? • 2011年2月9日发布,由 QuiC(高通创新中心)开发维护的开源软 件项目,采用 Apache license ...

  2. slf4j与log4j

    推荐使用SLF4J(Simple Logging Facade for Java)作为日志的api,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统. ...

  3. hdoj 4310 贪心

    不知为毛,过不了 我的代码: #include<stdio.h> int main(){ int n,a[30],b[30],temp,i,j,s1,s2; double c[30]; w ...

  4. 脚本学习python和linux-shell和jQuery(javascript)

    使用脚本可以方便管理,使用计算机. 打算学脚本来更好地用计算机系统,特别是Linux. 学python因为它开源,而且是C家族的语言,本来也是课程需要,再加上它确实很好,所以非常主打,之前看过perl ...

  5. 解决IE6不支持position:fixed;的问题

    在网页设计中,时常要用到把某个元素始终定位在屏幕上,即使滚动浏览器窗口也不会发生变化. 一般我们会使用position:fixed来进行绝对固定,但IE6并不支持position:fixed属性,所以 ...

  6. Mvvm绑定datagrid或listview的selectItems的方法[转]

    单选,很简单,将SelectedItem与ViewModel的属性进行双向绑定就OK了 多选,由于ListView的SelectedItems不能进行绑定,需要将ListView的SelectionC ...

  7. aix7安装was7、打补丁、更改访问端口、手动启动was、配置was7、部署项目

    1:准备工作  首先了解下我们下面即将用到的aix命令,以及安装包.补丁安装工具.补丁 was7的安装包以及补丁工具都是压缩包形式并且以.tar.gz结尾的 安装包在800MB左右,通常为****_w ...

  8. css3 翻书效果

    div { -webkit-transform-origin: 285px 0; -webkit-transform: translate(1030px, 500px) rotate(32deg); ...

  9. Numpy基础笔记

    Numpy简介 Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包.其部分功能如下: ①ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 ...

  10. thinkphp3.2.2前后台公用类架构问题

    3.13之前好多项目都使用前后台公用类,在lib/action下创建Baseaction做为公共继承类,发现3.2.2里面很多人都用A调用,这样每用一次要用A调用,好麻烦,小编特意偷懒.亲测使用以下方 ...