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

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. Testlink1.9.17使用方法( 第四章 测试需求管理 )

    第四章 测试需求管理 QQ交流群:585499566 需求规格说明书是我们开展测试的依据.首先,我们可以对项目(产品)的需求规格说明书进行分解和整理,将其拆分为多个需求,一个项目可以包含多个需求,一个 ...

  2. Hive分桶

    1.简介 分桶表是对列值取哈希值的方式将不同数据放到不同文件中进行存储.对于hive中每一个表,分区都可以进一步进行分桶.由列的哈希值除以桶的个数来决定数据划分到哪个桶里. 2.适用场景 1.数据抽样 ...

  3. mvc设计模式的优点

    软件设计的理念是:高内聚,低耦合.采用三层: UI:(jsp,servlet), service:(具体的业务实现), dao:(对数据库的操作) 的设计模式来指导项目开发可以使得项目各层之间是一个粗 ...

  4. Storm入门(五)Twitter Storm如何保证消息不丢失

    转自:http://xumingming.sinaapp.com/127/twitter-storm如何保证消息不丢失/ storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍st ...

  5. java.util.Arrays.useLegacyMergeSort=true 作用

    (原) 今天看了一下现场的环境,发现有个其它部门的项目用到了这样一个参数: -Djava.util.Arrays.useLegacyMergeSort=true 于是查看了一下什么作用. 在JDK1. ...

  6. selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据

    简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...

  7. selenium3(java)之屏幕截图操作

    selenium提供了截图的功能,分别是接口是TakesScreenshot和类RemoteWebDriver.该功能是在运行测试用例的过程中,需要验证某个元素的状态或者显示的数值时,可以将屏幕截取下 ...

  8. C#中的PropertyGrid绑定对象,通过改变某一值而动态设置部分属性的特性

    问题:如下,我定义了一个对象,默认设置属性WindowSize ,WindowSize 为不可见,通过改变SaveOnClose的值,动态的改变不可见的属性的显示和隐藏. [DefaultProper ...

  9. git配置ssh秘钥(公钥以及私钥)

    桌面版git,  本文以github为例,gitlab等其它托管平台一样操作 当我们将代码托管到远程平台(GitHub.gitlab等)时, 我们需要在本地使用git进行push/pull代码时,需要 ...

  10. Netty 客户端断线重连

    client 关闭后会执行 finally 代码块,可以在这里可以进行重连操作 public class NettyClient implements Runnable { private final ...