Windows 环境下编译Hadoop源码
为了便于在Windows系统平台开发和调试Hadoop相关程序,我们需要重新编译Hadoop源码,使其能够在Windows环境下运行。我们需要一些额外的软件工具来辅助完成编译工作。
准备工作
Hadoop源码包根目录下的BUILDING.txt文档,介绍了当前Hadoop版本在不同平台编译所需软件和注意事项:
本文所需罗列如下:
- 操作系统:Windows 10 64位
- Hadoop:hadoop-2.6.5-src.tar.gz
- JDK:jdk-7u65-windows-x64.exe
- Maven:apache-maven-3.3.9-bin.zip
- CMake:cmake-3.12.0-rc1-win64-x64.zip
- ProtocolBuffer:protobuf-2.5.0.zip
- protoc:protoc-2.5.0-win32.zip
- zlib:zlib-1.2.11.tar.gz
- Cygwin:3.12.0 setup-x86_64.exe
- Visual Studio 2010
以上软件包均可在我的百度网盘直接下载:https://pan.baidu.com/s/1YAAtLwKgoclEPz0pEej7BQ
安装软件
- JDK:此处不再累述
- Maven:此处不再累述
- Hadoop:解压到指定目录
- CMake:解压到指定目录
- ProtocolBuffer:解压到指定目录
- protoc:解压并将protoc.exe放置在ProtocolBuffer的src目录
- zlib:解压到指定目录
- Cygwin:安装到指定目录
- Visual Studio 2010 :安装到指定目录
配置环境变量
- Platform:新建系统变量Platform=x64
- JDK:不再累述
- Maven:将bin目录添加至PATH系统变量
- CMake:将bin目录添加至PATH系统变量
- ProtocolBuffer:将src目录添加至PATH系统变量
- zlib:新建ZLIB_HOME系统变量,并指向其解压根目录
- Cygwin:将bin目录添加至PATH系统变量
环境变量配置好后,进入ProtocolBuffer的java子目录,使用mvn install
命令将其注入进maven的本地仓库中,并使用protoc --version
验证:
编译Hadoop
上述准备工作完成后,便可以编译Hadoop了。使用Visual Studio x64 Win64 命令提示(2010)进入Haddoop源码包根目录,执行mvn package -Pdist,native-win -DskipTests -Dtar
命令重新编译打包(需要耐新等待,此处足足执行了26min54s):
编译成功的基于Windows平台的文件将会存放在根目录下的hadoop-dist\target
目录:
总结
由于我在最初编译Hadoop的过程中遇到了各种各样的问题,所以才有了写这样一篇博文的念头,以便自己或他人日后查阅。
以上配置执行的过程经过一路填坑,亲测可以正确无误的编译成功,因此没有记录太多中间遇到的编译中断、失败的问题。总结下来无非就是各种软件版本不匹配的问题,我在一开始本着越新越好的原则,在Jdk8、Visual Studio 2017等平台编译,总是出错,最终才领会到彼此匹配才是最好。所以提醒各位编译前先了解下Hadoop的版本,找到最合适的编译环境。
为了方便大家使用,现将编译后的软件包共享出来:
- 优快云资源地址:hadoop-2.6.5.tar.gz
- 百度网盘地址:hadoop-2.6.5.tar.gz