win7 编译hadoop2.7.7遇到的问题
为什么要用win来编译hadoop呢?虽然hadoop是用java开发,对于某些组件,Hadoop提供了自己的本地实现.官网给出了说明: 见本地库
现在开始编译,
在官网下载对应版本的源码包:
解压后,里面的BUILDING.txt文件中有说明
Requirements:
* Windows System
* JDK 1.7+
* Maven 3.0 or later
* Findbugs 1.3.9 (if running findbugs)
* ProtocolBuffer 2.5.0
* CMake 2.6 or newer
* Windows SDK 7.1 or Visual Studio 2010 Professional
* Windows SDK 8.1 (if building CPU rate control for the container executor)
* zlib headers (if building native code bindings for zlib)
* Internet connection for first build (to fetch all Maven and Hadoop dependencies)
* Unix command-line tools from GnuWin32: sh, mkdir, rm, cp, tar, gzip. These
tools must be present on your PATH.
Unix command-line tools are also included with the Windows Git package which
can be downloaded from http://git-scm.com/download/win.
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 7.1 is free to
download here:
按照上面的要求去下载相应的安装包,
jdk,maven已经有了.
其他下载好对应的版本,配置相应的环境变量
Findbugs 1.3.9 path里面指到 bin目录下(类似jdk)
ProtocolBuffer 2.5.0(一定下载此版本,新的版本有改动)
下载地址
下载两个文件 protobuf-2.5.0.zip 和 protoc-2.5.0-win32.zip 将后者压缩包里的protoc.exe放到前者解压目录下的src下
配置环境变量,path里面指向src下
cmake 可以安装最新版,去官网下就行.配好环境变量
zlib 在网上找了一个zlib128-dll,环境变量指向.dll文件
我安装windows sdk 7.1好像失败了,于是下载了vs2010,
找到vs2010工具中的命令行窗口,进入源码包目录下,执行
mvn package -Pdist,native-win-DskipTests -Dtar
出现了.sh文件无法执行的错误,
在 win的黑窗口无法执行linux下的命令,所有下载git,使之能运行.
按照网上的方法去编译,编译winutils.sln出错了(COFF的错误),查找了半天,我本地电脑上安装了.net Framework4.0以上的版本,于是卸载了,重新安装了4.0的版本.
再就是有两处要去下载tomcat6.0.48,但是官网下载地址被墙(镜像站已不提供过期版本的下载)了,浪费我比较长时间去网上找相关资源,最后利用百度云解决了.
把下载的tomcat tar.gz 放到以下路径下:
E:\hadoop-2.7.7-src\hadoop-common-project\hadoop-kms\downloads
E:\hadoop-2.7.7-src\hadoop-hdfs-project\hadoop-hdfs-httpfs\downloads
具体地址以参照源码包地址
然后接下来就没有报错了,成功了.
1533731053(1).png