Hadoop “Impossible de charger le natif hadoop bibliothèque pour votre plate-forme d'avertissement”
Je suis en train de configurer hadoop sur un serveur qui exécute CentOs. Quand je lance start-dfs.sh
ou stop-dfs.sh
, j'obtiens l'erreur suivante:
AVERTIR util.NativeCodeLoader: Impossible de charger le natif hadoop bibliothèque pour
votre plate-forme de... à l'aide de builtin-classes java le cas échéant
Je suis en cours d'exécution Hadoop 2.2.0.
De faire une recherche en ligne évoqué ce lien: http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html
Toutefois, le contenu de /native/
répertoire sur hadoop 2.x semble être différent donc je ne suis pas sûr de quoi faire.
J'ai ajouté ces deux variables d'environnement dans hadoop-env.sh
:
exportation HADOOP_OPTS="$HADOOP_OPTS
-Djava.de la bibliothèque.path=/usr/local/hadoop/lib/"exportation HADOOP_COMMON_LIB_NATIVE_DIR="/usr/local/hadoop/lib/native/"
Des idées?
- Pour la recherche: ce problème s'applique également au moins pour Hadoop 2.4.0, Hadoop 2.4.1 et probablement d'autres versions.
- Documentation pour l'utilisation de bibliothèques natives est à hadoop.apache.org/docs/current/hadoop-project-dist/...
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous êtes en cours d'exécution Hadoop sur 64 bits CentOS. La raison pour laquelle vous vu que l'avertissement est le natif de Hadoop bibliothèque
$HADOOP_HOME/lib/native/libhadoop.so.1.0.0
a effectivement été compilé en 32 bits.De toute façon, c'est juste un avertissement, et n'auront pas d'impact Hadoop de ses fonctionnalités.
Ici est le chemin si vous ne voulez éliminer cet avertissement, télécharger le code source d'Hadoop et de recompiler
libhadoop.so.1.0.0
sur système 64 bits, puis remplacez le 32-bit un.Étapes sur la façon de recompiler le code source est inclus ici pour Ubuntu:
Bonne chance.
hadoop-common-project/hadoop-common
ethadoop-hdfs-project/hadoop-hdfs
est assez.Juste ajouter un mot natif à votre
HADOOP_OPTS
comme ceci:PS: Merci à Searene
La réponse dépend... je viens d'installer Hadoop 2.6 à partir de l'archive sur 64 bits CentOS 6.6. Hadoop installer ont effectivement venir avec un préconstruit 64 bits natif de la bibliothèque. Pour mon installation, c'est ici:
Et je sais que c'est de 64 bits:
Malheureusement, j'ai bêtement négligé le droit de réponse il me regarder en face comme je l'a met l'accent sur, "Est-ce que la bibliothèque 32 pr 64 bits?":
Donc, leçon apprise. De toute façon, le reste, au moins, m'a conduit à être en mesure de supprimer l'avertissement. J'ai donc continué et a tout fait recommandé dans les autres réponses, pour le chemin de la bibliothèque à l'aide de la HADOOP_OPTS variable d'environnement en vain. J'ai donc regardé le code source. Le module qui génère l'erreur vous indique l'indice (util.NativeCodeLoader):
Donc, hors d'ici pour voir ce que ça donne:
http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.action/0.2.6/org/apache/hadoop/util/NativeCodeLoader.java/
Ah, il ya un certain niveau de debug logging - tournons-nous que sur un voir si nous avons un peu d'aide supplémentaire. Ceci est fait en ajoutant la ligne suivante $HADOOP_CONF_DIR/log4j.fichier de propriétés:
Ensuite, j'ai couru une commande qui génère l'origine d'avertissement, comme stop-dfs.sh, et a obtenu ce goodie:
Et la réponse est révélé dans cet extrait de l'un message de débogage (la même chose que la précédente commande ldd "essayé" de me dire:
Quelle est la version de la GLIBC dois-je avoir? Voici truc simple pour savoir:
Donc, ne peut pas mettre à jour mon OS à 2.14. La seule solution est de construire des bibliothèques natives à partir de sources sur mon OS ou supprimer l'avertissement et simplement l'ignorer pour l'instant. J'ai opté pour seulement supprimer les fenêtres d'avertissement pour l'instant (mais ne plan à construire à partir de sources dans l'avenir), les acheter en utilisant les mêmes options de journalisation nous avons utilisé pour obtenir le message de débogage, sauf que maintenant, il suffit de faire l'ERREUR de niveau.
J'espère que cela aide les autres à voir qu'un gros avantage de l'open source du logiciel est que vous pouvez comprendre ce genre de choses si vous prenez quelques simples étapes logiques.
J'ai eu le même problème. C'est résolu en ajoutant des lignes suivantes dans
.bashrc
:Dans mon cas , après je construis hadoop sur mon 64 bits de Linux mint OS, j'ai remplacé la bibliothèque native dans
hadoop/lib
. Toujours le problème persiste. Puis j'ai compris les hadoop pointant vershadoop/lib
pas à lahadoop/lib/native
. Donc, je viens de déménager tout le contenu de la bibliothèque native de son parent. Et l'avertissement juste disparu.Après une recherche continue comme suggéré par KotiI ai résolu le problème.
Acclamations
Cette mesure permettrait également de travail:
Pour ceux sur OSX avec Hadoop installé via Homebrew, suivez ces étapes remplacer le chemin d'accès et Hadoop version le cas échéant
puis mise à jour hadoop-env.sh avec
@zhutoulala -- FWIW vos liens a fonctionné pour moi avec Hadoop 2.4.0, à une exception près, j'ai dû dire à maven de ne pas construire la documentation javadoc. J'ai aussi utilisé le patch dans le premier lien pour 2.4.0 et il a bien fonctionné. Voici la commande maven, j'ai eu de problème
Après la construction de ce et en déplaçant les bibliothèques, n'oubliez pas de mettre à jour hadoop-env.sh 🙂
Pensé que cela pourrait aider quelqu'un qui a couru dans les mêmes obstacles que moi
Déplacer votre compilé en natif des fichiers de bibliothèque de
$HADOOP_HOME/lib
dossier.Ensuite définir vos variables d'environnement par l'édition
.bashrc
fichierAssurez-vous que votre compilé en natif des fichiers de la bibliothèque sont en
$HADOOP_HOME/lib
dossier.il devrait fonctionner.
Cette ligne, ici:
De KunBetter réponse, a travaillé pour moi.
Juste l'ajouter à .bashrc fichier et de le recharger .bashrc contenu
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
et il a travaillé pour moi.Cette ligne, ici:
De KunBetter la réponse de l'argent là où il est
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 pour JDK8,le problème est résolu.
Essayez d'utiliser JDK8!!!
En plus de @zhutoulala accepté de répondre, voici une mise à jour pour le faire fonctionner avec la dernière version stable à ce jour (2.8) sur ARMHF plates-formes (Raspberry Pi modèle 3 B).
D'abord, je peux confirmer que vous devez recompiler bibliothèques natives 64 bits ARM, d'autres réponses ici, basé sur la définition de certaines variables d'environnement ne fonctionne pas. Comme indiqué dans Hadoop de la documentation, de la pré-construit des bibliothèques natives sont en 32 bits.
De haut niveau, les étapes 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 sur la Raspberry Pi, mais pas pour Hadoop version 2.8.
Voici mes indications verser Hadoop 2.8 :
CMake fichier patcher méthode doit être changé. Moreovere, les fichiers de patch ne sont pas les mêmes. Malheureusement, il n'existe pas de patch sur JIRA spécifiques à 2.8. Sur cette URL ( https://issues.apache.org/jira/browse/HADOOP-9320 ), vous devez copier et coller Andreas Muttscheller proposé un patch sur votre namenode :
Une fois de construire est un succès :
Et remplacer le contenu du répertoire lib/annuaire natif de votre Hadoop installer avec le contenu de cette archive. Message d'avertissement lors de l'exécution de Hadoop devraient disparaître.
Pour installer Hadoop il est donc beaucoup plus facile d'installer la version gratuite de Cloudera. Il est livré avec une belle interface qui le rend simple pour ajouter des nœuds, il n'y a pas de compilation ou de la farce autour avec des dépendances, il est livré avec des trucs comme hive, pig, etc.
http://www.cloudera.com/content/support/en/downloads.html
Étapes sont les suivantes:
1) Télécharger
2) Exécuter
3) Accédez à l'interface web (1.2.3.4:7180)
4) Ajouter les nœuds supplémentaires dans l'interface utilisateur web (ne PAS installer le cloudera logiciel sur d'autres nœuds, il fait tout pour vous)
5) Dans l'interface web aller à l'Accueil, cliquez sur la Teinte et la Teinte d'une INTERFACE Web. Cela vous donne accès à Hive, Pig, Sqoop, etc.
Vérifié remédier à de précédents messages:
1) Vérifier que le
libhadoop.so.1.0.0
livré avec la distribution Hadoop a été compilé pour mon architecture de la machine, qui est x86_64:2) Ajouté
-Djava.library.path=<path>
àHADOOP_OPT
danshadoop-env.sh
:Ce fait l'ennuyeux avertissement disparaître.
Tout d'abord: Vous pouvez modifier la version de la glibc.CentOS fournit le coffre-fort de logiciels tranditionally,cela signifie aussi que la version est vieux comme la glibc,protobuf ...
Vous pouvez comparer la version actuelle de la glibc, ayant besoin de la glibc.
Deuxièmement: Si la version actuelle de la glibc est vieux,vous pouvez mettre à jour la version de la glibc.
Télécharger La Glibc
Si la version actuelle de la glibc droit d'id,vous pouvez ajouter un mot originaire de votre HADOOP_OPTS
Je ne suis pas à l'aide de CentOS. Voici ce que j'ai dans Ubuntu 16.04.2, hadoop-2.7.3, jdk1.8.0_121. Exécuter start-dfs.sh ou stop-dfs.sh avec succès w/o erreur:
Remplacer /j01/sys/jdk /j01/srv/hadoop avec le chemin de votre installation
J'ai fait aussi l'suivantes pour un temps d'installation sur Ubuntu, ce qui élimine le besoin d'entrer les mots de passe pour plusieurs fois lors de l'exécution de start-dfs.sh:
Remplacez user par votre nom d'utilisateur