本文操作来自 博主进行了稍许整理,另外遇到一些问题,参考搜索引擎
一、编译Hadoop
1.1 部署编译环境
博主曾尝试使用官方提供的依赖软件最新版,被翻来覆去的打了好几次脸,所以,至少在本文成文的时候的各依赖软件的最新版本都基本无法正常编译,所以还是用官方推荐的版本
提供了网盘地址 下面的依赖包基于网盘内的文件进行说明
-
jdk-7u79-windows-x64.exe
JDK不多说了,直接安装,注意不要把它安装在有空格的路径下面,对没错说的就是 Program Files,直接装到 D:\Java 吧,挺不错的(其实不是不能装,就是配置环境变量会有点麻烦,麻烦越少越好,你懂的)。 需要设置环境变量 JAVA_HOME=jdk的安装目录 另外需要把 %JAVA_HOME%\bin 加入PATH。 -
apache-maven-3.3.9-bin.zip MAVEN java 的依赖包和编译工具,下载之后解压即可。 需要把 MAVEN的解压目录\bin 加入PATH。
-
cmake-3.5.2-win32-x86.zip cmake 编译工具,下载后解压即可。 需要把 cmake的解压目录\bin 加入 PATH。
-
cygwin64-downloaded.zip cygwin是windows下的linux命令行模拟工具。其实只是maven里面写的命令都是基于linux的,所以windows下执行脚本会报错,所以我提供了压缩包版本,直接解压即可。(当然,目录里有安装版,但我觉得应该没必要) 需要把 cygwin的解压目录\bin 加入PATH。
-
protoc-2.5.0-win32.zip google提供的数据序列化包,压缩包里只有一个 protoc.exe,下载解压即可。 需要把 protoc的解压目录 加入PATH。
-
zlib-1.2.7.3-binary.zip zlib压缩库,这个网上没有找到二进制版本,这个binary是我自己编译的,所以如果出了问题,咳咳,请下载 source版本自行另外编译。下载解压即可。 需要添加环境变量ZLIB_HOME=zlib的解压目录。
-
vs2010 / winsdk7.1 其实博主一开始是打算用winsdk的,后来发现zlib找不到编译版本只能编译,所以就装了vs2010。所有后来也是用的vs2010的cmd。PS.博主把vs的安装包(英文版)也放了进去(当然大家网上随便找找都可以啦)。
-
hadoop-common.git.source.zip hadoop 的源码包,其实是博主git下来然后打包的,有条件的同学自行git吧。
git clone git://git.apache.org/hadoop-common.git
1.2 测试编译环境
菜单里找到 Visual Studio Command Prompt (2010) 这个打开一个命令行窗口,然后输入以下命令进行测试:
java -versionmvn -versiontarprotocecho %ZLIB_HOME%
其实基本上都是PATH没有配置好,在cmd里直接重新设置一下就可以了。验证完不要关哦,我们还在在这个命令行里进行编译。
1.3 编译喽~ 编译之前还要设置一个环境变量,只是编译的平台:
set Platform=x64
哦,忘记了,还要把目录切换到hadoop的源码目录: ##直接输入盘符:可以切换磁盘,如 P:,切到对应磁盘下面才能进行cd操作 cd P:\Code\hadoop-common 然后就可以输入maven命令编译hadoop了。
mvn package -Pdist,native-win -DskipTests -Dtar
好了,运气好的话,等等就可以收编译好的包啦。
细心的同学可以看一下上面图片有一个“彩蛋”哦*
对了,编译完成之后的文件在 hadoop-common\hadoop-dist\target\hadoop-3.0.0-SNAPSHOT.tar.gz
总结
这次编译我用了三个晚上(是的,博主弱爆了),主要是wiki里提到的很多依赖项我都不知道,所以找了半天,zlib没能找到二进制包,只好自行编译,还好不是很复杂。 protoc网上很多帖子给了googlecode的地址,但其实查一下就知道已经迁移到了github 。中间的一次,在 set PATH的时候下意识的加上了双引号 set PATH="P:\protoc;%PATH%"导致报错,还一度使用了maven的-X参数(即输出全部调试信息),才看出来。后来mvn的命令用错,没有加 -DskipTests,导致运行测试的时候失败。重新编译了数次。为此,我打了好几把屁股才稍微安抚了下自己受伤的心灵。
所以今天先写到这里,明天再看看如何配置吧!