这篇文章将描述我们大家一起如何完善hadoop核心的机制。至于在哪些方面你可以完善hadoop核心可以看 《工程建议》这篇文章。
获得源码
首先,你需要Hadoop的 源码。 你可以用SVN获得源码,大部分的开发都在”trunk”下。
svn checkout http://svn.apache.org/repos/asf/hadoop/core/trunk/ hadoop-core-trunk
如果你想征对某个具体的版本编辑,你可以访问网页 http://svn.apache.org/repos/asf/hadoop/core/tags/ , 在这个网页下,你可以找到你所需要的版本,你还可以通过以下命令核对某个版本:
svn checkout http://svn.apache.org/repos/asf/hadoop/core/tags/release-X.Y.Z/ hadoop-core-X.Y.Z
如果你习惯于用Eclipse做开发,在《EclipseEnvironment》 中,有关于如何设置访问SVN的命令。
改进
在你修改之前,发一封邮件 给hadoop的开发者们,邮件列表为 Hadoop developer mailing list, 或者在Jira发一个关于你所发现的bug的报告。在信件中你要描述你将做的修改,并且要确认你将做的修改不会与其它开发者的开发或是他们对这个项目的计 划发生冲突。让大家知道你的需求可能要花费你一定的时间,在这个过程中,请保持耐心。 在你修改Hadoop的源码或是用你最喜欢的IDE为Hadoop增加一些好的性能时,请注意以下几点:
- 不要用这种格式: @author tags.
• 代码应该符合Sun的规范,但有一个例外:
- 每行用两个空格而不是四个空格作为分割.
• 新有修改应该通过已有的单元测试. • 应该提供新的单元测试来证明以前的代码存在bugs,而新的代码已经解决了这些bugs. Junit是我们的测试框架。
-
o 你必须实现一个类名以“Test”开头的类,而且这个类继承于junit.framework.TestCase.
- o 在该类中定义测试方法,这些方法的名字要以“test”开头。在这些方法中,通过调用JUnit的一套“assert”方法达到测试的效果。这些以 “test”开头的方法会在执行“ant test”时被调用。
- o 默认情况下,不要让你的测试写任何文件到“/tmp”目录下。你可以在设置“test.build.data” 系统属性,这样你可以写文件到该系统属性所指的目录下。
-
o 如果你的测试中要用到HDFS 机群或者 or a MapReduce 机群请分别用org.apache.hadoop.dfs.MiniDFSCluster 和org.apache.hadoop.mapred.MiniMRCluster. TestMiniMRLocalFS 是一个用到MiniMRCluster 的测试程序。
-
o 将你的类放在这个目录下:src/test . o TestFileSystem.java 和TestMapRed.java 是两个基于MapReduce的 独立的测试例子。
-
o TestPath.java 是一个不基于