2015-07-08 23 views
7

Sto cercando di installare Apache Hadoop 2.7.1 su Windows x64 (8.1 e Server 2012 R2), ma io sto riuscendo in porta:Hadoop su Windows Costruire/Errore di installazione

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

Nei giorni scorsi, penso ho seguito i passaggi di tutte le esercitazioni, come HadoopOnWindows o this one. Ho fatto tutti i prerequisiti, ma come ho Googled, quelli rilevanti per il mio problema sono i seguenti:

  • Imposta percorso MSBuild.exe come: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 ; nel percorso
  • Imposta percorso CMake
  • Installare Microsoft SDK 7.1 e familiare con Microsoft SDK 7.1 CMD
  • cercato di costruire: Hadoop-common \ src \ Main \ winutils \ libwinutils.sln e Hadoop -common \ src \ main \ winutils \ winutils.sln con Visual Studio 2013, ma la creazione non riesce a causa di errori di compilazione. Visual Studio 2010 non vuole nemmeno aprirli. Non so come correggere gli errori di compilazione (nel caso in cui questo è il problema)

Altri ppl, simili problema
Alcuni degli argomenti simili sto seguendo sono questi: one, two, three, four. Ho provato principalmente tutti i suggerimenti, ma si rompe ancora.

errore

[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 

Aiuto
Non ho idea di cosa fare dopo, mi sento come ho provato di tutto. Per favore aiutami a risolvere questo errore e continua con l'installazione di Hadoop su Windows.

UPDATE 1 Guardando sul stack errori più da vicino, ho visto che il file Microsoft.Cpp.props non è stato trovato. Inoltre, l'intera cartella Program Files (x86)/MSBuild mancava. Così, ho installato Visual Studio 2010 e risolto questo problema.

Naturalmente, sorge un nuovo problema. Sono in grado di costruire libwinutils, ma non winutils. Ricevo molte LNK2001 errori:

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 La risposta @tiho ha risolto il problema di cui sopra (e io sono molto grato, come mi ci sono voluti già 4 giorni). Ora, un nuovo nuovo problema, all'obiettivo:

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

Ho trovato un pessimo lavoro attorno al problema sopra. L'ho scaricato manualmente, aggiunto alle cartelle:

C: \ hadoop-2.7.1-src \ Hadoop-comune-progetto \ Hadoop-km \ downloads
C: \ Hadoop-2.7.1-src \ Hadoop HDFS-progetto \ Hadoop HDFS-httpfs \ downloads
e cancellata dal file:
C: \ Hadoop-2.7.1-src \ Hadoop-comune-progetto \ Hadoop-km \ obiettivo \ antrun \ build-main.xml
C: \ Hadoop-2.7.1-src \ Hadoop-HDFS-progetto \ Hadoop HDFS-httpfs \ obiettivo \ antrun \ build-main.xml
le seguenti righe di codice:

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

Nota che sto anche utilizzando il proxy, ho impostato il proxy nelle impostazioni .xml e impostato PATH su MAVEN_OPTS come suggerito nella stessa risposta da @tiho. È questo il problema? oltre alle opzioni suggerite, ho aggiunto anche password e nome utente a MAVEN_OPTS.

Nota che posso accedere a: http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz utilizzando il mio browser.

Ma io sono ancora curioso di come risolvere il problema correttamente, perché questo problema continua ad apparire, e ho bisogno di fare lo stesso lavoro di nuovo.

Update 3 Detto questo, il momento più felice di questa settimana:

[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

Hai provato a chiedere il serverfault.com? – courteouselk

+0

no. perché dovrei chiedere lì e dovrei replicare questo post lì? –

+0

Non sicuro. Ma se non ottieni la risposta qui, forse lì potresti essere in grado di ottenere aiuto. – courteouselk

risposta

4

Mi ha portato l'intera giornata per riuscire a costruirla ... Microsoft ha ovviamente un sacco di problemi con la compatibilità a ritroso. Sarebbe d'aiuto se Hadoop passasse a una toolchain più recente.

Ecco i passaggi chiave che dovevo eseguire (oltre a quelli citati nel documento). Ciò sta usando il compilatore di Windows SDK piuttosto che VS 2010 (che dovrebbe essere possibile con VS 2010, ma non l'ho provato):

  1. disinstallare Visual Studio 2013 (consiglio di disinstallare qualsiasi Visual Studio> = 2010) - questo è per sbarazzarsi di errore MSBUILD : Configuration error MSB4146: Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))"
  2. Disinstalla Visual Studio C++ 2010 Redistributable (x64 + x86) - per evitare Error when installing windows SDK 7.1
  3. Disinstallare completamente .NET Framework 4.5 - per evitare Failure during conversion to COFF: file invalid or corrupt
  4. Reboot
  5. Installa .NET Framework 4.0
  6. Installare Windows SDK 7,1

ho aggiunto al mio PATH (nel SDK shell di Windows) nella cartella bin della mia installazione Git (per strumenti GNU), la cartella bin CMake, e il ProtoC cartella contenente .exe. Inoltre (ma la maggior parte delle persone non dovrebbe averne bisogno), ho dovuto impostare Maven per usare il mio proxy HTTP, modificando prima settings.xml come indicato nella documentazione di Maven, ma anche definendo la variabile di ambiente MAVEN_OPTS=-Dmy.proxy.host -Dhttp.proxyPort=my.proxy.port, altrimenti c'era un timeout ad un certo punto durante la costruzione.

Nota che ho notato una buona quantità di avvisi durante la compilazione: sospetto che alcuni di essi siano causati dall'uso di Java SDK 1.8 anziché 1.7. Tuttavia dopo aver finalmente visto un BUILD SUCCESS non ho voglia di riprovare con 1.7.

+0

Ciao Tiho, grazie per la tua spiegazione dettagliata. Sfortunatamente, sto sperimentando il simbolo esterno non risolto sopra spiegato. Ho seguito le indicazioni pubblicate ma non ho ancora avuto fortuna. Visual Studio 2010, java 1.8, windows 10 32 bit, hadoop 2.6 Non riesco a creare Winutils e l'altra libreria con VS. Dovrebbe essere un problema con la configurazione dei miei sistemi. Non penso di dover correggere alcun codice sorgente, potrebbe trattarsi di un problema di configurazione errata. Qualsiasi commento sarà molto apprezzato. Cordiali saluti, Paul –

+0

@PlayingWithBI. Temo di non poter dire più di quello che ho postato sopra, non ho provato personalmente alcuna installazione alternativa. Ma vedo che menzioni VS 2010 mentre l'ho disinstallato personalmente e ho usato il compilatore di Windows SDK. Forse potresti dargli un colpo anche tu? – tiho

7

Sono riuscito a costruirlo con l'edizione della comunità di Visual Studio 2015.

Ecco come ho costruita io:

Il mio ambiente

Ecco la mia lista della spesa:

  • di Windows 10
  • JDK 1.8.0_51
  • Maven 3.3. 3
  • Findbugs 1.3.9 (non l'ho usato)
  • ProtocolBuffer 2.5.0 (I non ha preso l'ultima e più grande qui - deve essere 2.5.0)
  • CMake 3.3.0
  • Visual Studio 2015 Community Edition
  • GnuWin32 0.6.3 - un po 'doloroso per l'installazione, ma lo è anche cygwin
  • zlib 1.2.8
  • connessione Internet
variabile

di Windows System Environment s

  • JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_51"
  • MAVEN_HOME = c: \ apache-maven-3.3.3

(fare assicurarsi di puntare il sopra per la versione JDK e l'installazione Maven)

ho apposto il seguente al mio finestre variabile Path ambiente di sistema:

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

La strana "C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 "percorso è il percorso di MSBuild.exe, che è richiesto durante il processo di compilazione.

ProtoC buffer 2.5.0

Oh no, un altro Unix/Linux costruire solo? Ho scaricato il pacchetto google denominato protoc-2.5.0-win32.zip. Quindi ha estratto il file binario (protoc.exe) in c: \ windows \ system32 - solo un modo pigro per inserirlo nel percorso.

Non sono sicuro al 100% dell'effetto di avere un componente win32 per questa build win64. Ma: "Hadoop 0.23+ richiede che i buffer di protocollo JAR (protobufs.jar) si trovino sul classpath di entrambi i client e server, i binari nativi sono necessari per compilare questa e le versioni successive di Hadoop." - http://wiki.apache.org/hadoop/ProtocolBuffers.

Quindi ho capito che l'eseguibile win32 è utilizzato solo durante il processo di compilazione (l'equivalente jar deve essere impacchettato nella build).

Se è usato in qualche modo per compilare codice nativo, potremmo aver lasciato alcuni puntatori fuori uso. Tornerò su questo quando posso.

Ottimizzare il Hadoop Le fonti

Beh, questo è stato necessario per consentire di costruire da eseguire. Non dovrebbe influire sulla qualità della build stessa, ma teniamo presente che il risultato è un uso non ufficiale, non supportato, a proprio rischio e pericolo, inteso per un ambiente di sviluppo.

Migrazione VS proietta

i seguenti file devono essere aperti con Visual Studio 2015:

\ Hadoop-comune-progetto Hadoop-common \ \ src \ Main \ winutils \ winutils.vcxproj \ Hadoop -common-project \ hadoop-common \ src \ main \ native \ native.vcxproj

Visual Studio si lamenterà di essere di una versione precedente. Tutto quello che devi fare è salvare tutto e chiudere.

Abilitazione cmake VS generazione 2015 del progetto per HDFS

Sulla linea 441 di \ Hadoop HDFS progetto \ Hadoop-HDFS \ pom.xml, modificare il valore di altro come il seguente:

< condizione property = value "generatore" = "Visual Studio 10" else = "Visual Studio 14 2015 Win64" >

(il valore "valore" si applica per win32 - si consiglia di modificarla se costruzione per win32).

Edificio che

Si dovrebbe cercare di trovare sulle finestre del "Prompt dei comandi di sviluppo per VS2015". Mi sto ancora chiedendo cosa ci sia di tanto speciale in questo, ma il fatto è che funzionerà solo con quello.

più variabili di ambiente Coloro dovrebbe essere fatto sul prompt dei comandi:

set Piattaforma = x64

set ZLIB_HOME = C: \ zlib \ include (a differenza delle istruzioni ufficiali, questo dovrebbe essere rivolta alla cartella include).

Infine costruirlo

Vai alla cartella di origine Hadoop e problema:

pacchetto mvn -Pdist, nativo-win -DskipTests -Dtar

Quale futuro ?

Seguire i documenti ufficiali per ottenere l'istanza di hadoop configurata e attiva e in esecuzione.

Cercherò di mantenere un legame con i binari sul mio blog:

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

+0

Risposta davvero utile! Ho creato con successo hadoop su VS2015 + Windows 10 con l'aiuto di questa risposta. –