折腾hadoop的调试很久了,一直都没折腾对,查过很多资料,但是都没试出来,最终在不断地尝试当中调试出来了,所以想把这个过程记录下来,和大家分享一下。

调试分为两部分,MapReduce的调试和源码的调试。

MapReduce的调试很简单,首先要部署好hadoop,这个我就不说了,自己去百度。部署好之后,下载Hadoop对应的eclipse插件,有了这个插件之后,变得异常简单。

  这是我在网上下的hadoop1.1.2的eclipse插件的地址:http://download.csdn.net/detail/cenyuhaiwork/5716051

  下载完毕之后,把它放入eclipse目录的dropins文件夹中即可,然后重启eclipse。

  打开windows preferences 中,发现有Hadoop Map/Reduce就说明已经成功了。

打开window show View ,选择Map/Reduce Locations

编辑Map/Reduce Locations

修改成实际的Ip地址和端口即可。

  设置完毕,开始新建工程。

  点击File,新建工程,选择Map/Reduce Project.

新建工程之后,然后新建一个类,我们可以把工程里面的examples里面的WorkCount拿出来试验一下,直接点调试即可开始,就像我们正常调试程序一样。examples里面还提供了其他很多的例子,大家可以去看看挺好的。

  好了,现在我们开始进入hadoop源码的调试当中,在调试之前我们首先要把源码处理成不报错的状态。

把源码导入eclipse当中,源码可以在发布版的hadoop的src文件夹中找,然后我们导入jar,右键点击属性,选择java Build path,点击add jars,把发布版的lib文件夹中所有的jar包都导入。

然后我们再点击Source标签页,去掉多余的内容,我们只需要编译核心的几个目录即可,多编译因为缺少一些别的jar包报错,比如ant的。

先删掉原来的src目录,然后重新添加,我点Add Folder添加了一下目录,别的我就没有编译了。

然后再点击左侧的Java Compiler,选择子项Error/Warnning ,如下图所示,把Error改成Warning.

点击Ok,设置完毕,可以开始Build啦。

好,我们打开hadoop生产环境下的bin目录下的hadoop,我们以调试NameNode为例子,找到elif ["COMMAND" = "namenode"]这一段,在HADOOP_OPTS

的字符串后面,添加-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000。

其中suspend表示是否挂起等待调试连接,这里我没有让它挂起,有需要的朋友可以改成y,让它挂起,那样效果很明显,一直等着你连接。

这边就算设置完毕了。可以启动hadoop,命令行会出现,8000端口已经被监听的提示,然后在Eclipse这边打开NameNode的代码,打上断点,然后打开Debug Configurations 面板,在左侧选择Remote Java Application,如下图:

点击Debug,然后进入熟悉的debug页面就是成功啦!

分享结束,有什么不明白可以留言。

hadoop的调试的更多相关文章

  1. 通过win下的eclipse连接虚拟机中伪分布的hadoop进行调试

    VMware虚拟机配置Ubuntu桥接方式(Bridged)使虚拟机和宿主机能互相ping通, 通过win下的eclipse连接虚拟机中伪分布的hadoop进行调试 1.设置Bridged上网方式 V ...

  2. hadoop本地调试方法

    Mapreduce 是Hadoop上一个进行分布式数据运算和统计的框架,但是每次运行程序的时候都需要将程序打包并上传的集群环境中运行,这就会让程序的调试变得十分不方便.所以在这里写下这篇博客和大家交流 ...

  3. Hadoop本地调试

    windows上先调试该程序,然后再转到linux下. 程序运行的过程中, 报 Failed to locate the winutils binary in the hadoop binary pa ...

  4. 【转】使用vnc连接linux服务器方便hadoop开发调试

    VNC(Virtual Network Computing)它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上. 类似的软件在Windows服务器中包含的"Terminal Serve ...

  5. windows下Eclipse远程连接linux hadoop远程调试 经验(一)

    环境 Windows 7 64bit JDK 1.6.0_45  (i586) JDK 1.7.0_51  (i586) Eclipse Kepler Eclipse -plugin-1.2.1.ja ...

  6. Hadoop学习之配置Eclipse远程调试Hadoop

    构建完毕Hadoop项目后,接下来就应该跟踪Hadoop的运行情况,比方在命令行运行hadoop namenode–format时运行了Hadoop的那些代码.当然也能够直接通过阅读源码的方式来做到这 ...

  7. Eclipse远程调试hadoop源码

    1. 修改对应调试端口 之前的一篇blog里讲述了hadoop单机版调试的方法,那种调试只限于单机运行hadoop命令而已,对于运行整个hadoop环境而言是不可取的,因为hadoop会开启多个jav ...

  8. 从wordcount 开始 mapreduce (C++\hadoop streaming模式)

    序:终于开始接触hadoop了,从wordcount开始 1. 采用hadoop streamming模式 优点:支持C++ pathon shell 等多种语言,学习成本较低,不需要了解hadoop ...

  9. Hadoop 入门

    我看过的比较全的文章.赞一下 原文链接:http://www.aboutyun.com/thread-8329-1-1.html 问题导读: 1.hadoop编程需要哪些基础?2.hadoop编程需要 ...

随机推荐

  1. Android-----完全隐藏软键盘

    隐藏软键盘一直是我头痛的事情,没有找到一种真正能隐藏的方法.点击EditText的时候总是弹出软键盘.-----杯具 杯具(一): InputMethodManager im =(InputMetho ...

  2. printDocument设置适应边框打印 特重要 找了半天 设置一个属性即可

    private void pd_PrintPage(object sender, PrintPageEventArgs e) { e.Graphics.SmoothingMode = System.D ...

  3. js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象

    我最近在做一个vue + element-UI + vue-resource + vuex项目的时候,遇到了一个对象的问题. 当我们在项目需要 复制一个对象到另一个对象并且  被复制的对象不能受复制后 ...

  4. SQL SERVER 2005允许自定义聚合函数-表中字符串分组连接

    不多说了,说明后面是完整的代码,用来将字符串型的字段的各行的值拼成一个大字符串,也就是通常所说的Concat 例如有如下表dict  ID  NAME  CATEGORY  1 RED  COLOR  ...

  5. selenium + python 怎样才能滚到页面的底部?

    可以用 execute_script方法来处理这个. 调用原生javascript的API,这样你想滚到哪里就能滚到哪里. 下面的代码演示了如何滚到页面的最下面:   driver.execute_s ...

  6. JavaScript - 返回头部

    制作浮动top $(window).scroll( function() { var scrollValue=$(window).scrollTop(); scrollValue > 600 ? ...

  7. wpf程序线程与UI内容交互

    在UI线程里执行复杂的操作,会造成UI假死.常用的解决方法是开2个线程. 而新线程要调用UI里的东西,必须这么用: this.Dispatcher.Invoke(content);

  8. 在FPGA中使用for循环一定浪费资源吗?

    渐渐地,发现自己已经习惯于发现细节,喜欢打破常规,真的非常喜欢这种feel. 相信很多人在书上或者博文上都有提出“在FPGA中使用for语句是很占用资源的”的观点,特权同学也不例外.那么,这种观点正确 ...

  9. 用TTTAttributedLabel创建变化丰富的UILabel

    转自:http://blog.csdn.net/prevention/article/details/9998575 1. 不同颜色的字段混合在一个Label里怎么实现? 看TTTAttributed ...

  10. Java项目(5)——单例模式的应用与研究

    单例模式是非常别致的一个模式,非常少有人拿它跟其它模式相比,由于,单例模式非常easy,非常特别,作用就是保证一个类有唯一一个实例,并让一个全局变量使得它能被訪问.而保证这个类仅仅被实例化一次的办法就 ...