当前位置: 首页 > 知识库问答 >
问题:

Windows上的Hadoop生成/安装错误

徐文彬
2023-03-14

我正在尝试在Windows x64(8.1和Server 2012 R2)上安装Apache Hadoop 2.7.1,但目标失败:

    [INFO] Apache Hadoop Common ............................... FAILURE [ 37.925 s]

在过去的日子里,我想我遵循了所有教程的步骤,比如HadoopOnWindows,或者这个。我做了所有的先决条件,但是当我谷歌时,我的问题的相关条件如下:

  • 将路径设置为MSBuild。exe类似于:C:\Windows\Microsoft。NET\Framework64\v4。0.30319; 在路径中
  • 将路径设置为CMake
  • 安装Microsoft SDK 7.1并使用其Microsoft SDK 7.1 CMD运行
  • 已尝试生成:hadoop common\src\main\winutils\libwinutils。sln和hadoop公用\src\main\winutils\winutils。使用Visual Studio 2013生成sln,但由于编译错误,生成失败。VisualStudio2010甚至不想打开它们。我不知道如何纠正编译错误(如果这是个问题)

其他ppl,类似的问题
我下面的一些类似主题是:一,二,三,四。我主要尝试了所有的建议,但还是失败了。

错误

    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 01:11 min
    [INFO] Finished at: 2015-07-08T15:18:29+02:00
    [INFO] Final Memory: 69M/269M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (c
    ompile-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 swit
    ch.
    [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 rea
    d the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionE
    xception
    [ERROR]
    [ERROR] After correcting the problems, you can resume the build with the command

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

帮助
我不知道下一步该怎么办,我觉得我什么都试过了。请帮助我解决此错误并继续在Windows上安装Hadoop。

更新1仔细查看错误堆栈,我看到文件Microsoft.cpp.props未找到。此外,整个文件夹Program Files(x86)/MSBuild丢失。因此,我安装了Visual Studio 2010并修复了此问题。

当然,出现了一个新问题。我能够构建libwinutils,但不能构建winutils。我收到许多LNK2001错误:

Error   48  error LNK1120: 18 unresolved externals  C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\x64\Release\winutils.exe  winutils
Error   36  error LNK2001: unresolved external symbol BuildServiceSecurityDescriptor    C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   32  error LNK2001: unresolved external symbol ChownImpl C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   40  error LNK2001: unresolved external symbol CreateEnvironmentBlock    C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   44  error LNK2001: unresolved external symbol CreateLogonTokenForUser   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   41  error LNK2001: unresolved external symbol DestroyEnvironmentBlock   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   37  error LNK2001: unresolved external symbol EnableImpersonatePrivileges   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   34  error LNK2001: unresolved external symbol GetSecureJobObjectName    C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   38  error LNK2001: unresolved external symbol KillTask  C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   43  error LNK2001: unresolved external symbol LoadUserProfileForLogon   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   35  error LNK2001: unresolved external symbol LogDebugMessage   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   46  error LNK2001: unresolved external symbol LookupKerberosAuthenticationPackageId C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   31  error LNK2001: unresolved external symbol MIDL_user_allocate    C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\hadoopwinutilsvc_s.obj    winutils
Error   30  error LNK2001: unresolved external symbol MIDL_user_free    C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\hadoopwinutilsvc_s.obj    winutils
Error   47  error LNK2001: unresolved external symbol RegisterWithLsa   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   33  error LNK2001: unresolved external symbol SplitStringIgnoreSpaceW   C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils
Error   42  error LNK2001: unresolved external symbol UnloadProfileForLogon C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   45  error LNK2001: unresolved external symbol UnregisterWithLsa C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\task.obj  winutils
Error   39  error LNK2001: unresolved external symbol wsceConfigRelativePath    C:\hdfs\hadoop-common-project\hadoop-common\src\main\winutils\service.obj   winutils

更新2来自@tiho的答案解决了上述问题(我非常感谢,因为我已经花了4天时间)。现在,一个新的问题,目标是:

[INFO] Apache Hadoop KMS .................................. FAILURE [  1.531 s]

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (dist) on project hadoop-kms: An Ant BuildException has occured: java.net.UnknownHostException: archive.apache.org
[ERROR] around Ant part ...<get dest="downloads/apache-tomcat-6.0.41.tar.gz" skipexisting="true" verbose="true" src="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache tomcat-6.0.41.tar.gz"/>... @ 5:182 in C:\hadoop-2.7.1-src\hadoop-common project\hadoop-kms\target\antrun\build-main.xml: Unknown host archive.apache.org.

我找到了一个解决上述问题的蹩脚方法。我手动下载并添加到文件夹中:

C:\hadopop-2.7.1-src\hadopop-2.7.1-src\hadopop-2.7.1-src\hadopop-2.7.1-src\hadopop-hdfs-project\hadopop-hdfs-http pfs\下载
并从文件中删除:
C:\hadopop-2.7.1-src\hadopop-conver-project\hadopop-kms\Target\antrun\build-main.xml
C:\hadoop-2.7.1-src\hadoop-hdfs-项目\hadoop-hdfs-http pfs\Target\antrun\build-main.xml
以下代码行:

<mkdir dir="downloads"/>
  <get dest="downloads/apache-tomcat-6.0.41.tar.gz" skipexisting="true" verbose="true" src="http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz"/>

请注意,我也在使用代理,我已经在设置中设置了代理。xml,并将路径设置为MAVEN_OPTS,正如@tiho的相同答案中所建议的那样。这就是问题所在吗?除了这里建议的选项外,我还向MAVEN_选项添加了密码和用户名。

请注意,我可以访问:http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz使用我的浏览器。

但我仍然很好奇如何正确地解决这个问题,因为这个问题还在继续出现,我需要再次做同样的工作。

更新3话虽如此,本周最快乐的时刻:

[INFO] ------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------
[INFO] Total time: 21:05 min
[INFO] Finished at: 2015-07-10T11:33:17+02:00
[INFO] Final Memory: 228M/672M
[INFO] ------------------------------------------------

共有3个答案

周睿范
2023-03-14

我在Windows 10上使用Visual Studio 2017成功构建了Hadoop 3.0.2。

以下是我的设置,如下所示:

  1. Windows 10

首先,我在VS 2017中打开这两个解决方案文件并保存。

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

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

这将把这两个项目从VS 2010迁移到VS 2017。

第二,我需要更改位于

D:\hadoop-3.0.2-src\hadoop-hdfs-project\hadoop-hdfs-native-client\pom.xml

<condition property="generator" value="Visual Studio 10" else="Visual Studio 15 2017 Win64">

这将确保在建造过程中使用VS 2017。

我还遇到了一个问题,MSBuild抱怨命令太长,然后停止工作,我认为这与Maven默认存储库位置有关。为了解决这个问题,我添加了以下行

<localRepository>D:/maven_repo</localRepository>

归档

apache-maven-3.5.0\conf\settings.xml

将Maven存储库移动到新位置(在本例中为D:/Maven\u repo)。

最后,我打开了VS2017的x64本机工具命令提示符,cd到hadoop源文件夹,并发出了以下命令:

mvn clean package -Pdist,native-win -DskipTests -Dtar -Dmaven.repo.local=D:\maven_repo

我花了10多个小时来解决所有问题,希望我的解决方案也能帮助其他人。

经国安
2023-03-14

我花了一整天的时间来建造它。。。微软在向后兼容性方面显然有很多问题。如果Hadoop转向更新的工具链,这将有所帮助。

以下是我必须执行的关键步骤(除了文档中提到的步骤)。这是使用Windows SDK编译器而不是VS 2010(这应该是可能的VS 2010,但我没有尝试过):

  1. 卸载Visual Studio 2013(我建议卸载任何Visual Studio

我将Git安装的bin文件夹(用于GNU工具)、CMake的bin文件夹和包含protoc的文件夹添加到我的路径(在windowsdkshell中)。exe。此外(但大多数人不应该需要它),我必须设置Maven来使用我的HTTP代理,首先编辑设置。xml如Maven的文档所示,但也可以通过定义环境变量Maven_OPTS=-Dmy。代理主机-Dhttp。proxyPort=my。代理端口,否则在生成过程中的某个时间点会超时。

请注意,我在构建过程中注意到了大量警告:我怀疑其中一些警告是由使用JavaSDK1.8而不是1.7引起的。然而,在最终看到构建成功后我不想再次尝试使用1.7。

王宜
2023-03-14

我已经成功地用Visual Studio 2015社区版构建了它。

我是这样建造的:

我的环境

这是我的购物清单:

  • Windows 10
  • JDK 1.80_51
  • Maven 3.3.3
  • Findbugs 1.3.9(我没用过这个)
  • 协议缓冲区2.5.0(我没有在这里选择最新和最大的-它必须是2.5.0)
  • Cmake 3.3.0
  • Visual Studio 2015社区版
  • GnuWin32 0.6.3-安装有点痛苦,但cygwin也是如此
  • zlib 1.2.8
  • 互联网连接

Windows系统环境变量

  • JAVA\u HOME=“C:\Program Files\JAVA\jdk1.8.0\u 51”
  • MAVEN_HOME=c:\apache-MAVEN-3.3.3

(确保以上内容指向JDK版本和maven安装)

我将以下内容附加到我的windows系统环境路径变量:

;%MAVEN_HOME%\bin; C:\Windows\Microsoft.NET\Framework64\v4.0.30319; c:\zlib

奇怪的“C:\Windows\Microsoft.NET\Framework64\v4.0.30319”路径是MSBuild的位置。exe,这在生成过程中是必需的。

原型缓冲区2.5.0

哦,不,另一个仅unix/linux版本?我已经下载了名为protoc-2.5.0-win32的谷歌软件包。拉链然后将二进制文件(protoc.exe)解压缩到c:\windows\system32,这只是将其放在路径上的一种惰性方式。

我不能100%确定为这个win64构建使用win32组件的效果。但是:“Hadoop 0.23要求协议缓冲区JAR(protobufs.JAR)位于客户端和服务器的类路径上;编译此版本和更高版本的Hadoop需要本机二进制文件。”http://wiki.apache.org/hadoop/ProtocolBuffers.

所以我知道win32可执行文件只在构建过程中使用(jar等价物应该打包在构建中)。

如果以任何方式使用它来编译本机代码,我们可能会留下一些乱序的指针。我可以的时候会回来的。

调整Hadoop源

嗯,这是允许构建执行的必要条件。它不应该影响构建本身的质量,但是让我们记住,结果是一个非官方的、不受支持的、自担风险的hadoop,用于开发环境。

迁移VS项目

以下文件需要使用Visual Studio 2015打开:

\hadoop公共项目\hadoop公共\src\main\winutils\winutils。vcxproj\hadoop公共项目\hadoop公共\src\main\native\native。vcxproj

VisualStudio会抱怨它们是旧版本。您所要做的就是保存所有并关闭。

为hdfs实现cmake VS 2015项目生成

在\hadoop hdfs project\hadoop hdfs\pom的第441行。xml,按如下方式编辑else值:

(该“值”值适用于win32-如果为win32构建,则可能需要对其进行编辑)。

建造它

您应该尝试在windows上找到“VS2015的开发命令提示符”。我仍然想知道这有什么特别之处,但事实是,它只适用于这一点。

更多环境变量应该在命令提示符上执行:

设置平台=x64

设置ZLIB_HOME=C:\ZLIB\include(与官方说明不同,这应该指向include文件夹)。

终于建成了

转到hadoop源码文件夹并发布:

mvn包-Pdist,本机win-DSKIPTEST-Dtar

接下来呢?

按照官方文档来配置hadoop实例并启动和运行。

我会试着在我的博客上保留一个二进制文件的链接:

http://kplitzkahran.blogspot.co.uk/2015/08/hadoop-271-for-windows-10-binary-build.html

 类似资料:
  • 当我试图为Java设置变量时,它似乎没有按照预期的方式进行。 我在我的机器上作为安装程序专门用于运行和使用Hadoop。此用户是sudoer。 一些信息: 并列出内容 然后键入和,这将显示以下路径: 好的,使用这些信息,然后将该目录复制到文件中,如下所示:

  • org.apache.maven.lifecycle.生命周期执行异常:未能执行目标org.codehaus.mojo: exec-maven-plugin: 1.3.1: exec(compile-ms-winutils)上的项目hadoop通用:命令执行失败。

  • 这里使用 EnterpriseDB 来下载安装,EnterpriseDB 是全球唯一一家提供基于 PostgreSQL 企业级产品与服务的厂商。 下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads。 双击下载安装包,开始安装 你可以修改安装路径 选择安装组件,不懂的选就是全部勾上: 设置数据库路径 设置

  • 我刚刚安装完RubyonRails包(Rails4.1.8)。在为其创建一个新目录后,如,当它到达时,通常会收到此错误消息 “Gem::RemoteFetcher::FetchError:SSL\u connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书变量失败https://rubygems.org/gems/rake-10.4.0gem.安装rake时出错

  • 写一下简单的安装方法 1.下载软件 需要的软件有 nginx、php、mysql,如不需要可不安装,nginx.org、www.php.net 上面有下载地址,全部解压出来,php基本不用做任何修改(下载直接解压版本的) 2.配置nginx 只需修改一行(nginx/conf/nginx.conf) fastcgi_param  SCRIPT_FILENAME  d:/nginx/html/$fa

  • 问题内容: 我下载了JDK8 build b121,尝试安装时出现以下错误: 操作系统是Windows XP版本2002 Service Pack 3(32位)。 问题答案: 发生这种情况是因为Oracle 如http://mail.openjdk.java.net/pipermail/openjfx- dev/2013-July/中 所述放弃了对Windows XP的支持(顺便说一下安装程序尚未