Windows 10 x64 下编译 Hadoop 源码


环境准备

Hadoop并没有提供官方的 Windows 10 下的安装包,所以需要自己手动来编译,官方文档中 BUILDING.txt 文件中说明了编译源码需要的软件环境:

1. 具体如下:

  • [x] Hadoop源码
  • [x] Windows 系统
  • [x] JDK 1.8+
  • [x] Maven 3.0 or later
  • [x] Findbugs 1.3.9 (可省略)
  • [x] ProtocolBuffer 2.5.0
  • [x] CMake 2.6 or newer
  • [x] Windows SDK or Visual Studio 2010 Professional
  • [x] Cygwin: 为了使用 sh, mkdir, rm, cp, tar, gzip 等命令
  • [x] zlib
  • [x] 电脑需要联网

2. Hadoop源码下载可以

地址 @https://archive.apache.org/dist/hadoop/common

选择具体版本即可

3. JDK

JAVA_HOME=JDK目录
CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\jre\lib;
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

注意:Hadoop2.7.0 及之后最好使用JDK1.7及1.8以上版本进行编译,我使用的版本如下

C:\Users\ZhaoBo>java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

4. Maven

下载地址:@http://maven.apache.org/download.cgi,配置如下:

M2_HOME=maven目录
PATH=%M2_HOME%\bin;

我使用的版本是3.6.0:

C:\Users\ZhaoBo>mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: D:\apache-maven-3.6.0\bin\..
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:\jdk\jdk1.8.0_181\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

5. ProtocolBuffer

下载地址:@https://github.com/google/protobuf/releases/tag/v2.5.0,选择 protoc-2.5.0-win32.zip 版本, 解压到安装目录,并添加到PAHT,如下:

PATH=C:\java\protoc-2.5.0-win32;

测试:

C:\Users\ZhaoBo>protoc --version
libprotoc 2.5.0

6. CMake

要求 CMake 2.6+ 的版本,下载地址:@https://cmake.org/download/, 下载并解压到安装目录,并添加bin目录到PATH,由于cygwin中也带了个cmake, 所以在Path中,cmake 的bin目录得加在cygwin的bin 目录之前:

CMAKE_HOME=cmake目录
PATH=%CMAKE_HOME%\bin;

测试:

C:\Users\ZhaoBo>cmake --version
cmake version 3.14.3 CMake suite maintained and supported by Kitware (kitware.com/cmake).

7. Visual Studio

VS的版本选择有两种,第一使用推荐的VS2010企业版,使用这个版本比较简单方便,或者使用最新的VS2015版,需要升级一些文件。 我选择的是 Visual Studio Community 2015 with Update 3 – Free 的 IOS 版本, 地址:@https://www.visualstudio.com/downloads/。 安装完毕之后,如果使用的是VS2015版本需要升级相关的文件:

hadoop-common-project\hadoop-common\src\main\winutils\winutils.sln

hadoop-common-project\hadoop-common\src\main\native\native.sln

使用VS2015分别打开上述文件,提示升级的时候进行确认即可。升级成功的提示信息如下:

正在升级项目“native”...
配置“Release|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
重定目标结束: 1 个已完成,0 个未通过,0 个已跳过 正在升级项目“winutils”...
配置“Debug|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
配置“Release|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
正在升级项目“libwinutils”...
配置“Debug|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
配置“Release|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
重定目标结束: 2 个已完成,0 个未通过,0 个已跳过

另外需要修改下面的文件:

hadoop-hdfs-project\hadoop-hdfs\pom.xml

将 “Visual Studio 10” 改成 “Visual Studio 14”,保存后退出。

8. Cygwin

下载地址:@https://cygwin.com/install.html,安装并添加bin目录到PATH:

CYGWIN_HOME=cygwin安装目录
PATH=%CYGWIN_HOME%\bin;

9. Zlib

ZLIB_HOME=zlib目录
PATH=%ZLIB_HOME%\bin;

10.其他

Platform=x64
VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
MSBUILD_HOME=C:\Program Files (x86)\MSBuild\14.0\Bin
PATH=%MSBUILD_HOME%;

编译

一般指令如下所示:
mvn clean package -Pdist,native-win -DskipTests -Dtar 指令中加入 -Dmaven.javadoc.skip=true 参数,可以剔除指令文档的编译,如果使用的是JDK1.8,那么必须加入此参数才能编译通过: mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.javadoc.skip=true 编译成功大概需要半小时,机器好的话可能更快,如果省略说明文档的编译也会提高速度, 编译成功之后的目录为 C:\dfs265\hadoop-dist\target

异常参考链接

@http://www.07net01.com/linux/2016/10/1688359.html

最新文章

  1. 用SignalR 2.0开发客服系统[系列2:实现聊天室]
  2. 消息中间件与JMS标准
  3. CODEVS1533 互斥的数(哈希表)
  4. Hoax or what
  5. 一个js爬虫
  6. Java并发,看到了,就记录下呗
  7. 启动django时报错Watching for file changes with StatReloader(使用状态加载程序监视文件更改 )
  8. [转]在ASP.NET Core中使用百度在线编辑器UEditor
  9. 设置服务器的MySQL允许远程访问/外网访问
  10. 【iCore4 双核心板_FPGA】实验十八:Niosii——基于内部RAM建立第一个软核
  11. Hbase 与Hive整合
  12. idea开发swing(二)
  13. 【模板】AC自动机(简单版)
  14. C#并发编程之异步编程2
  15. Dom4j解析、生成Xml
  16. Promise 执行顺序
  17. C# 基于泛型的自定义线性节点链表集合示例
  18. 微信小程序点击按钮,修改状态
  19. anaconda指定镜像源,解决conda下载速度慢失败问题
  20. 微信小程序组件button

热门文章

  1. coreRT 和 Native 编译netcore AOT程序
  2. selenium-测试框架搭建(十三)
  3. ILRuntime官方Demo笔记
  4. win10怎么进入和退出安全模式?
  5. python☞自动发送邮件
  6. codeforces 1064套题
  7. 消息队列比较-rabbitmq/kafka/rocketmq/ONS
  8. 如何改善SSH连接过慢(效率)
  9. icpc南宁站赛后总结
  10. ansible 模块 分享