今天终于在win7 64位下把Hadoop编译成功了。
开始我使用win7 32位的系统编译,没有成功:-(。
1 下载安装java jdk环境。hadoop是用java写的,因此为了编译和运行hadoop,我们首先要安装java环境。
我下载的是oracle Java SE Development Kit 7.
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
安转java很简单,只需要双击jdk-7u67-windows-x64,按提示安装就可以了。
2 设置JAVA_HOME环境变量,
set JAVA_HOME=C:\Progra~1\Java\jdk1.7.0_67
你可以通过命令行窗口检查JAVA_HOME的值是否正确:
C:\Users>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.7.0_67
3 安装Cygwin
Cygwin是windows下的unix运行环境,Hadoop编译中需要unix命令: sh, mkdir, rm, cp, tar, gzip。
Cygwin的安装很简单,下载Cygwin的安装程序setup-x86_64,双击,默认安装即可。
4 安装windows SDK 7 和.NET Framework 4
到这个网址下载安装http://www.microsoft.com/en-us/download/details.aspx?id=8279。
5 下载hadoop-2.4.1-src.tar.gz,apache-maven-3.2.3-bin.tar.gz, findbugs-1.3.9.tar.gz, protoc-2.5.0-win32.zip 和protobuf-2.5.0.zip.
到这里,编译所需的工具和包都准备好了,下面开始准备编译。
我的工作目录是D:\hadoop,后面我都将以该目录为基础讲解。
6 在Windows SDK Command Prompt命令窗口中编译,同时设置Cygwin的路径,这样命令行中就可以调用UNIX命令了。
Start->All Programs->Microsoft Windows SDK v7.1->Windows SDK 7.1 Command Prompt
cd D:\hadoop
D:\hadoop>set CYGWIN_DIR=%HOMEDRIVE%\cygwin64
D:\hadoop>set PATH=%CYGWIN_DIR%\bin;%PATH%;
7 安装Maven
D:\hadoop>tar xvzf apache-maven-3.2.3-bin.tar.gz
解压后,Maven的目录是D:\hadoop\apache-maven-3.2.3。
下面配置环境变量,以便mvn命令可以被找到。
D:\hadoop>set M2_HOME=D:\hadoop\apache-maven-3.2.3
D:\hadoop>set PATH=%M2_HOME%\bin;%PATH%;
8 安装FindBugs.
D:\hadoop>tar xvzf findbugs-1.3.9.tar.gz
解压后,findbugs的目录是D:\hadoop\findbugs-1.3.9。
将findbugs加入环境变量PATH中。
D:\hadoop>set FINDBUGS_HOME=D:\hadoop\findbugs-1.3.9
D:\hadoop>set PATH=%FINDBUGS_HOME%\bin;%PATH%;
9 安装ProtocolBuffer 2.5.0
ProtocolBuffer是google开发的用于序列化结构化语言的开源程序。
我们需要去google的网站下载两个包:protoc-2.5.0-win32.zip和protobuf-2.5.0.zip。
protoc-2.5.0-win32.zip中是可执行文件protoc.exe。
protobuf-2.5.0.zip中是源代码。
解压protoc-2.5.0-win32.zip和protobuf-2.5.0.zip,将protoc-2.5.0-win32\protoc.exe拷贝到protobuf-2.5.0\src和protobuf-2.5.0中。
接下来需要安装java运行库。
D:\hadoop>cd protobuf-2.5.0\java
D:\hadoop\protobuf-2.5.0\java>mvn test
D:\hadoop\protobuf-2.5.0\java>mvn install
D:\hadoop\protobuf-2.5.0\java>mvn package
将protobuf加入环境变量PATH中。
D:\hadoop>set PROTOC_HOME=D:\hadoop\protobuf-2.5.0
D:\hadoop>set PATH=%PROTOC_HOME%\bin;%PATH%;
10 编译Hadoop所需的环境都已经配置好了,我们可以开始编译了:
设置平台环境变量
D:\hadoop>set Platform=x64
解压并开始编译Hadoop
D:\hadoop>tar xvzf hadoop-2.4.1-src.tar.gz
D:\hadoop>cd hadoop-2.4.1-src
D:\hadoop\hadoop-2.4.1-src>mvn package -Pdist,native-win -DskipTests -Dtar
到这里,Hadoop应该已经编译成功了。为了以后编译的方便,可以把配置环境变量的步骤放到一个脚本中,这样,每次打开Windows SDK 7.1 Command Prompt命令窗口后,执行这个脚本就可以自动配置环境变量了:
@echo off
set JAVA_HOME=C:\Progra~1\Java\jdk1.7.0_67
set CYGWIN_DIR=%HOMEDRIVE%\cygwin64
set PROTOC_HOME=D:\hadoop\protobuf-2.5.0
set FINDBUGS_HOME=D:\hadoop\findbugs-1.3.9
set M2_HOME=D:\hadoop\apache-maven-3.2.3
set PATH=%CYGWIN_DIR%\bin;%PROTOC_HOME%;%FINDBUGS_HOME%\bin;%M2_HOME%\bin;%PATH%;
注意,我没有把set Platform=x64放到这个脚本中,这是因为set Platform=x64必须得在命令窗后中手动设置,否则Hadoop编译会失败。
参考:
http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html
http://wiki.apache.org/hadoop/Hadoop2OnWindows
http://docs.oracle.com/javase/8/docs/
http://findbugs.sourceforge.net/manual/installing.html