Je configure actuellement hadoop sur un serveur exécutant CentOs . Lorsque j'exécute start-dfs.sh
ou stop-dfs.sh
, j'obtiens l'erreur suivante:
WARN util.NativeCodeLoader: impossible de charger la bibliothèque native-hadoop pour votre plate-forme ... à l'aide des classes Java intégrées le cas échéant
J'utilise Hadoop 2.2.0.
Faire une recherche en ligne a fait apparaître ce lien: http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html
Cependant, le contenu de /native/
répertoire sur hadoop 2.x semble différent, donc je ne sais pas quoi faire.
J'ai également ajouté ces deux variables d'environnement dans hadoop-env.sh
:
export HADOOP_OPTS = "$ HADOOP_OPTS -Djava.library.path = / usr / local / hadoop / lib /"
export HADOOP_COMMON_LIB_NATIVE_DIR = "/ usr / local / hadoop / lib / native /"
Des idées?
Réponses:
Je suppose que vous utilisez Hadoop sur 64 bits CentOS. La raison pour laquelle vous avez vu cet avertissement est la bibliothèque native Hadoop
$HADOOP_HOME/lib/native/libhadoop.so.1.0.0
été compilée en 32 bits.Quoi qu'il en soit, ce n'est qu'un avertissement et n'affectera pas les fonctionnalités de Hadoop.
Voici comment supprimer cet avertissement, téléchargez le code source de Hadoop et recompilez
libhadoop.so.1.0.0
sur un système 64 bits, puis remplacez celui 32 bits.Les étapes sur la façon de recompiler le code source sont incluses ici pour Ubuntu:
Bonne chance.
la source
hadoop-common-project/hadoop-common
et celahadoop-hdfs-project/hadoop-hdfs
suffit.Ajoutez simplement le mot natif à votre
HADOOP_OPTS
comme ceci:PS: Merci Searene
la source
La réponse dépend ... Je viens d'installer Hadoop 2.6 depuis tarball sur CentOS 6.6 64 bits. L'installation Hadoop était en effet livrée avec une bibliothèque native 64 bits précompilée. Pour mon installation, c'est ici:
Et je sais que c'est 64 bits:
Malheureusement, j'ai stupidement ignoré la réponse juste là, me regardant en face alors que je me concentrais sur "Est-ce que cette bibliothèque 32 pr 64 bits?":
Alors, leçon apprise. Quoi qu'il en soit, le reste m'a au moins conduit à pouvoir supprimer l'avertissement. J'ai donc continué et fait tout ce qui était recommandé dans les autres réponses pour fournir le chemin de la bibliothèque en utilisant la variable d'environnement HADOOP_OPTS en vain. J'ai donc regardé le code source. Le module qui génère l'erreur vous indique l'astuce ( util.NativeCodeLoader ):
Alors, ici pour voir ce que ça fait:
http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/
Ah, il y a une journalisation au niveau du débogage - Allumons cela pour voir si nous obtenons une aide supplémentaire. Pour ce faire, ajoutez la ligne suivante au fichier $ HADOOP_CONF_DIR / log4j.properties:
Ensuite, j'ai exécuté une commande qui génère l'avertissement d'origine, comme stop-dfs.sh, et j'ai obtenu ce bonus:
Et la réponse est révélée dans cet extrait du message de débogage (la même chose que la précédente commande ldd 'a essayé' de me dire:
Quelle version de GLIBC ai-je? Voici une astuce simple à découvrir:
Donc, je ne peux pas mettre à jour mon OS vers 2.14. La seule solution consiste à créer les bibliothèques natives à partir de sources sur mon système d'exploitation ou à supprimer l'avertissement et à l'ignorer pour l'instant. J'ai choisi de supprimer l'avertissement ennuyeux pour l'instant (mais je prévois de construire à partir de sources à l'avenir) acheter en utilisant les mêmes options de journalisation que nous avons utilisées pour obtenir le message de débogage, sauf maintenant, faites-le simplement au niveau ERREUR.
J'espère que cela aide les autres à voir qu'un grand avantage des logiciels open source est que vous pouvez comprendre ces choses si vous prenez quelques étapes logiques simples.
la source
J'ai eu le même problème. Il est résolu en ajoutant les lignes suivantes dans
.bashrc
:la source
Dans mon cas, après avoir construit hadoop sur mon système d'exploitation Linux 64 bits, j'ai remplacé la bibliothèque native dans
hadoop/lib
. Le problème persiste toujours. Ensuite, j'ai compris le hadoop pointant vershadoop/lib
nonhadoop/lib/native
. J'ai donc simplement déplacé tout le contenu de la bibliothèque native vers son parent. Et l'avertissement vient de disparaître.la source
Cela fonctionnerait également:
la source
Après une recherche continue comme suggéré par Koti, j'ai résolu le problème.
À votre santé
la source
Pour ceux sur OSX avec Hadoop installé via Homebrew, suivez ces étapes en remplaçant le chemin et la version Hadoop le cas échéant
puis mettez à jour hadoop-env.sh avec
la source
la source
@zhutoulala - FWIW vos liens ont fonctionné pour moi avec Hadoop 2.4.0 à une exception près, j'ai dû dire à maven de ne pas construire les javadocs. J'ai également utilisé le correctif dans le premier lien pour 2.4.0 et cela a bien fonctionné. Voici la commande maven que j'ai dû émettre
Après avoir construit cela et déplacé les bibliothèques, n'oubliez pas de mettre à jour hadoop-env.sh :)
J'ai pensé que cela pourrait aider quelqu'un qui s'est heurté aux mêmes barrages routiers que moi
la source
Déplacez vos fichiers de bibliothèque natifs compilés vers un
$HADOOP_HOME/lib
dossier.Ensuite, définissez vos variables d'environnement en modifiant le
.bashrc
fichierAssurez-vous que vos fichiers de bibliothèque natifs compilés se trouvent dans le
$HADOOP_HOME/lib
dossier.ça devrait marcher.
la source
la source
Cette ligne ici:
D'après la réponse de KunBetter, cela a fonctionné pour moi. Il suffit de l'ajouter au fichier .bashrc et de recharger le contenu .bashrc
la source
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
et cela a fonctionné pour moi.Cette ligne ici:
D'après la réponse de KunBetter, où est l'argent
la source
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
etexport LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH
J'ai eu le même problème avec JDK6, j'ai changé le JDK en JDK8, le problème a été résolu. Essayez d'utiliser JDK8 !!!
la source
En plus de la réponse acceptée par @zhutoulala, voici une mise à jour pour la faire fonctionner avec la dernière version stable à ce jour (2.8) sur les plateformes ARMHF (Raspberry Pi 3 modèle B). Je peux d'abord confirmer que vous devez recompiler les bibliothèques natives en ARM 64 bits, les autres réponses ici basées sur la définition de certaines variables d'environnement ne fonctionneront pas. Comme indiqué dans la documentation Hadoop, les bibliothèques natives préconstruites sont en 32 bits.
Les étapes de haut niveau indiquées dans le premier lien ( http://www.ercoppa.org/posts/how-to-compile-apache-hadoop-on-ubuntu-linux.html ) sont correctes. Sur cette URL http://www.instructables.com/id/Native-Hadoop-260-Build-on-Pi/ vous obtenez plus de détails spécifiques à Raspberry Pi, mais pas pour Hadoop version 2.8.
Voici mes indications pour Hadoop 2.8:
La méthode de correction des fichiers CMake doit être modifiée. De plus, les fichiers à patcher ne sont pas les mêmes. Malheureusement, il n'y a pas de correctif accepté sur JIRA spécifique à 2.8. Sur cette URL ( https://issues.apache.org/jira/browse/HADOOP-9320 ), vous devez copier et coller le patch proposé par Andreas Muttscheller sur votre namenode:
Une fois la construction réussie:
Et remplacez le contenu du répertoire lib / native de votre installation Hadoop par le contenu de cette archive. Le message d'avertissement lors de l'exécution de Hadoop devrait disparaître.
la source
Pour installer Hadoop, il est tellement plus facile d'installer la version gratuite de Cloudera. Il est livré avec une belle interface graphique qui facilite l'ajout de nœuds, il n'y a pas de compilation ou de bourrage de dépendances, il est livré avec des trucs comme ruche, cochon, etc.
http://www.cloudera.com/content/support/en/downloads.html
Les étapes sont les suivantes: 1) Téléchargez 2) Exécutez-le 3) Accédez à l'interface graphique Web (1.2.3.4:7180) 4) Ajoutez des nœuds supplémentaires dans l'interface graphique Web (n'installez PAS le logiciel cloudera sur d'autres nœuds, il le fait tout pour vous) 5) Dans l'interface graphique Web, accédez à Accueil, cliquez sur Hue and Hue Web UI. Cela vous donne accès à Hive, Pig, Sqoop etc.
la source
Solution vérifiée à partir de publications antérieures:
1) Vérifié que la
libhadoop.so.1.0.0
livraison avec la distribution Hadoop a été compilée pour l'architecture de ma machine, qui est x86_64:2) Ajouté
-Djava.library.path=<path>
àHADOOP_OPT
enhadoop-env.sh
:Cela a en effet fait disparaître l'avertissement ennuyeux.
la source
Premièrement: vous pouvez modifier la version de la glibc. CentOS fournit des logiciels sûrs de manière classique, cela signifie également que la version est ancienne comme glibc, protobuf ...
Vous pouvez comparer la version de la glibc actuelle avec la glibc nécessaire.
Deuxièmement: si la version de la glibc actuelle est ancienne, vous pouvez mettre à jour la glibc. DownLoad Glibc
Si la version de l'identifiant de la glibc actuelle est correcte, vous pouvez ajouter un mot natif à votre HADOOP_OPTS
la source
Je n'utilise pas CentOS. Voici ce que j'ai dans Ubuntu 16.04.2, hadoop-2.7.3, jdk1.8.0_121. Exécutez start-dfs.sh ou stop-dfs.sh avec succès sans erreur:
Remplacez / j01 / sys / jdk, / j01 / srv / hadoop par votre chemin d'installation
J'ai également fait ce qui suit pour une configuration unique sur Ubuntu, ce qui élimine la nécessité de saisir des mots de passe plusieurs fois lors de l'exécution de start-dfs.sh:
Remplacez l'utilisateur par votre nom d'utilisateur
la source
Fondamentalement, ce n'est pas une erreur, c'est un avertissement dans le cluster Hadoop. Ici, nous mettons à jour les variables d'environnement.
la source