充分利用hadoop源码-在Eclipse上部署Hadoop源码-进行开发和调试
作为MapReduce程序员不可避免的要使用Hadoop源码,Why?记得2010刚接触hadoop的时候,总是搞不清旧api和新api的使用方法。写了一段程序,在一个新api里面调用某个方法每次都是返回Null,非常恼火,后来附上源码发现,这个方法真的就是只做了“return null”并没有给予实现,最后只得想其它方法曲线救国。总之要想真正了解MapReduce开发,源码是不可缺少的工具。
下面是我的源码使用实践,步骤有点麻烦不过配置一次就好:
一、 Eclipse中创建Hadoop源码项目
1.1 下载并解压缩Hadoop分发包(通常是tar.gz包,本文基于Hadoop 1.0.1版本)
1.2 Eclipse中新建Java项目
1.3 将解压后hadoop源码包/src目录中core, hdfs, mapred, tool几个目录(其它几个源码根据需要进行选择)copy到eclipse新建项目的src目录。
1.4 右键点击eclipse项目,选择“Properties”,在弹出对话框中左边菜单选择“Java Build Path”:
a) 点击“Source”标签。先删除src这个目录,然后依次添加刚才copy过来的目录。
b) 点击当前对话框“Libaries”,点击“Add External JARs”,在弹出窗口中添加$HADOOPHOME下几个hadoop程序jar包,然后再次添加$HADOOPHOME /lib、$HADOOP_HOME /lib/jsp-2.1两个目录下所有jar包,最后还要添加ANT项目lib目录下ant.jar文件。
1.5 此时源码项目应该只有关于找不到sun.security包的错误了。这时我们还是在“Libraries”这个标签中,展开jar包列表最低下的“JRE System Library”,双击”Access rules”,在弹出窗口中点击“add按钮”,然后在新对话框中"Resolution"下拉框选择"Accessible","Rule Pattern"填写*/,保存后就OK了。如下图:
2. 如何使用这个源码项目呢?
比如我知道Hadoop某个源码文件的名称,在eclipse中可以通过快捷键“Ctrl + Shift + R”调出查找窗口,输入文件名,如“MapTask”,那可以打开这个类的源码了。
还有个使用场景,当我们编写MapReduce程序的时候,我想直接打开某个类的源码,通过上面的操作还是有点麻烦,比如我想看看Job类是如何实现的,当我点击它的时候会出现下面的情景:
解决办法很简单:
点击图中“Attach Source”按钮-> 点击“Workspace”按钮->选择刚才新建的Hadoop源码项目。完成后源码应该就蹦出来了。
总结一下,本实践中我们获得了什么功能:
- 知道hadoop源码文件名,快速找到该文件
- 写程序的时候直接查看Hadoop相关类源码
- Debug程序的时候,可以直接进入源码查看并跟踪运行
推荐指数:★★★★
推荐理由:通过源码可以帮助我们更深入了解Hadoop,可以帮助我们解决复杂问题
转载自: http://www.linuxeden.com/html/news/20121231/133868.html