从零开始的 Win7 64Bit 编译Hadoop3

前言

最近在接触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/下面  请敬请享用

填坑之路

问题一 编译 Hadoop-Common时出错

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的系统变量。

或者参考: 传送门

问题二 编译时出现 around Ant part xxx\xxx\build-main.xml 出错

解决办法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

官方文档

你可能感兴趣的:(从零开始的 Win7 64Bit 编译Hadoop3)