J'essaie d'installer Hadoop 2.2.0 Cluster sur les serveurs. Pour l'instant, tous les serveurs sont en 64 bits, je télécharge Hadoop 2.2.0 et tous les fichiers de configuration ont été configurés. Lorsque j'exécute ./start-dfs.sh, j'ai le message d'erreur suivant:
13/11/15 14:29:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable
Starting namenodes on [Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/hchen/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.namenode]
sed: -e expression #1, char 6: unknown option to `s' have: ssh: Could not resolve hostname have: Name or service not known
HotSpot(TM): ssh: Could not resolve hostname HotSpot(TM): Name or service not known
-c: Unknown cipher type 'cd'
Java: ssh: Could not resolve hostname Java: Name or service not known
The authenticity of Host 'namenode (192.168.1.62)' can't be established.
RSA key fingerprint is 65:f9:aa:7c:8f:fc:74:e4:c7:a2:f5:7f:d2:cd:55:d4.
Are you sure you want to continue connecting (yes/no)? VM: ssh: Could not resolve hostname VM: Name or service not known
You: ssh: Could not resolve hostname You: Name or service not known
warning:: ssh: Could not resolve hostname warning:: Name or service not known
library: ssh: Could not resolve hostname library: Name or service not known
have: ssh: Could not resolve hostname have: Name or service not known
64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
...
Outre le 64 bits, y a-t-il d'autres erreurs? J'ai terminé la connexion entre namenode et datanodes sans mot de passe. Que signifient les autres erreurs?
Ajoutez les entrées suivantes à .bashrc où HADOOP_HOME est votre dossier hadoop:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
De plus, exécutez les commandes suivantes:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
La cause principale est que la bibliothèque native par défaut dans hadoop est conçue pour la version 32 bits .
1) Configurez certaines variables d’environnement dans .bash_profile
. Veuillez vous référer à https://Gist.github.com/ruo91/7154697 Ou
2) Reconstruisez votre bibliothèque native hadoop, veuillez consulter http://hadoop.Apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html
Vous pouvez également exporter des variables dans hadoop-env.sh
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
/usr/local/hadoop - mon dossier d'installation hadoop
#Hadoop variables
export Java_HOME=/usr/lib/jvm/Java-1.7.0-openjdk-AMD64 # your jdk install path
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
Je pense que le seul problème ici est le même que dans cette question , donc la solution est aussi la même:
Arrêtez la machine virtuelle Java d'imprimer l'avertissement de garde de pile sur stdout/stderr, car c'est ce qui rompt le script de démarrage HDFS.
Faites-le en remplaçant dans votre ligne etc/hadoop/hadoop-env.sh
:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
avec:
export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
( Cette solution a été trouvée sur le blog de Sumit Chawla )
Le problème ne concerne pas la bibliothèque native. S'il vous plaît voir que c'est juste un avertissement. Veuillez exporter les variables hadoop mentionnées ci-dessus. Ça marchera
Vous avez trois problèmes:
" L'authenticité de l'hôte 'namenode (192.168.1.62)' ne peut pas être établie. " C'est parce que vous n'avez pas d'authentification SSH. Faire ceci:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys
[email protected]:/home/your_install_user/.ssh/
" sed: -e expression # 1, char 6: option inconnue à 's': ssh: impossible de résoudre le nom d'hôte have: nom ou service inconnu HotSpot (TM): ssh: impossible de résoudre le nom d'hôte (TM): Nom ou service inconnu - c: "
Essayez ceci: éditez votre .bash_profile
ou .bashrc
et mettez-le dedans:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
et source .bash_profile
ou source .bashr
pour que le changement prenne effet immédiatement.
J'ai eu le même problème et je ne pouvais pas le résoudre après avoir suivi toutes les suggestions ci-dessus.
Enfin compris que, le nom d’hôte configuré et adresse IP ne sont pas attribués pour la même chose.
Mon nom d'hôte était vagrant
et il est configuré dans /etc/hostname
. Mais j’ai trouvé que l’adresse IP du vagabond n’est pas attribuée dans /etc/hosts
. Dans /etc/hosts
, j'ai trouvé l'adresse IP pour seulement localhost
.
Une fois que j'ai mis à jour le nom d'hôte pour localhost
et vagrant
, tous les problèmes ci-dessus sont résolus.