En collaboration Avec Hadoop: localhost: Erreur: JAVA_HOME n'est pas définie
Je travaille avec Ubuntu 12.04 LTS.
Je vais à travers les hadoop manuel de démarrage rapide de faire un pseudo-distribué opération. Il semble simple (facile!).
Cependant, lorsque j'essaie d'exécuter start-all.sh
j'obtiens:
localhost: Error: JAVA_HOME is not set.
J'ai lu tous les autres conseils sur stackoverflow pour ce problème et ont pris les mesures suivantes pour s'assurer JAVA_HOME
est défini:
Dans /etc/hadoop/conf/hadoop-env.sh
j'ai mis
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
Dans /etc/bash.bashrc
j'ai mis
JAVA_HOME=/usr/lib/jvm/java-6-oracle
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH
which java
retourne:
/usr/bin/java
java –version
œuvres
echo $JAVA_HOME
retourne:
/usr/lib/jvm/java-6-oracle
J'ai même essayé de devenir root et explicitement écrit dans le terminal:
$ JAVA_HOME=/usr/lib/jvm/java-6-oracle
$ export JAVA_HOME
$ start-all.sh
Si vous pouviez me montrer comment résoudre cette erreur, il serait grandement apprécié.
Je pense que mes JAVA_HOME
est remplacée en quelque sorte. Si c'est le cas, pourriez-vous m'expliquer comment faire pour que mon exportations mondiales?
- Lorsque vous modifiez votre bashrc vous avez besoin de réinitialiser le terminal
Vous devez vous connecter pour publier un commentaire.
Je suis en utilisant hadoop 1.1, et face au même problème.
Je l'ai résolu en changeant
JAVA_HOME
variable dans/etc/hadoop/hadoop-env.sh
comme:La façon de résoudre ce problème est d'exporter la variable JAVA_HOME à l'intérieur de la conf/hadoop-env.sh fichier.
Il n'a pas d'importance si vous avez déjà exporté cette variable dans ~/.bashrc, ça va encore montrer l'erreur.
Donc modifier conf/hadoop-env.sh et décommentez la ligne "export JAVA_HOME" et ajouter un bon chemin du système de fichiers, par exemple, le chemin d'accès à votre JDK Java.
hadoop-env.sh
fichier est situé danshadoop-2.7.3/etc/hadoop
répertoire au lieu de laconf
répertoireLa façon de déboguer c'est de mettre un "echo $JAVA_HOME" dans start-all.sh. Exécutez-vous de votre environnement hadoop sous un autre nom d'utilisateur, ou que vous? Dans le premier cas, il est très probable que la variable d'environnement JAVA_HOME n'est pas défini pour l'utilisateur.
L'autre problème potentiel est que vous avez spécifié JAVA_HOME de manière incorrecte, et la valeur que vous avez fournies ne pointe pas vers un JDK/JRE. Notez que "java" et "java -version" à la fois travailler, même si JAVA_HOME est mal réglé.
extrait de etc/hadoop/hadoop-env.sh
La seule variable d'environnement JAVA_HOME. Tous les autres sont
facultatif. Lors de l'exécution d'une configuration distribuée, il est préférable de
set JAVA_HOME dans ce fichier, de sorte qu'il est correctement définie sur
les nœuds distants.
Cela signifie qu'il est préférable et conseillé de mettre JAVA_HOME ici.. même si la définition actuelle lit la variable JAVA_HOME. Peut-être pas obtenir la valeur de JAVA_HOME précédemment mis en valeur... standard d'apache manuel ne dit pas cela 🙁 🙁
Cette erreur vient de la Ligne 180
dans
libexec/hadoop-config.sh
.Essayer echo
$JAVA_HOME
dans le script. Si elle ne reconnaît pas,Trouver votre
JAVA_HOME
en utilisant ceci:$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
et remplacez la ligne
export JAVA_HOME=${JAVA_HOME}
dans
/etc/hadoop/hadoop-env.sh
avec JAVA_HOME vous avez obtenu de commande ci-dessus.J'ai également dû faire face le problème similaire dans hadoop 1.1
Je n'avais pas remarqué que le
JAVA_HOME
a été commenté dans:hadoop/conf/hadoop-env.sh
Il a été
Dû changer de
indépendamment de debian ou de tout linux, il suffit de savoir que
~/.bash_profile
appartient à l'utilisateur spécifique et n'est pas à l'échelle du système.en pseudo-environnement distribué hadoop fonctionne sur
localhost
de sorte que le$JAVA_HOME
dans .bash_profile ne sert plus à rien.il suffit d'exporter le JAVA_HOME dans
~/.bashrc
et de l'utiliser à l'échelle du système.A couru dans le même problème sur ubuntu LTS 16.04. L'exécution de
bash -vx ./bin/hadoop
montré testé si java est un répertoire. J'ai donc changé JAVA_HOME pour un dossier et cela a fonctionné.J'ai donc changé JAVA_HOME dans
./etc/hadoop/hadoop-env.sh
àet hadoop commence bien. Cela est également mentionné dans cette l'article.
Vérifier si vos solutions de rechange vers la droite, vous pouvez pointer une version différente et en essayant de modifier la hadoop-env.sh sur une autre version installée.
-alternatives --install /etc/hadoop/conf [generic_name] [votre chemin d'accès correct] la priorité {pour de plus amples consultez le man page d'alternatives}
pour définir des solutions de rechange manuellement,
alternatives --set [nom générique] [votre chemin actuel].
Changer le
JAVA_HOME
variable dansconf/hadoop-env.sh
Avis: Ne pas utiliser
export JAVA_HOME=${JAVA_HOME}
!