Hadoop-1.0.4+Windows 源码编译

26 May 2013

编译 Hadoop 源代码是每个接触 Hadoop 人的心愿吧

平台环境

目录结构

  • eclipse目录 F:\eclipse
  • eclipse工程目录 F:\workspace
  • hadoop安装目录 F:\workspace\hadoop-1.0.4

Step1 导入工程

经验证,直接导入 hadoop-1.0.4.tar.gz 工程会有很多不必要的麻烦,推荐从 SVN 上导入

资源库 URL: http://svn.apache.org/repos/asf/hadoop/common/tags,选择 release-1.0.4 检出为项目 release-1.0.4

Step2 设置 eclipse 中 hadoop 安装目录

Windows—>Preferences—>Hadoop Map/Reduce

  • Hadoop installation directory: F:\workspace\hadoop-1.0.4

Step3 build.xml

因为 Windows 无法在 cmd 中运行 shell 脚本(安装 cygwin 也没用),所以需要做以下注释

<!— 1.注释掉下面,否则报错误 "package-info.java:5: 未结束的字符串字面值" —>
<exec executable="sh">
  <arg line="src/saveVersion.sh ${version} ${build.dir}"/>
</exec>

<!— 2.注释掉所有带 "autoreconf" 的 <exec> 标签,因为 Windows 下无法执行 autoreconf 命令(在 cygwin 中安装了 autoconf, automake, libtool也没用)"—>

Step4 Gridmix.java

修改 release-1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java:

将两处 Enum<? extends T> 改为 Enum<?>

Step5 Ant 编译

  1. 右键 MapReduceTools 工程,Properties—>Builders—>New—>Ant Builder
  2. New_Builder—>Edit:
    • Name (见名知意): hadoop-1.0.4_Builder
    • Main—>Buildfile (build.xml的位置): F:\workspace\release-1.0.4\build.xml
    • Targets—>Manual Build: jar
  3. Project—>Build Project

编译成功会输出 BUILD SUCCESSFUL ^^

在 F:\workspace\release-1.0.4\build 文件夹下会生成三个开发 jar 包:

  • hadoop-client-1.0.4-SNAPSHOT.jar
  • hadoop-core-1.0.4-SNAPSHOT.jar
  • hadoop-minicluster-1.0.4-SNAPSHOT.jar

去掉"-SNAPSHOT"即可替换 F:\workspace\hadoop-1.0.4 下的同名 jar 包

Fork me on GitHub