2015-07-08 17 views
7

Ich versuche Apache Hadoop 2.7.1 auf Windows x64 (8.1 und Server 2012 R2) zu installieren, aber ich auf das Tor bin Fehler:Hadoop auf Windows Gebäude/Installationsfehler

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

In den vergangenen Tagen, ich glaube, ich folgte die Schritte aller Tutorials, wie HadoopOnWindows oder this one. Ich habe alle Voraussetzungen, aber als ich gegoogelt, die relevantesten für mein Problem sind die folgenden:

  • Set Pfad zu MSBuild.exe wie: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 ; in Weg
  • Set Pfad zu CMake
  • Installieren von Microsoft SDK 7.1 und startet mit Microsoft SDK 7.1 CMD
  • zu bauen versucht: hadoop-common \ src \ main \ winutils \ libwinutils.sln und hadoop -common \ src \ main \ winutils \ winutils.sln mit Visual Studio 2013, aber das Erstellen schlägt aufgrund von Kompilierungsfehlern fehl. Visual Studio 2010 möchte sie nicht einmal öffnen. Ich weiß nicht, wie die Kompilierung Fehler zu korrigieren (bei diesen ist das Problem)

Andere ppl, ähnliches Problem
Einige der ähnlichen Themen verfolge ich diese: one, two, three, four. Ich habe hauptsächlich alle Vorschläge ausprobiert, aber es bricht immer noch.

Fehler

[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 

Hilfe
Ich habe keine Ahnung, was als nächstes zu tun, ich fühle mich wie ich alles versucht. Bitte helfen Sie mir, diesen Fehler zu beheben und fahren Sie mit der Installation von Hadoop unter Windows fort.

UPDATE 1 Blick auf den Fehler-Stack näher, sah ich, dass die Datei Microsoft.Cpp.props wurde nicht gefunden. Darüber hinaus fehlte der gesamte Ordner Programmdateien (x86)/MSBuild fehlte. Daher habe ich Visual Studio 2010 installiert und dieses Problem behoben.

Natürlich entsteht ein neues Problem. Ich bin in der Lage zu bauen libwinutils, aber nicht winutils. Ich bekomme viele LNK2001 Fehler:

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 

UPDATE 2 Die Antwort von @tiho das Problem gelöst oben erwähnt (und ich bin sehr dankbar, da es mir schon 4 Tage dauerte). Nun, ein frisches, neues Problem, auf das Tor:

[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. 

fand ich eine lahme Behelfslösung für das Problem oben. Ich habe es manuell heruntergeladen und zu den Ordnern hinzugefügt:

C: \ hadoop-2.7.1-src \ hadoop-Common-Projekt \ hadoop-km \ downloads
C: \ hadoop-2.7.1-src \ hadoop-hdfs-Projekt \ hadoop-hdfs-httpfs \ downloads
und aus der gelöscht Dateien:
C: \ hadoop-2.7.1-src \ hadoop-Common-Projekt \ hadoop-km \ target \ antrun \ build-main.xml
C: \ hadoop-2.7.1-src \ hadoop-hdfs-Projekt \ hadoop-hdfs-httpfs \ target \ antrun \ build-main.xml
die folgenden Codezeilen:

<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"/> 

Beachten Sie, dass ich auch Proxy verwenden, habe ich den Proxy in der settings.xml, und legen Sie PATH zu MAVEN_OPTS wie in der gleichen Antwort von @tiho vorgeschlagen. Ist das das Problem? Neben den dort vorgeschlagenen Optionen habe ich auch das Passwort und den Benutzernamen zu MAVEN_OPTS hinzugefügt.

Hinweis, dass ich zugreifen kann: http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz mit meinem Browser.

Aber ich bin immer noch neugierig, wie man das Problem richtig löst, weil dieses Problem weiterhin auftritt, und ich muss die gleiche Arbeit wieder tun.

Update 3 aber sagen, dass der glücklichste Moment dieser Woche:

[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] ------------------------------------------------ 
+0

Haben Sie versucht, zu fragen auf serverfault.com? – courteouselk

+0

nein. Warum sollte ich dort fragen und sollte ich diesen Beitrag dort replizieren? –

+0

Nicht sicher. Aber wenn Sie hier keine Antwort bekommen, könnten Sie vielleicht Hilfe bekommen. – courteouselk

Antwort

4

mich den ganzen Tag dauerte zu verwalten, es zu bauen ... Microsoft hat offensichtlich eine Menge Probleme mit der Abwärtskompatibilität. Es würde helfen, wenn Hadoop zu einer neueren Toolchain wechseln würde.

Hier sind die wichtigsten Schritte, die ich durchführen musste (über die im Dokument erwähnten hinaus). Dies ist die Windows SDK-Compiler statt VS 2010 (es sollte mit VS 2010 möglich sein, aber ich habe es nicht ausprobiert):

  1. Uninstall Visual Studio 2013 (Ich würde empfehlen, jedes Visual Studio zu deinstallieren> = 2010) - das ist der Fehler Visual Studio C++ 2010 Redistributable (x64 + x86 loszuwerden) MSBUILD : Configuration error MSB4146: Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))"
  2. Uninstall - Failure during conversion to COFF: file invalid or corrupt
  3. Reboot
  4. zu vermeiden - Error when installing windows SDK 7.1
  5. Deinstallation vollständig .NET Framework 4.5 zu vermeiden
  6. Installieren Sie .NET Framework 4.0
  7. Installieren Sie Windows SDK 7,1

ich zu meinem PATH (in der Windows SDK-Shell) hinzugefügt, um den Ordner ist meine Git-Installation (für GNU-Tools), der Ordner ist CMake und der Ordner mit Protoc .exe. Zusätzlich (aber die meisten Leute sollten es nicht brauchen), musste ich Maven einrichten, um meinen HTTP-Proxy zu verwenden, zuerst Bearbeiten settings.xml wie in Maven's Dokumentation angegeben, aber auch durch Definieren der Umgebungsvariablen MAVEN_OPTS=-Dmy.proxy.host -Dhttp.proxyPort=my.proxy.port, da sonst irgendwann ein Timeout aufgetreten ist während des Builds.

Beachten Sie, dass ich während des Builds eine Reihe von Warnungen bemerkt habe: Ich vermute, dass einige davon durch die Verwendung des Java SDK 1.8 statt 1.7 verursacht wurden. Aber nachdem ich endlich eine BUILD SUCCESS gesehen hatte, hatte ich keine Lust mehr mit 1.7 zu versuchen.

+0

Hallo Tiho, danke für deine ausführliche Erklärung. Leider habe ich das ungelöste externe Symbol oben erklärt. Ich bin den Anweisungen gefolgt, habe aber immer noch kein Glück. Visual Studio 2010, Java 1.8, Windows 10 32 Bit, Hadoop 2.6 Ich kann die Winutils und die andere Bibliothek mit VS nicht erstellen. Es sollte ein Problem mit der Einrichtung meiner Systeme sein. Ich glaube nicht, dass ich irgendeinen Quellcode reparieren muss, es könnte ein Misskonfigurationsproblem sein. Jeder Kommentar wird sehr geschätzt. Mit freundlichen Grüßen, Paul –

+0

@PlayingWithBI Ich fürchte, ich kann nicht mehr als das, was ich oben gepostet habe, habe ich nicht wirklich jedes alternative Setup selbst ausprobiert. Aber ich sehe, dass Sie VS 2010 erwähnen, während ich es persönlich deinstallierte und stattdessen den Windows SDK-Compiler verwendete. Vielleicht könntest du es auch versuchen? – tiho

7

Ich habe es geschafft, es mit Visual Studio 2015 Community Edition zu bauen.

Hier ist, wie ich gebaut habe es:

Meine Umgebung

Hier ist meine Einkaufsliste:

  • Windows-10
  • JDK 1.8.0_51
  • Maven 3.3. 3
  • Findbugs 1.3.9 (Ich habe das nicht benutzt)
  • ProtocolBuffer 2.5.0 (ich habe holen die neueste und größte nicht hier - es 2.5.0 sein)
  • CMake 3.3.0
  • Visual Studio 2015 Community Edition
  • GnuWin32 0.6.3 - ein wenig schmerzhaft zu installieren, aber so ist cygwin
  • zlib 1.2.8
  • Internetverbindung

Windows-Systemumgebungsvariable s

  • JAVA_HOME = "C: \ Programme \ Java \ jdk1.8.0_51"
  • MAVEN_HOME = c: \ Apache-Maven-3.3.3

(machen sicher, dass Sie das oben auf Ihre JDK-Version und maven Installation zeigen)

Ich habe folgende an meine Windows-Systemumgebung angehängt Pfadvariable:

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

Die seltsame „C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 "Pfad ist der Speicherort von MSBuild.exe, der während des Erstellungsprozesses benötigt wird.

Protoc Puffer 2.5.0

Oh nein, ein anderer Unix/Linux nur bauen? Ich habe das Google-Paket namens protoc-2.5.0-win32.zip heruntergeladen. Dann extrahierte die Binärdatei (protoc.exe) nach c: \ windows \ system32 - nur eine faule Möglichkeit, es auf den Pfad zu setzen.

Ich bin nicht 100% sicher von der Wirkung einer Win32-Komponente für diese Win64-Build. Aber: "Hadoop 0.23+ erfordert, dass sich die Protokollpuffer JAR (protobufs.jar) im Klassenpfad von Clients und Servern befinden. Die nativen Binärdateien werden benötigt, um diese und spätere Versionen von Hadoop zu kompilieren." - http://wiki.apache.org/hadoop/ProtocolBuffers.

Also ich verstehe die Win32-Programmdatei wird nur während des Build-Prozesses verwendet (die Jar-Äquivalent sollte im Build verpackt sein).

Wenn es in irgendeiner Weise verwendet wird, nativen Code zu kompilieren, können wir aus, um mit einigen Zeiger verlassen haben. Ich werde darauf zurückkommen, wenn ich kann.

die Hadoop Tweaking Quellen

Nun, das war notwendig, damit die Ausführung zu bauen. Es sollte die Qualität des Builds selbst nicht beeinträchtigen, aber denken Sie daran, dass das Ergebnis eine inoffizielle, nicht unterstützte Verwendung auf eigene Gefahr ist, die für eine Entwicklungsumgebung gedacht ist.

Migrating VS-Projekte

Die folgenden Dateien öffnen mit Visual Studio 2015 sein müssen:

\ hadoop-common-Projekt \ hadoop-common \ src \ main \ winutils \ winutils.vcxproj \ hadoop -common-Projekt \ hadoop-common \ src \ main \ nativen \ native.vcxproj

Visual Studio beschwert sie von einer alten Version zu sein. Alles, was Sie tun müssen, ist alles zu speichern und zu schließen.

Aktivieren Cmake VS 2015 Projektgenerierung für hdfs

Auf der Linie 441 von \ hadoop-hdfs-Projekt \ hadoop-hdfs \ pom.xml, bearbeiten Sie den anderen Wert als die folgende:

< Zustand property = "Generator" value = "Visual Studio 10" else = "Visual Studio 14 2015 Win64" >

(der "Wert" Wert gilt für win32 - Sie können es für win32 wenn Gebäude bearbeiten möchten).

Gebäude es

sollten Sie versuchen, und auf Fenster, um die „Entwicklung Eingabeaufforderung für VS2015“ zu finden. Ich frage mich immer noch, was das Besondere daran ist, aber Tatsache ist, dass es nur damit funktionieren wird.

Weiteres Umgebungsvariablen Die auf der Eingabeaufforderung getan werden soll:

Sets Platform = x64

Satz ZLIB_HOME = C: \ zlib \ include (im Gegensatz zu den offiziellen Anweisungen, dies zeigen soll in den Include-Ordner).

Schließlich baut es

Zum hadoop Quellordner und Ausgabe:

mvn Paket -Pdist, Native-win -DskipTests -Dtar

Was kommt als nächstes?

Befolgen Sie die offizielle Dokumentation Ihre hadoop Instanz konfiguriert zu erhalten und in Betrieb.

Ich werde versuchen, auf meinem Blog einen Link mit den Binärdateien zu halten:

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

+0

Wirklich hilfreiche Antwort! Ich habe erfolgreich Hadoop auf VS2015 + Windows 10 mit Hilfe dieser Antwort erstellt. –