windows上的hadoop生成/安装错误

oxcyiej7  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(554)

我正在尝试在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运行
已尝试使用visual studio 2013生成:hadoop common\src\main\winutils\libwinutils.sln和hadoop common\src\main\winutils\winutils.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。此外,整个文件夹程序文件(x86)/msbuild丢失。因此,我安装了visualstudio2010并修复了这个问题。
当然,一个新的问题出现了。我可以构建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:\hadoop-2.7.1-src\hadoop公共项目\hadoop kms\downloads
c:\hadoop-2.7.1-src\hadoop hdfs项目\hadoop hdfs httpfs\downloads
并从文件中删除:
c:\hadoop-2.7.1-src\hadoop公共项目\hadoop kms\target\antrun\build-main.xml
c:\hadoop-2.7.1-src\hadoop hdfs项目\hadoop hdfs httpfs\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"/>

请注意,我也在使用代理,我在settings.xml中设置了代理,并按照@tiho的相同答案中的建议设置maven\u opts的路径。这就是问题所在吗?除了这里建议的选项之外,我还为maven\u选项添加了密码和用户名。
请注意,我可以访问: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] ------------------------------------------------
ecr0jaav

ecr0jaav1#

我想和大家分享一下在windows8.1上构建hadoop3.1.2的经验。我花了很多时间修复构建错误,但我所需要的只是hadoop源代码根文件夹中building.txt文件中的“building on windows”部分。
我使用了“x64 native tools command prompt for vs 2017”。
所以,这是我的步骤
1阅读“\hadoop-3.1.2-src\building.txt”一节“在windows上构建”。
这实际上可能足以说明您需要做什么,但对于vs 2017来说,过程有些不同。
2将源代码放入短路径以避免“命令行太长”错误。
我曾经 d:\hdp\ 文件夹
三。正如building.txt中所述,使用“\hadoop-3.1.2-src\dev support\win-paths-eg.cmd”设置环境。
使用本机工具时,不需要在.cmd文件末尾使用call命令,因此请将其注解掉:

@REM CALL "%MSVS%\VC\vcvarsall.bat" %VCVARSPLAT%

我的设置如下所示:

SET Platform=x64
SET VCVARSPLAT=amd64

@REM******************
@REM Forcibly move the Maven local repo
@REM (use short path to avoid 'the command line is too long' error)

SET MAVEN_OPTS=-Dmaven.repo.local=D:\.m2

@REM*******************************************
@REM
@REM Locations of your bits and pieces
@REM
@REM NOTE: cmake is assumed to already be on the
@REM command path
@REM (it's true when you use Native Tools Command Prompt)

SET MAVEN_HOME=%MAVEN_HOME%
SET JAVA_HOME=%JAVA_HOME%
@REM SET MSVS=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional
SET PROTO_BIN=D:\tools\protoc-2.5.0-win32
SET GIT_HOME=C:\Program Files (x86)\Git
set ZLIB_HOME=D:\tools\zlib-1.2.11

SET PATH=%JAVA_HOME%\bin;%MAVEN_HOME%\bin;%PROTO_BIN%;%GIT_HOME%\bin;%PATH%

@REM CALL "%MSVS%\VC\vcvarsall.bat" %VCVARSPLAT%

当然,您需要在上面列出的路径中安装java、maven、protobuf、git和zlib。
4运行“针对vs 2017的x64本机工具命令提示符”
在“x64 native tools command prompt for vs 2017”中,导航到hadoop的源文件夹,运行“win-paths-eg.cmd”并开始使用maven构建:

d:
cd D:\hdp
D:\hdp\dev-support\win-paths-eg.cmd
mvn package -Pdist,native-win -DskipTests -Dtar

5w

lhcgjxsq

lhcgjxsq2#

我花了一整天的时间来建造它。。。微软在向后兼容性方面显然有很多问题。如果hadoop转向一个更新的工具链,那会有所帮助。
以下是我必须执行的关键步骤(除了文档中提到的那些步骤)。这是使用windows sdk编译器而不是vs 2010(vs 2010应该可以实现,但我没有尝试):
卸载VisualStudio2013(我建议卸载任何VisualStudio>=2010)--这是为了消除错误 MSBUILD : Configuration error MSB4146: Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))" 卸载visual studio c++2010 redistributable(x64+x86)--以避免在安装windows sdk 7.1时出错
完全卸载.net framework 4.5--以避免转换为coff时失败:文件无效或损坏
重新启动
安装.net framework 4.0
安装windows sdk 7.1
我将git安装的bin文件夹(对于gnu工具)、cmake的bin文件夹和包含protoc.exe的文件夹添加到我的路径(在windows sdk shell中)。此外(但大多数人不需要它),我必须设置maven来使用我的http代理,首先是编辑 settings.xml 正如maven的文档中所指出的,还可以通过定义环境变量 MAVEN_OPTS=-Dmy.proxy.host -Dhttp.proxyPort=my.proxy.port ,否则在生成过程中的某个点会超时。
请注意,我在构建过程中注意到大量警告:我怀疑其中一些警告是由使用JavaSDK1.8而不是1.7引起的。然而在终于看到一个 BUILD SUCCESS 我不想再尝试1.7了。

x759pob2

x759pob23#

我已经成功地用VisualStudio2015社区版构建了它。
我是这样做的:
我的环境
这是我的购物清单:
视窗10
jdk 1.8.0第51页
Maven3.3.3
FindBugs1.3.9(我还没用过这个)
ProtocolBuffer2.5.0(我没有选择最新和最棒的,它必须是2.5.0)
cmake 3.3.0版
visual studio 2015社区版
gnuwin32 0.6.3-安装起来有点痛苦,但cygwin也是
zlib第1.2.8条
internet连接
windows系统环境变量
java\u home=“c:\program files\java\jdk1.8.0\u 51”
maven_home=c:\apache-maven-3.3.3
(请确保将上述内容指向jdk版本和maven安装)
我将以下内容附加到windows系统环境变量path中:
;%maven\u home%\bin;c:\windows\microsoft.net\framework64\v4.0.30319;c:\zlib公司
“c:\windows\microsoft.net\framework64\v4.0.30319”路径是msbuild.exe的位置,生成过程中需要该位置。
protoc缓冲区2.5.0
哦,不,另一个unix/linux版本?我已经下载了名为protoc-2.5.0-win32.zip的google包。然后将二进制文件(protoc.exe)解压到c:\windows\system32-这只是一种将其放在路径上的惰性方法。
我不能百分之百肯定在这个win64构建中使用win32组件的效果。但是:“hadoop0.23+要求协议缓冲区jar(protobufs.jar)位于客户机和服务器的类路径上;编译此版本和更高版本的hadoop需要本机二进制文件http://wiki.apache.org/hadoop/protocolbuffers.
所以我知道win32可执行文件只在构建过程中使用(jar等价物应该打包在构建中)。
如果以任何方式使用它来编译本机代码,我们可能会留下一些无序的指针。我有时间再谈这个。
调整hadoop源代码
好吧,这是允许构建执行所必需的。它不应该影响构建本身的质量,但是让我们记住,结果是一个非官方的、不受支持的、使用风险自负的hadoop,用于开发环境。
迁移vs项目
需要使用visual studio 2015打开以下文件:
\hadoop common project\hadoop common\src\main\winutils\winutils.vcxproj\hadoop common project\hadoop common\src\main\native\native.vcxproj
VisualStudio会抱怨它们是旧版本。你所要做的就是全部保存并关闭。
为hdfs实现cmake vs 2015项目生成
在\hadoop hdfs project\hadoop hdfs\pom.xml的第441行,按如下所示编辑else值:
<condition property=“generator”value=“visual studio 10”else=“visual studio 14 2015 win64”>
(“value”值适用于win32-如果为win32生成,则可能需要对其进行编辑)。
构建it
您应该尝试在windows上找到“vs2015的开发命令提示符”。我仍然在想这有什么特别之处,但事实是,它只适用于这一点。
更多应在命令提示符下执行的环境变量:
设置平台=x64
设置zlib\u home=c:\zlib\include(与官方说明不同,这应该指向include文件夹)。
终于建成了
转到hadoop源文件夹并发布:
mvn包-pdist,本机win-dskiptests-dtar
接下来呢?
按照官方文档进行hadoop示例的配置和运行。
我将尝试在我的博客上保留二进制文件的链接:
http://kplitzkahran.blogspot.co.uk/2015/08/hadoop-271-for-windows-10-binary-build.html

fykwrbwg

fykwrbwg4#

我在Windows10上用VisualStudio2017成功构建了Hadoop3.0.2。
以下是我的设置:
视窗10
visual studio 2017社区版
maven 3.5.0版
jdk 1.8.0\单元144
cmake 3.10.0-rc1
协议缓冲区2.5.0
赛文
首先,我在VS2017中打开这两个解决方案文件并保存。

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

这将把这两个项目从VS2010迁移到VS2017。
其次,我需要更改pom文件的第141行,该行位于

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_repo ).
最后我打开了门 x64 Native Tools Command Prompt for VS 2017 , cd 并发出以下命令:

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

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

相关问题