在eclipse下远程调试hadoop2.0

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

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

FsShell命令调试:eclipse

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端输入命令, 会显示以下图所示的信息:oop

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

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

  • 点击Debug,如今,你就能够调试刚刚输入的命令了,跟踪该条命令的执行过程。

NameNode调试:命令行

NameNode调试和上面的调试步骤基本相似,下面只作简单的介绍。3d

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

 

  改成调试

  其中,suspend=n,若是设置为y,则能够调试NameNode的启动过程。htm

  • 启动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

相关文章
相关标签/搜索