• Hadoop 3.2.1 win10 64位系统 vs2015 编译


    Hadoop 3.2.1 win10 64位系统 vs2015 编译

    1        环境配置

    1.1   JDK下载安装

    1.1.1         下载

     JDK 1.8    (jdk1.8.0_102)
       下载地址    : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(按照电脑版本下载安装)

    1.1.2         安装

    解压到指定文件夹

    (1) 安装JDK 
    (2)新建系统变量JAVA_HOME=D:Program FilesJavajdk1.8.0_102 
    (3)编辑系统变量Path,新增%JAVA_HOME%in%JAVA_HOME%jrein

    1.2   Marven下载和安装

    1.2.1         下载

    https://blog.csdn.net/changge458/article/details/53576178

    从该网站 http://maven.apache.org/download.cgi 下载

     

    1.2.2         安装

    解压到文件夹D:marvenapache-maven-3.6.3

    添加系统环境变量:MARVEN_HOME

     

    D:marvenapache-maven-3.6.3

    在系统环境变量path中加入

     

    测试mvn是否安装成功,打开cmd,以管理员身份运行,否则容易报错:'mvn' 不是内部或外部命令,也不是可运行的程序

     

    查看是否配置成功可在黑窗口中输入 mvn –v 出现如下图所示说明配置成功

     

    打开D:marvenapache-maven-3.6.3confsettings.xml 加入阿里云镜像,找到mirrors标签,添加如下阿里云镜像地址,marven下载库从这里下载更快速。

    <mirror>

        <id>nexus-aliyun</id>

        <mirrorOf>central</mirrorOf>

        <name>Nexus aliyun</name>

        <url>http://maven.aliyun.com/nexus/content/groups/public</url>

    </mirror>

    1.3   编译安装protobuff

    Protobuff是用于序列化数据的,hadoop编译需要依赖这个库。

    1.3.1         下载

    ProtocolBuffer 2.5.0    (两个文件protobuf-2.5.0.zip  protoc-2.5.0-win32.zip )

       下载地址    : https://github.com/google/protobuf/releases/tag/v2.5.0

       注:除了下载protobuf源码外,还需要下载相应版本的编译过的用于Windows平台的protoc命令(protoc-2.5.0-win32.zip),该命令用于将.proto文件转化为Java或C++源文件。

    1.3.2         安装

    ① 解压ProtocolBuffer到指定目录

    ② 解压protoc-2.5.0-win32.zip,将protoc.exe复制到C:WorkSpaceprotobuf-2.5.0src目录下

    ③ 安装ProtocolBuffer,打开CMD命令行

    cd C:WorkSpaceprotobuf-2.5.0java

    mvn test

     

    mvn install

     

     

    protoc –version    这个命令失败

    protoc.exe所在路径C:WorkSpaceprotobuf-2.5.0src,添加到系统变量Path

     

    1.4   Git下载和安装

    Git是在window的cmd黑窗口中,可以使用linux的命令。不安装会出现错误

    Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (pre-dist) on project hadoop-project-dist: Command execution failed.: Cannot run program "bash" (in directory "D:hadoophadoop-3.2.1-srchadoop-project-dist arget"): CreateProcess error=2, 系统找不到指定的文件。 -> [Help 1]

     

    1.4.1         下载

     https://git-for-windows.github.io/

    1.4.2         安装

    (1)
         
          


       (2)、
          


        (3)、
          


        (4)、
          


       (5)、
          

     

    1.5   CMake 安装

    1.5.1         下载

     https://cmake.org/download/

    Windows win64-x64 ZIP  cmake-3.16.0-win64-x64.zip

    1.5.2         安装

    解压到指定文件夹即可,path环境变量添加bin路径。

    D:hadoopcmake-3.16.0-win64-x64in

     

    1.6   Zlib下载安装

    1.6.1         下载

    http://jaist.dl.sourceforge.net/project/libpng/zlib/1.2.8/

    1.6.2         安装

    解压到指定文件夹,添加zlib系统变量

     

    2        编译hadoop

    2.1   升级项目Visual Studio的版本

    hadoop 各个版本的下载地址如

    http://archive.apache.org/dist/hadoop/core/

    编译hadoop时,自动编译会去根据项目文件找到编译器visual studio去编译,hadoop3.2.1默认是VS2010,现在要用VS2015去编译,需要将项目文件winutils.sln和native.sln升级为vs2015。由于Visual Studio版本问题,官方默认使用Visual Studio 2010 Professional,但本文采用Visual Studio 2015,因此对于生成失败的项目,需要用Visual Studio 2015重新打开,会弹出升级的对话框,升级项目至Visual Studio 2015版本即可:

    (1)       Window工具编译

    D:hadoophadoop-3.2.1-srchadoop-common-projecthadoop-commonsrcmainwinutils

    (2)hadoop.dll编译

    D:hadoophadoop-3.2.1-srchadoop-common-projecthadoop-commonsrcmain ative

    这个项目编译输出的就是hadoop.dll文件,编辑编译生成按钮,会报很多头文件错误,是因为投啊文件件包含了...... arget ativejavah,这个文件夹内的头文件,编译hadoop时,编译命令自动先复制头文件到此文件夹,然后才能编译。

    打开cmd窗口,进入路径D:hadoophadoop-3.2.1-src,执行下面的命令:

    mvn package -Pdist,native-win-DskipTests -Dtar

    2.2   Apache Hadoop Common编译错误

    2.2.1         convert-ms-winutils错误描述

    错误描述

    [INFO] Apache Hadoop Auth Examples ........................ SUCCESS [ 12.916 s]

    [INFO] Apache Hadoop Common ............................... FAILURE [02:06 min]

    [INFO] Apache Hadoop NFS .................................. SKIPPED

    [INFO] Apache Hadoop KMS .................................. SKIPPED

    [INFO] ------------------------------------------------------------------------

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (convert-ms-winutils) on project hadoop-common: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

    [ERROR]

    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.

    [ERROR] Re-run Maven using the -X switch to enable full debug logging.

    [ERROR]

    [ERROR] For more information about the errors and possible solutions, please read the following articles:

    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

    [ERROR]

    [ERROR] After correcting the problems, you can resume the build with the command

    [ERROR]   mvn <args> -rf :hadoop-common

     

    解决办法

    (1)   确认2.1中两个项目都升级成功,sln文件都是显示Visual studio 14

    (2)   VS 2015 x64 native Tools 工具执行命令mvn package -Pdist,native-win -DskipTests -Dtar -e -X

     

    2.2.2         Javah错误

    错误描述

    [ERROR] Failed to execute goal org.codehaus.mojo:native-maven-plugin:1.0-alpha-8:javah (default) on project hadoop-common: Error running javah command: Error executing command line. Exit code:1 -> [Help 1]

    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:native-maven-plugin:1.0-alpha-8:javah (default) on project hadoop-common: Error running javah command

     

    解决办法

    因为D:hadoophadoop-3.2.1-srchadoop-common-projecthadoop-common路径下的pom.xml文件中,<javahPath>${env.JAVA_HOME}/bin/javah</javahPath>采用env.JAVA_HOME 无法识别,所以讲pom.xml文件中换成javah的绝对路径:D:Javajdk1.8.0_181in\,一共有两个地方。

     

    然后命令加入参数执行–rf :hadoop-common 表示从hadoop-common开始编译:

    mvn package -Pdist,native-win-DskipTests –Dtar –rf :hadoop-common

    2.3  HDFS Native Client编译错误

    2.3.1         错误描述

    [INFO] Apache Hadoop HDFS Native Client ................... FAILURE [02:26 min]

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-hdfs-native-client: An Ant BuildException has occured: exec returned: 1

    [ERROR] around Ant part ...<exec failonerror="true" dir="D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget/native" executable="cmake">... @ 5:140 in D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client argetantrunuild-main.xml

    [ERROR] -> [Help 1]

    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-hdfs-native-client: An Ant BuildException has occured: exec returned: 1

    around Ant part ...<exec failonerror="true" dir="D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget/native" executable="cmake">... @ 5:140 in D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client argetantrunuild-main.xml

     

    2.3.2         解决方法

    D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-clientpom.xml文件打开,修改如下部分的true为false;

     

    2.4  hadoop-hdfs-native-client :RelWithDebInfo编译错误

    2.4.1         错误描述

    Finished at: 2019-12-01T18:20:30+08:00

    [INFO] ------------------------------------------------------------------------

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-hdfs-native-client: An Ant BuildException has occured: D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget ativeinRelWithDebInfo does not exist.

    [ERROR] around Ant part ...<copy todir="D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget/bin">... @ 13:101 in D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client argetantrunuild-main.xml

    [ERROR] -> [Help 1]

    2.4.2         解决方法

    D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget ativeinRelWithDebInfo does not exist.错误是这个目录不存在,则创建这个目录

    2.5  执行maven-plugin:1.3.1:exec (pre-dist)失败

    2.5.1         错误描述

    Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (pre-dist) on project hadoop-hdfs-native-client: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (pre-dist) on project hadoop-hdfs-native-client: Command execution failed.

    2.5.2         解决办法

    下载安装Cygwin
    下载:http://www.cygwin.com/setup-x86_64.exe ,安装
    配置D:cygwin64in到PATH

    然后打开cygwin64的terminal窗口,执行命令mvn package -Pdist,native-win -DskipTests -Dtar -e -X -rf :hadoop-hdfs-native-client

     

    2.6  Msbuild编译错误

    2.6.1         错误描述

    Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (make) on project hadoop-hdfs-native-client: An Ant BuildException has occured: Execute failed: java.io.IOException: Cannot run program "msbuild" (in directory "D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget ative"): CreateProcess error=2, ϵͳ▒Ҳ▒▒▒ָ▒▒▒▒▒ļ▒▒▒

    [ERROR] around Ant part ...<exec failonerror="false" dir="D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client arget/native" executable="msbuild">... @ 9:143 in D:hadoophadoop-3.2.1-srchadoop-hdfs-projecthadoop-hdfs-native-client argetantrunuild-main.xml

    2.6.2         解决办法

    下载安装vscode  https://code.visualstudio.com/docs/?dv=win

    将路径C:Program Files (x86)MSBuild14.0Bin添加到path环境变量。

    2.7  maven-surefire-plugin编译错误

    2.7.1         错误描述

    Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M1:test (default-test)

    2.7.2         解决方法

    在D:hadoophadoop-3.2.1-srchadoop-common-projecthadoop-commonpom.xml找到org.apache.maven.plugins,在configuration中添加<testFailureIgnore>true</testFailureIgnore>屏蔽测试错误。

    <plugin>

                <groupId>org.apache.maven.plugins</groupId>

                <artifactId>maven-surefire-plugin</artifactId>

                <configuration>

                           <testFailureIgnore>true</testFailureIgnore>

                  <forkCount>${testsThreadCount}</forkCount>

                  <reuseForks>false</reuseForks>

                  <argLine>${maven-surefire-plugin.argLine} -DminiClusterDedicatedDirs=true</argLine>

                  <systemPropertyVariables>

                    <testsThreadCount>${testsThreadCount}</testsThreadCount>

                    <test.build.data>${test.build.data}/${surefire.forkNumber}</test.build.data>

                    <test.build.dir>${test.build.dir}/${surefire.forkNumber}</test.build.dir>

                    <hadoop.tmp.dir>${hadoop.tmp.dir}/${surefire.forkNumber}</hadoop.tmp.dir>

                    <!-- Due to a Maven quirk, setting this to just -->

                    <!-- surefire.forkNumber won't do the parameter substitution. -->

                    <!-- Putting a prefix in front of it like "fork-" makes it -->

                    <!-- work. -->

                    <test.unique.fork.id>fork-${surefire.forkNumber}</test.unique.fork.id>

                  </systemPropertyVariables>

                </configuration>

              </plugin>

    2.8  Apache Hadoop Distribution编译错误

    2.8.1         错误描述

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (dist) on project hadoop-dist: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

     

    2.8.2         解决办法

    执行命令mvn package -Pdist,native-win -DskipTests -Dtar -e -X -rf :hadoop-dist,加上-e和-X参数显示详细的错误。会发现是目录结构问题,找不到如下路径。解决方法就是创建缺少的路径,并将生成的jar包成果物复制到路径下

    [DEBUG] Executing command line: [bash, D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-layout-stitching, 3.2.1, D:hadoophadoop-3.2.1-srchadoop-dist arget]

    cp: cannot stat '/d/hadoop/hadoop-3.2.1-src/hadoop-common-project/hadoop-kms/target/hadoop-kms-3.2.1/*': No such file or directory

    2.9  hadoop-dist: exec (toolshooks)编译错误

    2.9.1         错误描述

    Executing command line: [bash, D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-tools-hooks-maker, 3.2.1, D:hadoophadoop-3.2.1-srchadoop-dist arget, D:hadoophadoop-3.2.1-srchadoop-dist/../hadoop-tools]

    找不到文件 - *.tools-builtin.txt

    D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-tools-hooks-maker: line 137: D:hadoophadoop-3.2.1-srchadoop-dist arget/hadoop-3.2.1/etc/hadoop/hadoop-env.sh.new: No such file or directory

    mv: cannot stat 'D:hadoophadoop-3.2.1-srchadoop-dist arget/hadoop-3.2.1/etc/hadoop/hadoop-env.sh.new': No such file or directory

    Rewriting D:hadoophadoop-3.2.1-srchadoop-dist arget/hadoop-3.2.1/etc/hadoop/hadoop-env.sh

    [INFO] ------------------------------------------------------------------------

    [INFO] Reactor Summary for Apache Hadoop Distribution 3.2.1:

    [INFO]

    [INFO] Apache Hadoop Distribution ......................... FAILURE [ 25.920 s]

    [INFO] Apache Hadoop Client Modules ....................... SKIPPED

    [INFO] Apache Hadoop Cloud Storage ........................ SKIPPED

    [INFO] Apache Hadoop Cloud Storage Project ................ SKIPPED

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD FAILURE

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time:  33.530 s

    [INFO] Finished at: 2019-12-08T11:56:12+08:00

    [INFO] ------------------------------------------------------------------------

    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (toolshooks) on project hadoop-dist: Command execution failed.: Process exited with an error: 1 (Exit value: 1) -> [Help 1]

    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (toolshooks) on project hadoop-dist: Command execution failed.

    2.9.2         解决方法

    (1)错误原因和2.8相似,缺少了文件夹和文件,按照错误提示创建文件夹,找到缺少的文件放入指定文件夹。

    D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-tools-hooks-maker, 3.2.1, D:hadoophadoop-3.2.1-srchadoop-dist arget, D:hadoophadoop-3.2.1-srchadoop-dist/../hadoop-tools]

    找不到文件 - *.tools-builtin.txt

    D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-tools-hooks-maker: line 137: D:hadoophadoop-3.2.1-srchadoop-dist arget/hadoop-3.2.1/etc/hadoop/hadoop-env.sh.new: No such file or directory

    mv: cannot stat 'D:hadoophadoop-3.2.1-srchadoop-dist arget/hadoop-3.2.1/etc/hadoop/hadoop-env.sh.new': No such file or directory

    Rewriting D:hadoophadoop-3.2.1-srchadoop-dist arget/hadoop-3.2.1/etc/hadoop/hadoop-env.sh

    (2)根据描述是添加了/etc/hadoop文件夹,并且从D:hadoophadoop-3.2.1-srchadoop-common-projecthadoop-commonsrcmainconf 中追到了hadoop-env.sh复制过去,但是发现在执行编译时,总是会自动删除这个文件夹和文件。在执行下面的命令时,删除的:

    [DEBUG] Executing command line: [bash, D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-layout-stitching, 3.2.1, D:hadoophadoop-3.2.1-srchadoop-dist arget]

    Current directory /d/hadoop/hadoop-3.2.1-src/hadoop-dist/target

    $ rm -rf hadoop-3.2.1

    $ mkdir hadoop-3.2.1

    $ cd hadoop-3.2.1

    (3)打开D:hadoophadoop-3.2.1-srchadoop-dist/../dev-support/bin/dist-layout-stitching文件,发现dist-layout-stitching中有一个语句run rm -rf "hadoop-${VERSION}"会删除hadoop-3.2.1文件夹,然后再新建,新建之后再复制,所以怎么加etc/hadoop文件夹都会被删除

    (4)在文件末尾处添加如下代码,用代码去创建文件夹,并复制hadoop-env.sh文件。

    run mkdir "etc"

    run cd "etc"

    run mkdir "hadoop"

    run cd "hadoop"

    run copy  "${ROOT}hadoop-common-projecthadoop-commonsrcmainconfhadoop-env.sh"

     

    (5)执行命令>mvn package -Pdist,native-win -DskipTests -Dtar -e -X -rf :hadoop-dist

    3       大工告成

    [DEBUG]   (f) siteDirectory = D:hadoophadoop-3.2.1-srchadoop-cloud-storage-projectsrcsite

    [DEBUG]   (f) skip = false

    [DEBUG] -- end configuration --

    [INFO] No site descriptor found: nothing to attach.

    [INFO] ------------------------------------------------------------------------

    [INFO] Reactor Summary for Apache Hadoop Distribution 3.2.1:

    [INFO]

    [INFO] Apache Hadoop Distribution ......................... SUCCESS [ 39.961 s]

    [INFO] Apache Hadoop Client Modules ....................... SUCCESS [  5.721 s]

    [INFO] Apache Hadoop Cloud Storage ........................ SUCCESS [  10:36 h]

    [INFO] Apache Hadoop Cloud Storage Project ................ SUCCESS [  1.471 s]

    [INFO] ------------------------------------------------------------------------

    [INFO] BUILD SUCCESS

    [INFO] ------------------------------------------------------------------------

    [INFO] Total time:  10:37 h

    [INFO] Finished at: 2019-12-09T10:05:07+08:00

    [INFO] ------------------------------------------------------------------------

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:

    https://www.cnblogs.com/bclshuai/p/11380657.html

    参考文献

    https://blog.csdn.net/qq_37475168/article/details/90746823

  • 相关阅读:
    如何调试PHP程序
    Win10系统80端口被pid=4的System进程占用 -- 解决方法
    初用DataGrip,连接后看不到自己创建的数据库的问题
    AJAX实现跨域的三种方法
    Webstrom (或Phpstrom)使用git(oschina-码云)
    EXCEL 数字+E+数字 自动识别为指数形式的解决办法
    解决安装office2013时提示已安装相同版本的office
    将excel导入mysql(使用navicat)
    mysql按汉语拼音首字母排序
    SQL查询语句去除重复行
  • 原文地址:https://www.cnblogs.com/bclshuai/p/12009991.html
Copyright © 2020-2023  润新知