最近在接触Hadoop方面的知识。去官网逛了一圈发现最新版本已经是3.0.0-alpha1了。刚好在搭建Hadoop的环境,就决定使用最新版本的Hadoop试试水。因为自己使用的机器是windows的,逛了一圈没有3.0的编译版本(windows下需要hadoop.dll,winutils.exe),就决定自己来试着编译。历时一天半,终于编译成功(实际编译时间,除去依赖包的下载大概20分钟左右),过程可谓是艰辛。于是写下这篇文章,巩固一下,并将编译过程中遇到的一些问题及解决办法分享给需要的人。
首先到官网下载hadoop3.0的源码包 点我下载
下载完后解压到自定义目录
打开其中的BUILDING.txt 里面有windows下编译的指导,如下所示:
上图所示的大部分环境都是直接下载,然后配置到环境变量即可。但是有几步非常容易出错。
1.如果需要安装Windows SDK 7.1的话,需要折腾折腾(只怪自己电脑上环境太杂),我下载了很多个版本都不能安装(win7 64bit),最后是在stackoverflow上找到了一个哥们提供的下载地址,才能够正常的安装(点我下载)。在安装windowsSDK 7.1 之前 请卸载所有MicroSoft Visual c++ 2010及其版本以上的所有库。卸载.NET Framework4.0 以上的版本。
2.请使用ProtocolBuffer 2.5.0版本,高版本的在编译时会报错
3.还需注意的一个地方是,在文档中特别提到的以下内容
在64位的机器下,请配置Platform的系统变量为x64,否则会在编译hadoop-common时出错,我就是在这里摔了一跤。
4.如果使用的是vs请使用vs2010专业版
等所有的环境都配置OK了,我们就可以进行编译了。
分别选择开始>>所有程序>>Microsoft Windows SDK v7.1>>Windows SDK Command Prompt(右键管理员身份运行),启动如下界面
然后切换到最开始下载的源码包的目录下,执行
mvn package -Pdist,native-win -DskipTests -Dtar
就会开始自动下载依赖包并且编译,如果不出意外的话(下载包我下了一个多小时 = = )20分钟左右就会编译成功。
编译好的文件在 /源码目录/hadoop-dist/target/下面 请敬请享用
1.Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (c ompile-ms-winutils) on project hadoop-common: Command execution failed. Process exited with an error: 2 找不到文件
解决办法:请将C:\Windows\Microsoft.NET\Framework64\v4.0.30319 添加到系统变量的Path即可
2.Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (c ompile-ms-winutils) on project hadoop-common: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]
解决办法:
大致意思是,卸载vs2010以上的版本,卸载vs c++2010 Redistributable(64位和32位)的,卸载 .NET Framework 4.5 重启后 安装 .NET Framework 4.0 再安装windows SDK 7.1(重新安装)
如果以上方法不能解决的话,请尝试配置Platform的系统变量。
或者参考: 传送门
解决办法1: 传送门
大致意思是卸载vs不干净导致的,需要手动清除注册表,注册表位置如图所示,不过在下面的对话中可以看出出现这个问题不仅仅是因为这个原因。可以通过查看错误日志(xx\target\native\下面),来看是否是这个问题,出现这个问题的错误日志是
MSBUILD : Configuration error MSB4146:
Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))"
解决办法2:安装vs2010
解决办法3:删除对于目录下的target目录。重新下载编译
其他办法,暂未发现
本次编译过程中遇到了很多的问题,也用了很多时间。不过当出现BUILD SUCCESS的时候,觉得这些都是值得的。
通过本次编译的收获是 多看官方提供的文档 好好学知识 好好学英语 多多思考
分享一波编译好的版本 : 点我下载 钥匙:28pg
参考:
http://coderearth.org/building-hadoop-26-on-64-bit-windows-7.html
http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os
官方文档