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

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

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

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

4. Maven

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

  1. M2_HOME=maven目录
  2. PATH=%M2_HOME%\bin;

我使用的版本是3.6.0:

  1. C:\Users\ZhaoBo>mvn -version
  2. Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
  3. Maven home: D:\apache-maven-3.6.0\bin\..
  4. Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:\jdk\jdk1.8.0_181\jre
  5. Default locale: zh_CN, platform encoding: GBK
  6. 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,如下:

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

测试:

  1. C:\Users\ZhaoBo>protoc --version
  2. libprotoc 2.5.0

6. CMake

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

  1. CMAKE_HOME=cmake目录
  2. PATH=%CMAKE_HOME%\bin;

测试:

  1. C:\Users\ZhaoBo>cmake --version
  2. cmake version 3.14.3
  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分别打开上述文件,提示升级的时候进行确认即可。升级成功的提示信息如下:

  1. 正在升级项目“native”...
  2. 配置“Release|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
  3. 重定目标结束: 1 个已完成,0 个未通过,0 个已跳过
  4. 正在升级项目“winutils”...
  5. 配置“Debug|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
  6. 配置“Release|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
  7. 正在升级项目“libwinutils”...
  8. 配置“Debug|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
  9. 配置“Release|x64”: 将平台工具集更改为“v140”(之前为“v100”)。
  10. 重定目标结束: 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:

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

9. Zlib

  1. ZLIB_HOME=zlib目录
  2. PATH=%ZLIB_HOME%\bin;

10.其他

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

编译

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

异常参考链接

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

Windows 10 x64 下编译 Hadoop 源码的更多相关文章

  1. Windows,linux下编译qt源码(比较简单)

    一.linux下静态编译qt源码 1.取到qt源码并解压到文件夹 2.cd到qt目录下 3.使用configure生成makefile ./configure–prefix /opt/qtstatic ...

  2. Windows下编译live555源码

    Windos下编译live555源码 环境 Win7 64位 + VS2012 步骤 1)源码下载并解压 在官网上下载最新live555源码,并对其进行解压. 2)VS下建立工程项目 新建Win32项 ...

  3. windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

  4. 编译Hadoop源码

    背景: 在阅读hadoop源代码过程中会发现部分类或者函数无法找到,这是由于Hadoop2.0使用了Protocol Buffers定义了RPC协议, 而这些Protocol Buffers文件在Ma ...

  5. windows 平台使用 VS2017 编译openssl源码

    windows 平台使用 VS2017 编译openssl源码 1)依赖安装 安装 perl 脚本解释器 下载 http://libevent.net/download 安装 nasm 汇编器 C:\ ...

  6. ubuntu下编译VLC源码

    http://blog.csdn.net/beitiandijun/article/details/9225591ubuntu下编译VLC源码 分类: 视频处理 2013-07-02 17:33 57 ...

  7. 【转】ubuntu 11.10(32位系统)下编译android源码

    原文网址:http://www.cnblogs.com/dwayne/archive/2011/11/16/2251734.html 本文介绍在ubuntu 11.10系统下编译android 2.3 ...

  8. mac下编译node源码

    看过一篇win7 64x下面编译node的文章,链接地址:编译nodejs及其源码研究 下面学习一下在mac下面如何编译node源码. 过程也挺简单. 1.下载源码. > mkdir nodes ...

  9. 【转】在Ubuntu下编译Android源码并运行Emulator

    原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK   $ sudo apt-ge ...

随机推荐

  1. [20190418]exclusive latch spin count.txt

    [20190418]exclusive latch spin count.txt--//昨天测试"process allocation" latch,主要这个latch与其它拴锁s ...

  2. selenium-日志文件的使用(十二)

    概述 在自动化测试中,如果测试失败需要对错误的错误的代码或者测试case进行分析,进行分析时最好的方法是在项目中添加日志文件,通过日志文件的分析定位出现错误的原因. 这样可以保持自动化测试用例的健壮性 ...

  3. vue 导出xlsx表功能

    详细步骤: 1.需要安装三个依赖: npm install -S file-saver xlsx npm install -D script-loader 两个命令行包含三个依赖. 2.项目中src下 ...

  4. 一:SqlServer中的 CEILING函数和 FLOOR函数以及ROUND()

    例如 1.ROUND() 格式为ROUND(y1,y2,y3) y1:要被四舍五入的数字y2:保留的小数位数 y3:为0,可以不写,y1进行四舍五入,不为0则y1不进入四舍五入,如果y1有值就直接根据 ...

  5. 记录Javascript集合操作

    function Set() { var items = {}; /** * 添加元素 * @param {[type]} value [description] */ this.add = func ...

  6. pytorch中文文档-torch.nn.init常用函数-待添加

    参考:https://pytorch.org/docs/stable/nn.html torch.nn.init.constant_(tensor, val) 使用参数val的值填满输入tensor ...

  7. Django auth认证

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  8. promise源码解析

    前言 大部分同学对promise,可能还停留在会使用es6的promise,还没有深入学习.我们都知道promise内部通过reslove.reject来判断执行哪个函数,原型上面的then同样的,也 ...

  9. mysql一个非常实用解决sql查询优化的函数explain

    前言: 项目中有个表有几万条数据,然后还要关联其他表,查询条件也有点多,再没有其他查询条件下,默认时间查询条件如果是查一年的数据的话,查询时间那是慢得可怕. 找总监去优化sql,看他用了一个sql函数 ...

  10. Sass 笔记

    Sass 笔记 1. 安装,依赖Ruby sass依赖Ruby, 所以Windows要先安装Ruby, Mac自带无需安装 $ gem install sass 2. 两种文件格式 sass scss ...