参考资料
https://svn.apache.org/repos/asf/hadoop/common/trunk/BUILDING.txt
http://note.youdao.com/share/?id=4dfbbc5b4048654026f571c04924f437&type=note#/
http://stackoverflow.com/questions/31295963/hadoop-on-windows-building-installation-error
编译需求
先上一段官方的说明节选:
Requirements:
- Windows System
- JDK 1.6+
- Maven 3.0 or later
- Findbugs 1.3.9 (if running findbugs)
- ProtocolBuffer 2.5.0
- CMake 2.6 or newer
- Windows SDK or Visual Studio 2010 Professional
- Unix command-line tools from GnuWin32 or Cygwin: sh, mkdir, rm, cp, tar, gzip
- zlib headers (if building native code bindings for zlib)
- Internet connection for first build (to fetch all Maven and Hadoop dependencies)
If using Visual Studio, it must be Visual Studio 2010 Professional (not 2012).
Do not use Visual Studio Express. It does not support compiling for 64-bit,
which is problematic if running a 64-bit system. The Windows SDK is free to
download here:
http://www.microsoft.com/en-us/download/details.aspx?id=8279
前期准备
注意,所有的安装路径、环境变量路径都要尽量简短,不要有中文、空格
注意,所有的安装路径、环境变量路径都要尽量简短,不要有中文、空格
注意,所有的安装路径、环境变量路径都要尽量简短,不要有中文、空格
JDK
我已经配过了,需要的可以参考这里:
http://jingyan.baidu.com/article/02027811629b941bcc9ce521.html
Maven
我已经配过了,需要的可以参考这里:
http://jingyan.baidu.com/article/cb5d61050b8ee7005d2fe04e.html
FindBugs
下载地址:http://findbugs.sourceforge.net/downloads.html
配置环境变量:
变量名 | 值 |
---|---|
FINDBUGS_HOME | C:\bigdata\findbugs-3.0.1 |
%FINDBUGS_HOME%\bin
要配到path里面去。
用下面的命令检查是否安装好:
findbugs -version
ProtocolBuffer
下载地址:http://download.csdn.net/detail/erli11/7408633
配置环境变量:
变量名 | 值 |
---|---|
PROTOBUF_HOME | C:\bigdata\protoc-2.5.0-win32 |
%PROTOBUF_HOME%\
要配到path里面去。
用下面的命令检查是否安装好:
protoc --version
CMake
下载地址:https://cmake.org/files/v3.3/cmake-3.3.0-win32-x86.exe
没有64位的版本,下个32位的将就一下吧。
配置环境变量:
变量名 | 值 |
---|---|
CMAKE_HOME | C:\CMake |
%CMAKE_HOME%\bin
要配到path里面去。这个可以在安装的时候选择让安装程序配进去就好。
用下面的命令检查是否安装好:
cmake -version
window 10 sdk下载和安装
下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk
Visual Studio 2015
下载地址:https://www.visualstudio.com/
安装时注意勾选C++
Cygwin
下载地址:http://cygwin.com/install.html
因为我们是64位的系统,选择setup-x86_64.exe进行下载。
安装的话可以看:http://blog.csdn.net/u013076997/article/details/52636116还有http://blog.csdn.net/pz0605/article/details/52193450
配置环境变量:
变量名 | 值 |
---|---|
CYGWIN64_HOME | C:\cygwin64 |
%CYGWIN64_HOME%\bin
要配到path里面去。
ZLib
下载并解压:http://zlib.net/zlib128-dll.zip
环境变量,直接在Path里面添加:C:\bigdata\zlib128-dll
Hadoop2.7.3源码包
下载地址:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3-src.tar.gz
新增环境变量整理
变量名 | 值 | Path路径 |
---|---|---|
FINDBUGS_HOME | C:\bigdata\findbugs-3.0.1 | %FINDBUGS_HOME%\bin |
PROTOBUF_HOME | C:\bigdata\protoc-2.5.0-win32 | %PROTOBUF_HOME%| |
CMAKE_HOME | C:\CMake | %CMAKE_HOME%\bin |
CYGWIN64_HOME | C:\cygwin64 | %CYGWIN64_HOME%\bin |
C:\Windows\Microsoft.NET\Framework64\v4.0.30319;C:\bigdata\zlib128-dll |
编译错误解决
Hadoop-Common项目和HDFS项目如果不在前期进行一些处理的话会编译报错。
Hadoop-Common
1.进入项目目录,打开工程文件
进入E:\hadoopsrc\hadoop-common-project\hadoop-common\src\main\winutils
,打开winutils.sln
2.升级解决方案
工程打开后,会出现下图所示的对话框,点击“确认”进行升级。
3.生成
在winutils项目上右键->生成。
会出现下图所示的错误,不用管它。
4.native项目
到E:\hadoopsrc\hadoop-common-project\hadoop-common\src\main\native
下面重复上面的步骤
现在Hadoop-Common项目应该可以正常编译了。
HDFS项目
1.进入目录
进入 E:\hadoopsrc\hadoop-hdfs-project\hadoop-hdfs
2.修改pom.xml
搜索cmake,把如图所示的位置改为:Visual Studio 14 2015 Win64
这里可以用cmake-gui.exe来测试一下。
如果没有报The C compiler identification is unknown之类的错误,就是visual studio 2015的visual c++环境已经正确安装了。
报其他错误不管他!
设置MSBuild
开始编译
1.管理员身份运行“VS2015 开发人员命令提示”
2.以我的源码存放目录为例,执行如下命令:
E:
cd E:\hadoopsrc
set Platform=x64
set ZLIB_HOME=C:\bigdata\zlib128-dll\include
mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true -e
如果出现客户端长时间停在下载某个pom文件或者某个jar包的时候,是网速问题,可以ctrl+c停止,再按方向上键,重新执行命令
mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true -e
即可,再次执行原来maven下载过的那些pom或者jar包,不会再重新下了。
祝大家编译成功~
总结
我花了大概一天的时间终于编译好了。期间犯了一个大错误,我把VS2015的安装目录装到了一个中文+空格的目录下,导致了很多奇怪的问题。
所以,重说三,No Zuo No Die.