8
votes

Java_Home ne paramètre pas

Tout en travaillant sur Hadoop Mise en œuvre dans une opération pseudo-distribuée, j'ai trouvé à la suite d'une exception de Java_Home Variable non défini, mais lorsque j'ai essayé de l'écho, il a été défini.

La variable est préréglée dans conf / hadoop-env.sh (modifié export java_home = / usr / lib / jvm / java-6-soleil ), bash.bashrc . xxx


1 commentaires

Veuillez ajouter les lignes de ./f / hadoop-env.sh dans la question si le problème n'est toujours pas résolu. Ajoutez également les lignes du ~ / .bstructrc où le chemin d'accès à java_home est défini.


9 Réponses :


3
votes

Vérifiez si bin / start-all.sh ne remplace pas java_home

peut-être mettre echo $ java_home à l'intérieur de ce script droit avant l'exécution de ces fichiers binaires?


2 commentaires

Habituellement scripts de démarrage des démons d'incendie comme un autre utilisateur, assurez-vous donc que cet utilisateur a également une exportation appropriée dans .CASHRC.


Ou définir manuellement Java Home comme indiqué dans une autre réponse ici, mettre à bac / start-all.sh: export java_home = / usr / lib / jvm / java-6-soleil



3
votes

La variable Java_Home Vous définissez avec Set Java_Home = code> est pertinent uniquement pour la coque actuelle. Étant donné que vous commencez une nouvelle coquille lorsque vous exécutez bin / start-all.sh code> Vous devez "exporter" la variable environnementale pour la rendre disponible dans la portée globale:

export JAVA_HOME=/usr/lib/jvm/java-6-sun


0 commentaires

0
votes

Vous pouvez essayer d'écrire dans votre fichier .bash_profile "java_home = / usr / lib / jvm / java-6-sun", lorsque vous vous connectez à l'aide d'une console, physiquement à la machine ou en utilisant SSH, .bash_profile est exécuté ., .bstrucc est ouvert lorsque vous exécutez / bin / bash ou un autre terminal

Vous pouvez également essayer de l'écrire à l'intérieur du démarrage-all.sh

Assurez-vous que Java_Home a le chemin correct


0 commentaires

4
votes

J'ai simplement ajouté à la ./conf/hadoop-env.sh Cette ligne: xxx

et cela a aidé


3 commentaires

Il est également bon de noter que si vous avez déjà Java_Home défini pour une raison quelconque (par exemple, parce que vous utilisez Maven), cela ne peut toujours pas être ignoré. L'exportation Java_Home doit encore être définie (et non simplement avec l'exportation Java_Home = $ Java_Home mais une chaîne appropriée).


Travailler sur Hadoop 1.0.4 de Tarball téléchargé à partir d'Apache. Sur Ubuntu 12.04 Utiliser Open JDK 6 - (Ubuntu place le binaire Java en / usr / bin / java), donc dans ce fichier, je n'ai pas décompressé la variable Java_Home et l'a remplacée avec / usr et start-all.sh fonctionne sans erreur Java_Home


Merci, ça a fonctionné pour moi aussi. La version Hadoop est 2.6.0.



1
votes

Installation de Java 1.6.x
  1. Télécharger "JDK-6U32-Linux-i586.bin"
  2. sh jdk-6u32-linux-i586.bin

  3. mv / etc / alternatives / java / etc / alternatives / java_bak MV / etc / Alternatives / Javac / etc / Alternatives / Javac_Bak

  4. Créer un lien ln -s /pdk1.6.0_32/bin/java / etc / Alternatives / Java ln -s /pdk1.6.0_32/bin/javac / etc / Alternatives / Javac

    5. Java -Version

    ------------ Vous devez voir ceci ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Java version "1.6.0_32" Java (TM) SE Runtime Environment (Build 1.6.0_32-B05)

    VM client Java Hotspot (TM) (version 20.7-B02, mode mixte, partage)


0 commentaires

0
votes

Même problème sur Ubuntu Precise + CDH4 ...

L'histoire longue courte, CDH4 utilise Bigtop et le moyen le plus simple de définir Java_Home consiste à éditer le fichier / etc / par défaut / utils de Bigtop-Utils, tel que:

Export Java_Home = / USR / LIB / JVM / JDK1.6.0_43 / JRE /

Remarque: je n'ai pas pu trouver de fichier hadoop-env.sh après une installation correcte du CDH4.


0 commentaires

0
votes

Le problème est que les scripts qui initialise DFS et mapreduce Daemons n'ont pas de java_home défini dans son environnement.

Posiblement, lors de l'exécution de HDFS et de MapReduce, son environnement d'exécution est celui spécifié par le script $ Hadoop_home / Conf / Hadoop-env.sh. Par conséquent, il suffirait de définir Java_Home à $ hadoop_home / Conf / Hadoop-env.sh:
xxx pré>

sinon, lorsque cela ne suffit pas, le problème peut être que la configuration L'environnement utilisé (hadoop-env.sh) n'est pas celui que nous attendions; Hadoop choisit une autre ou la valeur par défaut si jamais. La solution la plus rapide définira le répertoire Conf lorsque le script hadoop-env.sh est placé. Réglage de la variable d'environnement Hadoop_Conf_Dir sera suffisant: P>

export HADOOP_CONF_DIR=hadoop-home-path/conf


0 commentaires

0
votes

Vous pouvez ajouter votre fichier .bstrucc fichier:

Exporter java_home = $ (readlink -f / usr / bin / java | sed "s: bin / java ::")

et il changera de manière dynamique lorsque vous mettrez à jour vos paquets et utilisez-vous par Hadoop.


0 commentaires

0
votes

Peut-être que vous devez vérifier $ Java_Home Configuration comme ci-dessous:

1. Pour Hadoop-1.x : Hadoop-Home-Path / Conf / Hadoop-env.sh
2. Pour Hadoop-2.x : Hadoop-home-path / etc / hadoop / hadoop-env.sh


0 commentaires