Hadoop sur Windows Construction / Erreur d’installation

J’essaie d’installer Apache Hadoop 2.7.1 sur Windows x64 (8.1 et Server 2012 R2), mais j’échoue à l’objective:

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

Au cours des derniers jours, je pense avoir suivi les étapes de tous les tutoriels, comme HadoopOnWindows ou celui-ci . J’ai fait toutes les conditions préalables, mais comme je l’ai cherché sur Google, les plus pertinentes pour mon problème sont les suivantes:

  • Définissez le chemin d’access à MSBuild.exe comme: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319; dans le chemin
  • Définir le chemin vers CMake
  • Installer Microsoft SDK 7.1 et exécuter avec son Microsoft SDK 7.1 CMD
  • J’ai essayé de construire: hadoop-common \ src \ main \ winutils \ libwinutils.sln et hadoop-common \ src \ main \ winutils \ winutils.sln avec Visual Studio 2013, mais la construction échoue en raison d’erreurs de compilation. Visual Studio 2010 ne veut même pas les ouvrir. Je ne sais pas comment corriger les erreurs de compilation (en cas de problème)

Autre ppl, problème similaire
Certains des sujets similaires que je suis sont les suivants: un , deux , trois , quatre . J’ai principalement essayé toutes les suggestions, mais ça ne s’arrête toujours pas.

Erreur

  [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 omstack-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  -rf :hadoop-common 

Aidez-moi
Je n’ai aucune idée de ce qu’il faut faire ensuite, j’ai l’impression d’avoir tout essayé. Aidez-moi à résoudre cette erreur et continuez l’installation de Hadoop sous Windows.

UPDATE 1 En regardant de plus près la stack des erreurs, j’ai constaté que le fichier Microsoft.Cpp.props était introuvable. De plus, tout le dossier Program Files (x86) / MSBuild était manquant. Ainsi, j’ai installé Visual Studio 2010 et il a résolu ce problème.

Bien sûr, un nouveau problème se pose. Je suis capable de construire libwinutils , mais pas de winutils . Je reçois de nombreuses erreurs 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 SplitSsortingngIgnoreSpaceW 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 

MISE À JOUR 2 La réponse de @tiho a résolu le problème mentionné ci-dessus (et je suis très reconnaissant car cela m’a pris 4 jours). Maintenant, un nouveau problème, à l’objective:

 [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 ...... @ 5:182 in C:\hadoop-2.7.1-src\hadoop-common project\hadoop-kms\target\antrun\build-main.xml: Unknown host archive.apache.org. 

J’ai trouvé un piètre travail autour du problème ci-dessus. Je l’ai téléchargé manuellement, ajouté aux dossiers:

C: \ hadoop-2.7.1-src \ hadoop-common-project \ hadoop-kms \ downloads
C: \ hadoop-2.7.1-src \ hadoop-hdfs-project \ hadoop-hdfs-httpfs \ téléchargements
et supprimé des fichiers:
C: \ hadoop-2.7.1-src \ hadoop-common-project \ hadoop-kms \ target \ antrun \ build-main.xml
C: \ hadoop-2.7.1-src \ projet hadoop-hdfs \ hadoop-hdfs-httpfs \ target \ antrun \ build-main.xml
les lignes de code suivantes:

   

Notez que j’utilise également un proxy, j’ai défini le proxy dans le fichier settings.xml et défini PATH sur MAVEN_OPTS comme suggéré dans la même réponse depuis @tiho. Est-ce le problème? Outre les options proposées, j’ai également ajouté un mot de passe et un nom d’utilisateur à MAVEN_OPTS.

Notez que je peux accéder à: http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.41/bin/apache-tomcat-6.0.41.tar.gz en utilisant mon navigateur.

Mais je suis toujours curieux de savoir comment résoudre le problème correctement, car ce problème persiste et que je dois recommencer le même travail.

Mise à jour 3 Cela étant dit, le moment le plus heureux de cette semaine:

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

Il m’a fallu toute la journée pour réussir à le construire … Microsoft a évidemment beaucoup de problèmes de compatibilité descendante. Il serait utile que Hadoop passe à une chaîne d’outils plus récente.

Voici les étapes clés que j’ai dû effectuer (au-delà de celles mentionnées dans le document). Cela utilise le compilateur Windows SDK plutôt que VS 2010 (il est supposé être possible avec VS 2010 mais je ne l’ai pas essayé):

  1. Désinstallez Visual Studio 2013 (je recommande de désinstaller tout Visual Studio> = 2010) – pour supprimer l’erreur MSBUILD : Configuration error MSB4146: Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))"
  2. Désinstallez Visual Studio C ++ 2010 Redissortingbutable (x64 + x86) – pour éviter les erreurs lors de l’installation de Windows SDK 7.1
  3. Désinstallez complètement .NET Framework 4.5 – pour éviter tout échec lors de la conversion en fichier COFF: fichier invalide ou corrompu
  4. Redémarrer
  5. Installez .NET Framework 4.0
  6. Installez Windows SDK 7.1

J’ai ajouté à mon PATH (dans le shell Windows SDK) le dossier bin de mon installation Git (pour les outils GNU), le dossier bin de CMake et le dossier contenant protoc.exe. En outre (mais la plupart des gens ne devraient pas en avoir besoin), j’ai dû configurer Maven pour utiliser mon proxy HTTP, en éditant d’abord settings.xml comme indiqué dans la documentation de Maven, mais aussi en définissant la variable d’environnement MAVEN_OPTS=-Dmy.proxy.host -Dhttp.proxyPort=my.proxy.port , car il y avait un délai d’attente à un moment donné pendant la construction.

Notez que j’ai remarqué une bonne quantité d’avertissements pendant la construction: je soupçonne que certains d’entre eux sont causés par l’utilisation du SDK Java 1.8 au lieu de 1.7. Cependant, après avoir finalement vu un BUILD SUCCESS je n’avais pas envie d’essayer à nouveau avec 1.7.

J’ai réussi à le construire avec l’édition communautaire de Visual Studio 2015.

Voici comment je l’ai construit:

Mon environnement

Voici ma liste de courses:

  • Windows 10
  • JDK 1.8.0_51
  • Maven 3.3.3
  • Findbugs 1.3.9 (je ne l’ai pas utilisé)
  • ProtocolBuffer 2.5.0 (je n’ai pas choisi le dernier et le meilleur ici – il doit être 2.5.0)
  • CMake 3.3.0
  • Visual Studio 2015 Community Edition
  • GnuWin32 0.6.3 – un peu difficile à installer mais cygwin aussi
  • zlib 1.2.8
  • connexion Internet

Variables d’environnement système Windows

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

(assurez-vous de signaler ce qui précède à votre version de JDK et à l’installation de Maven)

J’ai ajouté ce qui suit à ma variable d’environnement Windows:

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

Le chemin étrange “C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319” correspond à l’emplacement de MSBuild.exe, requirejs pendant le processus de génération.

Protoc Buffers 2.5.0

Oh non, un autre Unix / Linux seulement construit? J’ai téléchargé le package google nommé protoc-2.5.0-win32.zip. Puis extrait le fichier binary (protoc.exe) dans c: \ windows \ system32 – juste un moyen paresseux de le mettre sur le chemin.

Je ne suis pas sûr à 100% de l’effet d’avoir un composant win32 pour cette compilation win64. Mais: “Hadoop 0.23+ nécessite que le fichier JAR des tampons de protocole (protobufs.jar) figure dans le chemin de classe des clients et des serveurs; les fichiers binarys natifs sont requirejs pour comstackr cette version et les versions ultérieures de Hadoop.” – http://wiki.apache.org/hadoop/ProtocolBuffers .

Je comprends donc que l’exécutable win32 est utilisé uniquement pendant le processus de construction (l’équivalent du fichier JAR doit être intégré à la version).

S’il est utilisé de quelque manière que ce soit pour comstackr du code natif, il se peut que nous ayons des pointeurs hors service. J’y reviendrai quand je le pourrai.

Affiner les sources Hadoop

Eh bien, c’était nécessaire pour permettre de construire pour exécuter. Cela ne devrait pas affecter la qualité de la construction elle-même, mais gardons à l’esprit que le résultat est une utilisation non officielle, non prise en charge, à vos risques et périls, destinée à un environnement de développement.

Migration de projets VS

Les fichiers suivants doivent être ouverts avec Visual Studio 2015:

\ hadoop-common-project \ hadoop-common \ src \ main \ winutils \ winutils.vcxproj \ projet-hadoop \ hadoop-common \ src \ main \ native \ native.vcxproj

Visual Studio se plaindra de leur ancienne version. Tout ce que vous avez à faire est de tout sauver et de fermer.

Activation de la génération de projet cmake VS 2015 pour hdfs

Sur la ligne 441 de \ hadoop-hdfs-project \ hadoop-hdfs \ pom.xml, modifiez la valeur else comme suit:

(la valeur “value” s’applique à win32 – vous voudrez peut-être l’éditer si vous construisez pour win32).

Le construire

Vous devriez essayer de trouver sur Windows l’invite de commande de développement pour VS2015. Je me demande toujours ce qui est si spécial à ce sujet, mais le fait est que cela ne fonctionnera qu’avec ça.

Plus de variables d’environnement Celles-ci doivent être effectuées à l’invite de commande:

définir plate-forme = x64

set ZLIB_HOME = C: \ zlib \ include (contrairement aux instructions officielles, cela devrait pointer vers le dossier include).

Enfin en le construisant

Allez dans le dossier source de hadoop et lancez:

paquet mvn -Pdist, natif-win -DskipTests -Dtar

Quelle prochaine

Suivez les documents officiels pour obtenir votre instance de hadoop configurée et opérationnelle.

Je vais essayer de garder un lien avec les binarys sur mon blog:

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

J’ai construit avec succès Hadoop 3.0.2 avec Visual Studio 2017 sur Windows 10.

Voici mes parameters ressemblent à:

  1. Windows 10
  2. Version de la communauté Visual Studio 2017
  3. Maven 3.5.0
  4. JDK 1.8.0_144
  5. Cmake 3.10.0-rc1
  6. ProtocolBuffer 2.5.0
  7. Cygwin

J’ouvre d’abord ces deux fichiers de solution dans VS 2017 et enregistre.

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

et

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

Cela permettra de migrer ces deux projets de VS 2010 vers VS 2017.

Deuxièmement, je dois changer la ligne 141 du fichier pom situé à

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

à

  

Cela garantira que VS 2017 sera utilisé pendant le processus de construction.

J’ai également rencontré un problème où MSBuild se plaint que la commande est longue puis cesse de fonctionner, je pense que cela est lié à l’emplacement du référentiel par défaut de Maven. Pour corriger cela, j’ai ajouté la ligne suivante

 D:/maven_repo 

déposer

 apache-maven-3.5.0\conf\settings.xml 

déplacer le référentiel Maven vers un nouvel emplacement (dans ce cas D:/maven_repo ).

Enfin, j’ai ouvert l’ x64 Native Tools Command Prompt for VS 2017 , cd dans le dossier source hadoop et émis la commande suivante:

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

Je passe plus de 10 heures à résoudre tous les problèmes, j’espère que ma solution aidera également les autres.