2016-11-27 2 views
0

Ich versuche, Hadoop zu installieren und auszuführen. Und ich bin sicher, dass ich Hadoop und formatiert Namenknoten erfolgreich installiert habe. Allerdings, wenn ich start-dfs.sh zu laufen versuchte, bekam ich den Fehler unten:hadoop kann nicht gestartet werden start-dfs.sh

localhost: starting namenode, logging to /usr/local/hadoop/logs/hadoop-wenruo-namenode-linux.out localhost: /usr/local/hadoop/bin/hdfs: line 304: /usr/local/hadoop/usr/lib/jvm/java-8-oracle/bin/java: No such file or directory

Mein JAVA_HOME unter:

echo $JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64

Meine hadoop-env.sh Datei:

export JAVA_HOME=${JAVA_HOME}

Wie könnte Hadoop noch nach JDK8 suchen, da ich JAVA_HOME bereits auf JDK7 gesetzt habe?

Vielen Dank.

+0

Schwer zu sagen, ohne Dateien zu sehen (welche Hadoop-Version?). Überprüfe, woher dieser Pfad kommt '/ usr/local/hadoop/usr/lib/jvm/java-8-oracle/bin/java' mit dem Befehl grep im hadoop-Verzeichnis und aktualisiere dann deinen bashrc, indem du dein Java exportierst und deine Shells aktualisierst. Sie werden es also global haben. Fügen Sie außerdem ein Echo für JAVA_HOME direkt nach dem Exportieren in das Skript hinzu. –

+0

@Nicolas Fontenele Hallo Nicolas, wie Sie sehen, ich Echo JAVA_HOME und bekomme JDK7, nicht JDK8. Keine Ahnung, warum Hadoop noch nach JDK8 sucht. – wenruo

+0

Es beweist, dass in der aktuellen Umgebung JAVA_HOME korrekt ist. Aber wenn Sie zum Beispiel Hadoop von einer anderen Shell ausführen, hat es vielleicht ein anderes Java-Home exportiert. Hast du meinen Vorschlag genommen, von Java 8 zu grep und basbrc zu aktualisieren? Ist dies auch ein Single-Node-Setup? Wegen Ihrer lokalen Heimadresse, aber nicht in anderen Knoten wird es fehlschlagen, wie es sein sollte. –

Antwort

0

Lassen Sie es. Das Problem ist gelöst. In hadoop-env.sh habe ich den Export von JAVA_HOME = $ {JAVA_HOME} in echo $ JAVA_HOME/usr/lib/jvm/java-7-openjdk-amd64 geändert. Es scheint, dass $ {JAVA_HOME} nicht funktioniert.

0

Im Allgemeinen sollte jede Hadoop-Distribution/Version ein paar grundlegende Skriptdateien haben, die diese JAVA_HOME-Umgebungsvariablen wie die garn-env.sh-Datei festlegen, wenn Sie Garn haben.

Abhängig von Ihrer Hadoop-Version haben Sie möglicherweise auch den Pfad in Ihren * -site.xml-Dateien wie hdfs-site.xml, core-site.xml, yarn-site.xml, mapred-site.xml, und ein paar andere abhängig davon, welche Dienste Sie haben. Es ist wahrscheinlich, dass Ihr Update auf hadoop-env.sh die Client-Konfigurationsdateien nicht neu generiert hat, es sei denn, Sie haben dies über eine Cluster-Manager-Anwendung getan und dann die Client-Konfigurationsdateien neu verteilt.

Manchmal finden diese auch ich benutze die systeme bin/java ausführbar. Sie können den folgenden Befehl verwenden, um herauszufinden, welches Java Ihr Betriebssystem in Ihrem Bin/Pfad hat.

readlink -f/usr/bin/java /usr/bin/java -version

Haben Sie auch hadoop-env.sh auf jedem Knoten aktualisieren dann alle Dienste neu starten, um sicherzustellen, dass es wieder aufgenommen wird ?

Verwandte Themen