一、工具
1、hadoop-2.6.0-src.tar
2、eclipse
3、maven
4、protoc
二、下载源码地址:http://mirrors.hust.edu.cn/apache/hadoop/common/
三、准备maven包:eclipse-maven3-plugin
M2_HOME E:\apache-maven-3.3.3
path ;%M2_HOME%\bin
测试:cmd-->mvn -v
四、protoc安装
1、准备:protoc-2.5.0-win32.zip、protobuf-2.5.0.tar.gz
2、将protoc-2.5.0-win32中的protoc.exe拷贝到c:\windows\system32中。
3、将proto.exe文件拷贝到解压后的XXX\protobuf-2.5.0\src目录中。
4、进入XXX\protobuf-2.4.1\java 目录 执行mvn package命令编辑该包生成protobuf-java-2.5.0.jar文件(Jar包位于XXX\protobuf-2.4.1\javatarget目录中)。
(备注:运行失败,再运行一次竟然成功了,可能网络不好,获取失败)
5、protoc --version
五、通过maven获取源码(这里需要说明的是,在使用maven的时候,需要先安装jdk,protoc ,如果没有安装可以参考win7如何安装maven、安装protoc)
1、进入hadoop->src目录:e:\hadoop_src\hadoop-2.6.0-src\hadoop-maven-plugins
2、运行:mvn install 生成JAR包(JAR包位于:E:\hadoop_src\hadoop-2.6.0-src\hadoop-maven-plugins\target中)
(mvn install 是将你打好的jar包安装到你的本地库中,一般没有设置过是在 用户目录下的 .m2\下面。
mvn package 只是将你的代码打包到输出目录,一般的是 target下面。)
3、进入:E:\SoftWare\HADOOP\hadoop2.6\hadoop-2.6.0-src,运行:mvn eclipse:eclipse -DskipTests
(这时候,我们已经把源码给下载下来了。这时候,我们会看到文件会明显增大。)
4、mvn eclipse:eclipse -DskipTests(生成eclipse项目文件)
用户目录下的 .m2\下面会新增文件;m2是在maven的本地仓库路径
(进入的是hadoop_home,我这里是D:\hadoop2\hadoop-2.6.0-src; 这一步总是构建失败,但是已经可以导入源码了)
(一直重复上述命令,最终还是成功,我估计是由于网络延时原因导致timeout,另外即使成功导入项目后仍有错误提示,原因是没有包;解决办法是再重复运行上术命令....)
六、应用开发时关联源码
1、将经过maven编译后的源码压缩成zip格式文件;
2、当我们想看一个类或则函数怎么实现的时候,通过Open Call Hierarchy,却找不到源文件。
3、通过关联压缩后的zip文件进行关联:
4.验证关联后查看源码
我们再次执行上面操作,通过Open Call Hierarchy
七、通过Eclipse阅读Hadoop源码
1、导入项目
2、选择路径
3、查看源码
八、阅读源码
其中比较常用的
Open Call Hierarchy:
用Open Call Hierarchy可以查看方法的调用层次。如果想知道一个方法在别的什么地方被调用了,这个功能就很好用了,实际中也很常用,比如要重构一个方法时,想 知道他对其它什么地方可能有影响,就可以用这个功能。在方法名上点击右键,选择Open Type Hierarchy即可,快捷键是Ctrl+Alt+H。可以在Call Hierarchy窗口看到方法的调用层次的导航。
Open Type Hierarchy:
用Open Type Hierarchy可以查看类的继承关系,可以在Hierarchy窗口看到继承层次的导航。在方法或类名上点击右键,选择Open Type Hierarchy即可,快捷键是F4。
其他的跟踪源码的方法:
1、 用Open Declaration可以查看类、方法和变量的声明。这是最常用的一个功能了,如果在要追踪的对象上点右键,选择Open Declaration,可以跳转到其声明的地方。这个功能有个快捷键是F3,当然你也可以按住Ctrl键,鼠标移过去会变成一个小手,单击就可以了。
2、用Open Super Implemention可以查看当前方法在父类中的实现或接口中的声明(前提是该方法是对父类或接口中相应方法的重写),在方法名上点击右键,选择Open Super Implemention即可。
3、 最后介绍一个超级好用的功能,叫Open Implemention,就是可以跳转到某个调用的方法的具体实现的地方去。为什么说这个是超级好用呢?用过Spring的人都知道,现在都提倡面向接 口编程,所以,如果使用Open Declaration来追踪一个方法的调用的话,只会看到该方法在接口中的声明,而看不该方法在具体类中的实现,当然,可以使用Call Hierarchy先得到该方法的整个的调用层次,然后再导航到具体的实现处,但操作有些麻烦了。有了Open Implemention,就可以直接看到实现的代码了,在方法名上点击右键,选择Open Implemention就可以了!只是要享受这个功能,可安装一个Eclipse插件,这里就不在详细介绍了。