2015-07-08 27 views
7

Próbuję zainstalować Apache Hadoop 2.7.1 na x64 Windows (8.1 i Server 2012 R2), ale jestem braku w celu:Hadoop w systemie Windows Budownictwo/Instalacja Błąd

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

W ciągu ostatnich dni, myślę, że po kroki wszystkich samouczków, takich jak HadoopOnWindows lub this one. Zrobiłem wszystkie warunki, ale jak Googled, te właściwe dla mojego problemu są następujące:

  • Ustaw ścieżkę do MSBuild.exe jak: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 ; Ścieżka
  • Ustaw ścieżkę do CMake
  • Install Microsoft SDK 7.1 i uruchomić z Microsoft SDK 7.1 CMD
  • Próbowałem zbudować: Hadoop-common \ src \ main \ winutils \ libwinutils.sln i Hadoop -common \ src \ main \ winutils \ winutils.sln z Visual Studio 2013, ale budowanie kończy się niepowodzeniem z powodu kompilacji błędów. Visual Studio 2010 nawet nie chce ich otwierać. Nie wiem, w jaki sposób skorygować błędy kompilacji (w przypadku jest to problem)

Inne PZP, podobny problem
Niektóre z podobnych tematów śledzę są takie: one, two, three, four. Próbowałem głównie wszystkich sugestii, ale wciąż się psuje.

Błąd

[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 

Pomoc
nie mam pojęcia, co dalej robić, czuję się jakbym próbował wszystkiego. Pomóż mi rozwiązać ten błąd i kontynuuj instalację Hadoop w systemie Windows.

UPDATE 1 Patrząc na stos błędów bliżej, zobaczyłem, że plik Microsoft.Cpp.props nie został znaleziony. Co więcej, brakowało całego folderu Program Files (x86)/MSBuild. W związku z tym zainstalowałem Visual Studio 2010 i rozwiązał ten problem.

Oczywiście pojawia się nowy problem. Jestem w stanie zbudować libwinutils, ale nie winutils. Mam wiele LNK2001 błędy:

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 Odpowiedź z @tiho rozwiązał problem wymieniony powyżej (i jestem bardzo wdzięczny, ponieważ zajęło mi 4 dni już). Teraz nowy nowy problem, na cel:

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

Znalazłem kulawego obejścia problemu powyżej. Ręcznie pobrałem go, dodałem do folderów:

C: \ hadoop-2.7.1-src \ Hadoop-common-projekt \ Hadoop-KMS \ Downloads
C: \ Hadoop-2.7.1-src \ Hadoop-HDFS-project \ Hadoop-HDFS-httpfs \ pobrań
i usuwane z pliki:
C: \ Hadoop-2.7.1-src \ Hadoop-common-projekt \ Hadoop-KMS \ target \ antrun \ build-main.xml
C: \ Hadoop-2.7.1-src \ Hadoop-HDFS-project \ Hadoop-HDFS-httpfs \ target \ antrun \ build-main.xml
następujące linie kodu:

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

Należy pamiętać, że używam również serwera proxy, ustawiłem proxy w ustawieniach settings.xml i ustawię PATH na MAVEN_OPTS zgodnie z sugestią podaną w tej samej odpowiedzi od @tiho. Czy to jest problem? oprócz sugerowanych tam opcji, dodałem również hasło i nazwę użytkownika do MAVEN_OPTS.

Pamiętaj, że mogę uzyskać dostęp do: http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz za pomocą przeglądarki.

Ale nadal jestem ciekawy, jak rozwiązać problem poprawnie, ponieważ problem ten nadal się pojawia i muszę zrobić to samo ponownie.

Update 3 Powiedział, że jest najszczęśliwszym momentem w tym tygodniu:

[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

Próbowałeś z prośbą o serverfault.com? – courteouselk

+0

nie. dlaczego miałbym o to zapytać i czy powinienem powielić to stanowisko? –

+0

Nie jestem pewien. Ale jeśli nie dostaniesz odpowiedzi tutaj, może tam będziesz mógł uzyskać pomoc. – courteouselk

Odpowiedz

4

Zajęło mi cały dzień, aby udało się go zbudować ... Microsoft ma oczywiście wiele problemów z wstecznej kompatybilności. Pomoże to, jeśli Hadoop przejdzie do nowszego toolchaina.

Oto kluczowe czynności, które musiałem wykonać (poza tymi wymienionymi w dokumencie). To jest za pomocą kompilatora Windows SDK zamiast VS 2010 (to ma być możliwe w VS 2010, ale nie próbowałem go):

  1. Uninstall Visual Studio 2013 (polecam odinstalowanie żadnych Visual Studio> = 2010) - jest to, aby pozbyć się błędu MSBUILD : Configuration error MSB4146: Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))"
  2. Uninstall Visual Studio C++ 2010 Redistributable (x64 + x86) - aby uniknąć Error when installing windows SDK 7.1
  3. Odinstaluj całkowicie .NET Framework 4.5 - aby uniknąć Failure during conversion to COFF: file invalid or corrupt
  4. Reboot
  5. Zainstaluj .NET Framework 4,0
  6. zainstalować Windows SDK 7.1

dodałem do mojego PATH (w SDK powłoki systemu Windows) folder bin mojej instalacji Git (dla narzędzi GNU), w folderze bin CMake oraz folder zawierający protoc .exe. Ponadto (ale większość ludzi nie powinna tego potrzebować), musiałem skonfigurować Mavena, aby używał mojego proxy HTTP, najpierw edytowałem settings.xml, jak wskazano w dokumentacji Mavena, ale także definiowałem zmienną środowiskową MAVEN_OPTS=-Dmy.proxy.host -Dhttp.proxyPort=my.proxy.port, ponieważ w przeciwnym razie w pewnym momencie nastąpiło przekroczenie limitu czasu podczas kompilacji.

Zauważ, że podczas kompilacji zauważyłem dużą liczbę ostrzeżeń: podejrzewam, że niektóre z nich są spowodowane użyciem pakietu Java SDK 1.8 zamiast 1.7. Jednak po ostatecznym zobaczeniu BUILD SUCCESS nie miałem ochoty próbować ponownie z 1.7.

+0

Witaj Tiho, dzięki za szczegółowe wyjaśnienie. Niestety jestem doświadczeniem nie wyjaśnionego zewnętrznego symbolu wyjaśnionego powyżej. Postępowałem zgodnie ze wskazówkami, ale nadal nie mam szczęścia. Visual Studio 2010, java 1.8, Windows 10 32-bit, hadoop 2.6 Nie mogę zbudować winutils i innej biblioteki za pomocą VS. To powinien być problem z konfiguracją moich systemów. Nie wydaje mi się, żebym musiał naprawić dowolny kod źródłowy, może to być problem z missconfiguration. Każdy komentarz będzie bardzo ceniony. Pozdrawiam, Paul –

+0

@PlayingWithBI Obawiam się, że nie mogę powiedzieć więcej niż to, co napisałem powyżej, nie próbowałem ponownie spróbować żadnej alternatywnej konfiguracji. Ale widzę, że wspomniałeś o VS 2010, podczas gdy ja osobiście go odinstalowałem i użyłem kompilatora Windows SDK. Może mógłbyś też dać mu szansę? – tiho

7

Udało mi się go zbudować za pomocą edycji społeczności Visual Studio 2015.

Oto jak mam zbudowany go:

Moje środowisko

Oto moja lista zakupów:

  • systemu Windows 10
  • JDK 1.8.0_51
  • Maven 3.3. 3
  • Findbugs 1.3.9 (nie korzystałem z tego)
  • ProtocolBuffer 2.5.0 (nie odebrać najnowszy i największy tutaj - to musi być 2.5.0)
  • CUpewnij 3.3.0
  • Visual Studio 2015 Community Edition
  • GnuWin32 0.6.3 - nieco bolesne zainstalować ale tak jest cygwin
  • zlib 1.2.8
  • internet
zmienna

Windows system Środowisko s

  • JAVA_HOME = "C: \ Program Files \ Java \ jdk1.8.0_51"
  • MAVEN_HOME = c: \ Apache'owi Maven-3.3.3

(dokonać upewnij się, że powyższe polecenie jest skierowane do wersji JDK i maven instalacji)

Do środowiska systemu Windows dołączyłem następujące elementy Zmienna ścieżki:

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

Dziwne „C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 "ścieżka to lokalizacja pliku MSBuild.exe, który jest wymagany podczas procesu budowania.

Protoc Zderzaki 2.5.0

Oh no, kolejny Unix/Linux tylko budować? Pobrałem pakiet Google o nazwie protoc-2.5.0-win32.zip. Następnie wyodrębniono plik binarny (protoc.exe) do c: \ windows \ system32 - po prostu leniwy sposób umieszczenia go na ścieżce.

Nie jestem w 100% pewien efektu posiadania składnika win32 dla tej kompilacji win64. Ale: "Hadoop 0.23+ wymaga, aby bufor buforów JAR (protobufs.jar) znajdował się w ścieżce klas klientów i serwerów, a natywne pliki binarne są wymagane do kompilacji tej i późniejszych wersji Hadoop." - http://wiki.apache.org/hadoop/ProtocolBuffers.

Rozumiem, że plik wykonywalny win32 jest używany tylko podczas procesu budowania (odpowiednik słoika powinien być spakowany w kompilacji).

Jeśli jest używany w jakikolwiek sposób do kompilowania kodu natywnego, być może porzuciliśmy niektóre wskaźniki niesprawne. Wrócę do tego, kiedy będę mógł.

szczypanie Hadoop źródeł

dobrze, to było konieczne, aby umożliwić budowanie wykonać. Nie powinno to wpływać na jakość samej kompilacji, ale pamiętajmy, że wynik jest nieoficjalnym, nieobsługiwanym użyciem na własną pułapkę ryzyka, przeznaczoną dla środowiska programistycznego.

Migracja VS projekty

Następujące pliki muszą być otwarte z Visual Studio 2015:

\ Hadoop-common-projekt \ Hadoop-common \ src \ main \ winutils \ winutils.vcxproj \ Hadoop -społeczny-projekt \ hadoop-common \ src \ main \ native \ native.vcxproj

Visual Studio narzeka na to, że jest w starej wersji. Wszystko, co musisz zrobić, to zapisać wszystko i zamknąć.

Włączanie CUpewnij VS 2015 generacja projekt HDFS

Na linii 441 z \ Hadoop-HDFS-projekt \ Hadoop-HDFS \ pom.xml, edycję wartości innego jak:

< stan property = "generator" value = "Visual Studio 10" else = "Visual Studio 14 2015 Win64" >

(wartość "wartość" odnosi się do win32 - możesz go edytować czy budowę dla win32).

budowa To

Należy spróbować znaleźć na okna w „Wiersz polecenia dla VS2015 Development”. Nadal zastanawiam się, co jest takiego specjalnego w tym, ale faktem jest, że będzie to działało tylko z tym.

Więcej Zmienne środowiskowe te powinny być wykonywane w wierszu polecenia:

zestaw Platforma = 64

zestaw ZLIB_HOME = C: \ zlib \ include (w przeciwieństwie do oficjalnych instrukcji, to powinno być skierowane do folderu uwzględnienia).

Wreszcie budowa To

Przejdź do folderu źródłowego Hadoop emisyjna:

pakiet mvn -Pdist, natywną-Win -DskipTests -Dtar

Co dalej?

Śledź oficjalne dokumenty, aby skonfigurować i uruchomić swoją instancję hadoop.

Postaram się utrzymać związek z dla plików binarnych na moim blogu:

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

+0

Naprawdę pomocna odpowiedź! Udało mi się zbudować makietę na VS2015 + Windows 10 przy pomocy tej odpowiedzi. –