Le message d'erreur suivant s'affiche lors du démarrage de namenode pour la dernière version de hadoop-2.2. Je n'ai pas trouvé le fichier exe winutils dans le dossier hadoop bin. J'ai essayé ci-dessous les commandes
$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager
ERROR [main] util.Shell (Shell.Java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
Java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
at org.Apache.hadoop.util.Shell.getQualifiedBinPath(Shell.Java:278)
at org.Apache.hadoop.util.Shell.getWinUtilsPath(Shell.Java:300)
at org.Apache.hadoop.util.Shell.<clinit>(Shell.Java:293)
at org.Apache.hadoop.util.StringUtils.<clinit>(StringUtils.Java:76)
at org.Apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.Java:863)
Solution simple : Téléchargez-le de ici et ajoutez-le à $HADOOP_HOME/bin
(Source: Cliquez ici )
MODIFIER:
Pour hadoop-2.6.0 , vous pouvez télécharger des fichiers binaires à partir de blog Titus Barik >> .
J'ai non seulement besoin de pointer HADOOP_HOME
vers le répertoire extrait [path]
, mais également de fournir la propriété système -Djava.library.path=[path]\bin
pour charger les bibliothèques natives (dll).
Si nous prenons directement la distribution binaire de la version Apache Hadoop 2.2.0 et essayons de l'exécuter sous Microsoft Windows, nous rencontrerons alors ERROR util.Shell: Impossible de localiser le fichier binaire winutils dans le chemin binaire hadoop.
La distribution binaire de la version Apache Hadoop 2.2.0 ne contient pas certains composants natifs de Windows (tels que winutils.exe, hadoop.dll, etc.). Celles-ci sont obligatoires (et non facultatives) pour exécuter Hadoop sous Windows.
Vous devez donc créer la distribution binaire native hadoop de Windows à partir des codes sources, à la suite du fichier "BUILD.txt" situé dans la distribution source de Hadoop. Vous pouvez également suivre les articles suivants pour obtenir un guide étape par étape avec capture d'écran.
Construire, installer, configurer et exécuter Apache Hadoop 2.2.0 sous Microsoft Windows
ERREUR util.Shell: Impossible de localiser le binaire winutils dans le chemin binaire hadoop
Si vous rencontrez ce problème lorsque vous exécutez une application locale autonome avec Spark (après l'ajout de spark-Assembly-xxx-hadoopx.xxjar ou de la dépendance Maven au projet), une solution plus simple serait: mettre winutils.exe (à télécharger depuis ici ) dans "C:\winutil\bin". Ensuite, vous pouvez ajouter winutils.exe au répertoire de base hadoop en ajoutant la ligne suivante au code:
System.setProperty("hadoop.home.dir", "c:\\\winutil\\\")
Source: Cliquez ici
L'instruction Java.io.IOException: impossible de localiser l'exécutable null\bin\winutils.exe
explique que la valeur NULL est reçue lors du développement ou du remplacement d'une variable d'environnement. Si vous voyez la source dans Shell.Java dans Common Package, vous constaterez que la variable HADOOP_HOME n'est pas définie et que vous recevez la valeur null à la place de celle-ci, d'où l'erreur.
Donc, HADOOP_HOME doit être défini correctement pour cela ou la propriété hadoop.home.dir de variable.
J'espère que cela t'aides.
Merci, Kamleshwar.
Je viens de rencontrer ce problème lorsque je travaillais avec Eclipse. Dans mon cas, j'avais la version correcte de Hadoop téléchargée (hadoop-2.5.0-cdh5.3.0.tgz), j'ai extrait le contenu et l'ai placé directement dans mon lecteur C. Puis je suis allé à
Eclipse-> Configurations de débogage/exécution -> Environnement (onglet) -> et ajouté
variable: HADOOP_HOME
Valeur: C:\hadoop-2.5.0-cdh5.3.0
Vous pouvez télécharger winutils.exe ici: http://public-repo-1.hortonworks.com/hdp-win-alpha/winutils.exe
Ensuite, copiez-le dans votre répertoire HADOOP_HOME/bin
.
Winutils.exe est utilisé pour exécuter les commandes Shell pour SPARK. Si vous devez exécuter Spark sans installer Hadoop, vous avez besoin de ce fichier.
Les étapes sont les suivantes:
Téléchargez le fichier winutils.exe à partir de l’emplacement suivant pour hadoop 2.7.1 https://github.com/steveloughran/winutils/tree/master/hadoop-2.7.1/bin [REMARQUE: Si vous utilisez version hadoop séparée, veuillez télécharger les winutils du dossier correspondant à la version hadoop sur GITHUB à partir de l’emplacement mentionné ci-dessus.]
Maintenant, créez un dossier 'winutils' dans le lecteur C: \. Maintenant, créez un dossier 'bin' dans le dossier 'winutils' et copiez le winutils.exe dans ce dossier. Donc, l'emplacement de winutils.exe sera C:\winutils\bin\winutils.exe
Maintenant, ouvrez la variable d’environnement et définissez HADOOP_HOME = C:\winutil [NOTE: Veuillez ne pas ajouter \bin dans HADOOP_HOME et il n'est pas nécessaire de définir HADOOP_HOME dans Path.]
Votre problème doit être résolu !!
Dans Pyspark, pour exécuter une application locale spark à l'aide de Pycharm, utilisez les lignes ci-dessous.
os.environ['HADOOP_HOME'] = "C:\\winutils"
print os.environ['HADOOP_HOME']
winutils.exe est requis pour que hadoop puisse exécuter les commandes relatives à hadoop. s'il vous plaît télécharger le fichier zip hadoop-common-2.2.0. winutils.exe se trouve dans le dossier bin. Extrayez le fichier Zip et copiez-le dans le dossier hadoop/bin local.
version
/binJe faisais face au même problème. Supprimer le bin\
du chemin HADOOP_HOME l'a résolu pour moi. Le chemin de la variable HADOOP_HOME devrait ressembler à quelque chose.
C:\dev\hadoop2.6\
Un redémarrage du système peut être nécessaire. Dans mon cas, le redémarrage de IDE était suffisant.
Configurez la variable HADOOP_HOME dans Windows pour résoudre le problème.
Vous pouvez trouver la réponse dans org/Apache/hadoop/hadoop-common/2.2.0/hadoop-common-2.2.0-sources.jar!/org/Apache/hadoop/util/Shell.Java
:
IOException de
public static final String getQualifiedBinPath(String executable)
throws IOException {
// construct hadoop bin path to the specified executable
String fullExeName = HADOOP_HOME_DIR + File.separator + "bin"
+ File.separator + executable;
File exeFile = new File(fullExeName);
if (!exeFile.exists()) {
throw new IOException("Could not locate executable " + fullExeName
+ " in the Hadoop binaries.");
}
return exeFile.getCanonicalPath();
}
HADOOP_HOME_DIR à partir de
// first check the Dflag hadoop.home.dir with JVM scope
String home = System.getProperty("hadoop.home.dir");
// fall back to the system/user-global env variable
if (home == null) {
home = System.getenv("HADOOP_HOME");
}
Téléchargez la version souhaitée du dossier hadoop (Dites si vous installez spark sur Windows, puis la version hadoop pour laquelle votre spark est construit) à partir de this comme Zip .
Extrayez le zip dans le répertoire souhaité. Vous devez disposer d’un répertoire de la forme hadoop\bin
(créez explicitement cette structure de répertoires hadoop\bin
si vous le souhaitez) avec bin
contenant tous les fichiers contenus dans le dossier bin
du hadoop téléchargé. Cela contiendra de nombreux fichiers tels que hdfs.dll, hadoop.dll, etc. en plus de winutil.exe.
Maintenant, créer une variable d’environnementHADOOP_HOME
et définissez-le sur <path-to-hadoop-folder>\hadoop
. Alors add;%HADOOP_HOME%\bin;
à la variable d'environnement PATH
.
Ouvrez une "invite de nouvelle commande" et essayez de réexécuter votre commande.
Je devenais le même problème dans Windows. Je l'ai réparé par
J'ai utilisé les versions "hbase-1.3.0" et "hadoop-2.7.3". La définition de la variable d’environnement HADOOP_HOME et la copie du fichier 'winutils.exe' dans le dossier HADOOP_HOME/bin résolvent le problème sous Windows. Attention de définir l'environnement HADOOP_HOME dans le dossier d'installation de hadoop (le dossier/bin n'est pas nécessaire pour ces versions). De plus, j'ai préféré utiliser l'outil multi-plateforme cygwin pour régler les fonctionnalités Linux (le plus possible) car l'équipe d'Hbase recommande l'utilisation de linux/unix env.