zoukankan      html  css  js  c++  java
  • Windows 10 x64 下编译 Hadoop 源码

    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%libjrelib;
    PATH=%JAVA_HOME%in;%JAVA_HOME%jrein;
    

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

    C:UsershaoBo>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%in;
    

    我使用的版本是3.6.0:

    C:UsershaoBo>mvn -version
    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
    Maven home: D:apache-maven-3.6.0in..
    Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: C:jdkjdk1.8.0_181jre
    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:javaprotoc-2.5.0-win32;
    

    测试:

    C:UsershaoBo>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%in;
    

    测试:

    C:UsershaoBo>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-projecthadoop-commonsrcmainwinutilswinutils.sln

    hadoop-common-projecthadoop-commonsrcmain ative ative.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-projecthadoop-hdfspom.xml
    将 “Visual Studio 10” 改成 “Visual Studio 14”,保存后退出。

    8. Cygwin

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

    CYGWIN_HOME=cygwin安装目录
    PATH=%CYGWIN_HOME%in;
    

    9. Zlib

    ZLIB_HOME=zlib目录
    PATH=%ZLIB_HOME%in;
    

    10.其他

    Platform=x64
    VCTargetsPath=C:Program Files (x86)MSBuildMicrosoft.Cppv4.0V140
    MSBUILD_HOME=C:Program Files (x86)MSBuild14.0Bin
    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:dfs265hadoop-dist	arget
    
    
    

    异常参考链接

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

  • 相关阅读:
    String.PadLeft()
    数据生成树 新增
    SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它
    获取SqlConnection的统计信息
    页面缓存 OutputCache
    将小写金额转换成大写
    判断是否枚举中的匹配项
    js获取系统时间的几种方法<一> 《网摘学习》
    将指定文件夹(路径)下的所有内容copy到目标文件夹(路径)下的方法
    50个优美的句子<摘自网上>
  • 原文地址:https://www.cnblogs.com/hit-zb/p/10763367.html
Copyright © 2011-2022 走看看