web-dev-qa-db-fra.com

Exécution d'Apache Hadoop 2.1.0 sous Windows

Je suis nouveau sur Hadoop et j'ai eu des problèmes pour l'exécuter sur mon ordinateur Windows 7. En particulier, je suis intéressé par l'exécution de Hadoop 2.1.0 en tant que notes de mise à jour mentionne que l'exécution sur Windows est prise en charge. Je sais que je peux essayer d'exécuter des versions 1.x sous Windows avec Cygwin ou même utiliser VM préparé, par exemple, Cloudera, mais ces options sont, pour certaines raisons, moins pratiques.

Après avoir examiné une archive de http://Apache-mirror.rbc.ru/pub/Apache/hadoop/common/hadoop-2.1.0-beta/ j'ai découvert qu'il existe vraiment des scripts * .cmd pouvant être couru sans Cygwin. Tout a bien fonctionné lorsque j'ai formaté la partition HDFS, mais lorsque j'ai essayé d'exécuter le démon hdfs namenode, j'ai rencontré deux erreurs: premièrement, non fatal, le fichier winutils.exe était introuvable (il n'était pas présent dans le fichier compressé téléchargé). J'ai trouvé les sources de ce composant dans l'arborescence des sources Apache Hadoop et l'ai compilé avec Microsoft SDK et MSbuild. Grâce au message d'erreur détaillé, il était clair où placer l'exécutable pour satisfaire Hadoop. Mais la deuxième erreur, fatale, ne contient pas assez d’informations à résoudre:

13/09/05 10:20:09 FATAL namenode.NameNode: Exception in namenode join
Java.lang.UnsatisfiedLinkError: org.Apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
    at org.Apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
    at org.Apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.Java:423)
    at org.Apache.hadoop.fs.FileUtil.canWrite(FileUtil.Java:952)
    at org.Apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.Java:451)
    at org.Apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.Java:282)
    at org.Apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.Java:200)
...
13/09/05 10:20:09 INFO util.ExitUtil: Exiting with status 1

On dirait que quelque chose d'autre devrait être compilé. Je vais essayer de compiler Hadoop à partir de la source avec Maven, mais n’existe-t-il pas un moyen plus simple? N'y a-t-il pas une option «je sais pas-ça» qui peut désactiver le code natif et rendre cette archive utilisable sous Windows?

Je vous remercie.

MIS À JOUR. Oui en effet. Le paquet "Homebrew" contient quelques fichiers supplémentaires, principalement winutils.exe et hadoop.dll. Avec ces fichiers, namenode et datanode ont démarré avec succès. Je pense que la question peut être fermée. Je ne l'ai pas supprimé au cas où quelqu'un rencontrerait la même difficulté.

MISE À JOUR 2. Pour construire le paquet "homebrew", j'ai procédé comme suit:

  1. J'ai des sources et les a décompressées.
  2. Lisez attentivement BUILDING.txt.
  3. Dépendances installées:
    3a) Windows SDK 7.1
    3b) Maven (j'ai utilisé la version 3.0.5) 3c) JDK (j'ai utilisé la version 1.7.25)
    3d) ProtocolBuffer (j'ai utilisé 2.5.0 - http://protobuf.googlecode.com/files/protoc-2.5.0-win32.Zip ). Il suffit simplement de mettre le compilateur (protoc.exe) dans certains dossiers PATH.
    3e) Un ensemble d’outils de ligne de commande UNIX (j’ai installé Cygwin) 
  4. Démarrage de la ligne de commande de Windows SDK. Début | Tous les programmes | Kit de développement Microsoft Windows v7.1 | ... Invite de commandes (J'ai modifié ce raccourci en ajoutant l'option/release dans la ligne de commande pour créer les versions release du code natif). Toutes les étapes suivantes sont effectuées à partir de la fenêtre de ligne de commande du SDK)
  5. Mettre en place l'environnement:

    set Java_HOME = {path_to_JDK_root} 

Il semble que Java_HOME DOIT PAS contenir de l'espace! 

set PATH={path_to_maven_bin};%PATH%  
set Platform=x64  
set PATH={path_to_cygwin_bin};%PATH%  
set PATH={path_to_protoc.exe};%PATH%  
  1. Changement du répertoire en dossier racine des sources (BUILDING.txt avertit qu'il existe certaines limites quant à la longueur du chemin d'accès. Par conséquent, la racine des sources doit avoir un nom court - j'ai utilisé D:\hds).
  2. Processus de construction Ran:

    le paquet mvn -Pdist -DskipTests 

Vous pouvez essayer sans 'skipTests' mais sur ma machine, certains tests ont échoué et la construction a été arrêtée. Il peut être lié aux problèmes de liaison sybolique mentionnés dans BUILDING .txt . 8. Choisissez le résultat dans hadoop-dist\target\hadoop-2.1.0-beta (les exécutables Windows et les DLL sont dans le dossier 'bin') 

32
Hatter

J'ai suivi les étapes suivantes pour installer Hadoop 2.2.0

Étapes pour créer la distribution bin Hadoop pour Windows

  1. Téléchargez et installez Microsoft Windows SDK v7.1.

  2. Téléchargez et installez l'outil de ligne de commande Unix Cygwin.

  3. Téléchargez et installez Maven 3.1.1.

  4. Téléchargez les protocoles de protocole 2.5.0 et extrayez-les dans un dossier (par exemple, c:\protobuf).

  5. Ajouter des variables d’environnement Java_HOME, M2_HOME et Platform s’ils n’ont pas déjà été ajoutés. Remarque: Le nom de la variable Platform est sensible à la casse. Et la valeur sera x64 ou Win32 pour la construction sur un système 64 bits ou 32 bits. Edit Path Variable pour ajouter le répertoire bin de Cygwin (disons C:\cygwin64\bin), le répertoire bin de Maven (disons C:\maven\bin) et le chemin d'installation des tampons de protocole (disons c:\protobuf).

  6. Téléchargez hadoop-2.2.0-src.tar.gz et extrayez-le dans un dossier ayant un chemin court (par exemple, c:\hdfs) pour éviter les problèmes d’exécution dus à la limitation maximale de la longueur du chemin sous Windows.

  7. Sélectionnez Démarrer -> Tous les programmes -> Microsoft Windows SDK version 7.1 et ouvrez l’invite de commande de Windows SDK 7.1. Changez le répertoire dans le dossier du code source Hadoop (c:\hdfs). Exécutez le package mvn avec les options -Pdist, native-win -DskipTests -Dtar pour créer la distribution tar binaire Windows. 

  8. Si tout se passe bien à l'étape précédente, la distribution native hadoop-2.2.0.tar.gz sera créée dans le répertoire C:\hdfs\hadoop-dist\target\hadoop-2.2.0.

Installer Hadoop

  1. Extrayez hadoop-2.2.0.tar.gz dans un dossier (disons c:\hadoop).

  2. Ajouter la variable d’environnement HADOOP_HOME et modifier la variable de chemin pour ajouter le répertoire bin de HADOOP_HOME (par exemple, C:\hadoop\bin).

Configurer Hadoop

C:\hadoop\etc\hadoop\core-site.xml

<configuration>
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://localhost:9000</value>
        </property>
</configuration>

C:\hadoop\etc\hadoop\hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file:/hadoop/data/dfs/namenode</value>
        </property>
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/hadoop/data/dfs/datanode</value>
        </property>
</configuration>

C:\hadoop\etc\hadoop\mapred-site.xml

<configuration>
        <property>
           <name>mapreduce.framework.name</name>
           <value>yarn</value>
        </property>
</configuration>

C:\hadoop\etc\hadoop\yarn-site.xml

<configuration>
        <property>
           <name>yarn.nodemanager.aux-services</name>
           <value>mapreduce_shuffle</value>
        </property>
        <property>
           <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
           <value>org.Apache.hadoop.mapred.ShuffleHandler</value>
        </property>
</configuration>

Format namenode

Pour la première fois seulement, le namenode doit être formaté.

C:\Users\abhijitg>cd c:\hadoop\bin 
c:\hadoop\bin>hdfs namenode –format

Démarrer HDFS (Namenode et Datanode)

C:\Users\abhijitg>cd c:\hadoop\sbin
c:\hadoop\sbin>start-dfs

Démarrer MapReduce aka YARN (gestionnaire de ressources et gestionnaire de nœuds)

C:\Users\abhijitg>cd c:\hadoop\sbin
c:\hadoop\sbin>start-yarn
starting yarn daemons

Au total, quatre fenêtres d'invite de commandes distinctes s'ouvriront automatiquement pour exécuter Namenode, Datanode, Resource Manager, Node Manager.

Reference: Construire, installer, configurer et exécuter Apache Hadoop 2.2.0 sous Microsoft Windows

17
Abhijit

J'ai eu le même problème, mais avec le récent hadoop 2.2.0. Voici mes étapes pour résoudre ce problème:

  1. J'ai construit winutils.exe à partir de sources. Répertoire du projet:

    hadoop-2.2.0-src\hadoop-common-project\hadoop-common\src\main\winutils

    Mon système d'exploitation: Windows 7. Outil de création: MS Visual Studio Express 2013 pour Windows Desktop (c'est gratuit et peut être chargé à partir de http://www.Microsoft.com/visualstudio/ ) . Ouvrez Studio, File -> Open -> winutils.sln. Faites un clic droit sur la solution du côté droit -> Build. Quelques erreurs se sont produites dans mon cas (vous devrez peut-être corriger les propriétés du projet, spécifier le dossier de sortie) . Alto! Vous obtenez winutils.exe - mettez-le dans le bac d'hadoop.

  2. Ensuite, nous devons construire le hadoop.dll. Un peu de magie de Woodoo: va

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

    dans MS VS; faites un clic droit sur la solution -> build . J'ai créé manuellement plusieurs fichiers d'en-tête manqués (ne me demandez pas pourquoi ils sont manquants dans l'archive source!):

    https://github.com/jerishsd/hadoop-experiments/tree/master/sources

    (et ne me demandez pas à quoi sert ce projet sur git! Je ne sais pas - Google l'a signalé en recherchant les noms de fichiers d'en-tête) J'ai copié

    hadoop-2.2.0-src\hadoop-common-project\hadoop-common\target\winutils\Debug\libwinutils.lib

    (résultat de l'étape 1) dans

    hadoop-2.2.0-src\hadoop-common-project\hadoop-common\target\bin

    Et enfin, l'opération de construction produit hadoop.dll! Placez-la à nouveau dans la corbeille de hadoop et exécutez joyeusement namenode!

J'espère que mes pas aideront quelqu'un.

14
Aleksei Egorov

Han a préparé les binaires Hadoop 2.2 Windows x64 (voir son blog ) et les a téléchargés sur Github .

Après avoir placé les deux fichiers binaires winutils.exe et hadoop.dll dans le dossier %hadoop_prefix%\bin, j'ai obtenu la même UnsatisfiedLinkError.

Le problème était qu'il manquait une dépendance de hadoop.dll. J'ai utilisé Dependency Walker pour vérifier les dépendances des fichiers binaires et/ Microsoft Visual C++ 2010 Redistributables étaient manquants.

Donc, en plus de construire tous les composants vous-même, la réponse au problème est

  • veillez à utiliser la même architecture pour Java et le code natif. Java -version vous indique si vous utilisez 32 ou x64.
  • utilisez ensuite Dependency Walker pour vous assurer que tous les fichiers binaires natifs sont purs et de la même architecture. Parfois, une dépendance x64 est manquante et Windows revient à x86, ce qui ne fonctionne pas. Voir réponse à une autre question .
  • vérifiez également si toutes les dépendances des fichiers binaires natifs sont satisfaites.
14
Peter Kofler

Ajoutez hadoop.dll (sensible à la version) au répertoire system32 sous Windows Directory.

Vous pouvez obtenir le hadoop.dll à winutils

6
futuredaemon

En plus d'autres solutions, here est une copie pré-construite de winutil.exe. Téléchargez-le et ajoutez-le à $ HADOOP_HOME/bin. Ça marche pour moi.

(Source: Cliquez ici )

6
Prasad D

Vous devrez peut-être copier hadoop.dll et winutils.exe de hadoop-common-bin vers% HADOOP_HOME%\bin Ajoutez% HADOOP_HOME%/bin à votre variable% PATH%.

Vous pouvez télécharger hadoop-common depuis https://github.com/amihalik/hadoop-common-2.6.0-bin

4
Vikash Pareek

Au lieu d'utiliser la branche officielle, je suggérerais les fenêtres optimisées

http://svn.Apache.org/repos/asf/hadoop/common/branches/branch-trunk-win/

Vous devez le compiler, construire winutils.exe sous Windows et le placer dans le répertoire hadoop/bin

4
Marco Seravalli

J'ai rencontré le même problème avec Hadoop 2.4.1 sur Windows 8.1; La solution résultante présentait quelques différences principalement dues au nouveau système d'exploitation.

J'ai d'abord installé le binaire Hadoop 2.4.1, en le décompressant dans% HADOOP_HOME %.

Les réponses précédentes décrivent comment configurer Java, protobuf, cygwin et maven, ainsi que les variables d'environnement nécessaires. Je devais changer la variable Platform environment de la valeur impaire 'BCD' de HP.

J'ai téléchargé le code source à partir d'un miroir Apache et l'ai décompressé dans un répertoire court ( HADOOP_SRC = C:\hsrc). Maven a fonctionné correctement à partir d'une invite de commande Windows standard dans ce répertoire: paquet mvn -DskipTests .

Au lieu d'utiliser le Kit de développement logiciel (SDK) Windows 7 (que je ne pouvais pas charger) ou le Kit de développement logiciel (SDK) Windows 8.1 (qui ne dispose pas des outils de génération de ligne de commande), j'ai utilisé le logiciel gratuit Microsoft Visual Studio Express 2013 pour Windows Desktop . La construction de Hadoop avait besoin de l'emplacement MSBuild (C:\Program Files (x86)\MSBuild\12.0) dans PATH et exigeait que les différents projets source natifs Hadoop soient mis à niveau vers le nouveau format (MS VS 2013). Les échecs de construction de maven étaient assez gentils pour indiquer le chemin absolu de chaque projet, ce qui facilite le chargement du projet dans Visual Studio (qui convertit automatiquement, après avoir demandé).

Une fois construit, j'ai copié les exécutables et les bibliothèques natifs dans le répertoire bin Hadoop. Ils ont été construits dans% HADOOP_SRC %\hadoop-common-project\hadoop-commun\target\bin et devaient être copiés dans% HADOOP_HOME %\bin.

3
leifbennett

L'ajout de hadoop.dll et de hdfs.dll au dossier% HADOOP_HOME%\bin a été très utile.

2
Kunal Kanojia

Je viens d'installer Hadoop 2.2.0 dans mon environnement Win7 X64.

suite à BUILD.txt me fait faire cela. 

PAR EXEMPLE

  <property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop-2.2.0_1/dfs/name</value>
<description></description>
<final>true</final>

Peut vous aider!

1
Derry

Téléchargez & Installez Java dans c:/Java/

assurez-vous que le chemin est ainsi, si Java est installé dans 'programme fichiers ', puis hadoop-env.cmd ne reconnaîtra pas le chemin Java 

Téléchargement Distribution binaire Hadoop. 

J'utilise la distribution binaire Hadoop-2.8.1. Aussi, je recommanderais de garder le chemin d'extraction aussi court que possible

Définir les variables d'environnement:

Java_HOME = "c:/Java"
HADOOP_HOME="<your hadoop home>"
Path= "Java_HOME/bin"
Path = "HADOOP_HOME/bin" 

Hadoop fonctionnera sous Windows si Hadoop-src est construit à l'aide de maven dans votre machine Windows. Construire le Hadoop-src (distribution) sera créer une distribution binaire Hadoop, qui fonctionnera en tant que Windows natif version.

Mais si vous ne voulez pas faire cela, alors téléchargez le winutils of Hadoop distribution.. pré-construit. Voici un lien GitHub , qui contient les versions de certaines versions de Hadoop. 

si la version que vous utilisez ne figure pas dans la liste, suivez les instructions méthode conventionnelle pour installer Hadoop sur Windows - link

Si vous avez trouvé votre version, copiez puis collez tout le contenu du dossier dans le chemin:/bin /

Définissez tous les fichiers de configuration .xml - Lien & définissez le chemin Java_HOME dans le fichier hadoop-env.cmd

De cmd aller à: 

<HADOOP_HOME>/bin/> hdfs namenode -format
<HADOOP_HOME>/sbin> start-all.cmd

J'espère que cela t'aides.

0
Raxit Solanki
  1. Get Fichiers binaires Hadoop (qui incluent winutils.exe et hadoop.dll)
  2. Assurez-vous que hadoop\bin est disponible via CHEMIN (System PATH si vous l’exécutez en tant que service). 

    Notez que la définition de Java.library.pathsubstituePATH. Si vous définissez Java.library.path, assurez-vous qu'il est correct et pointe vers la bibliothèque hadoop.

0
rustyx