Hallo, ich bin neu in Hadoop und habe vor ein paar Tagen angefangen zu lernen. Ich folgte nur den Anweisungen von Digital Ocean zu . Danach habe ich einfach ein einfaches Beispielprogramm namens WordCount aus dem Hadoop docs ausprobiert.Hauptklasse beim Kompilieren von Hadoop nicht gefunden Beispielprogramm
Meine Hadoop-Version ist 2.5.1, das ist die gleiche Version mit dem, was im Tutorial verwendet wird, und es läuft auf Ubuntu Precise. Ich stelle sicher, dass ich das richtige Setup vorgenommen habe, wie es im Tutorial heißt. Hier ist das Ende meiner ~/.bashrc Inhalte.
...
#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
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"
export HADOOP_PREFIX=/usr/local/hadoop
#HADOOP VARIABLES END
Auch Ich habe auf meinem java Haus config und das Ergebnis ist, wie unten
sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 auto mode
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1051 manual mode
* 3 /usr/lib/jvm/java-7-oracle/jre/bin/java 1 manual mode
Also änderte ich alle Werte JAVA_HOME sowohl in bashrc und hadoop-env.sh Dateien /usr/lib/jvm/java-7-oracle
. Ich stelle auch sicher, dass Dfs und Yarn beide gestartet sind.
Wenn jedoch i die WordCount.java kompiliert diesen Befehl
hadoop com.sun.tools.javac.Main WordCount.java
Nichts meinen Weg geht. Ich habe diesen Fehler erhalten. Beachten Sie, dass ich den Hadoop-Befehl stattdessen bin/hadoop verwende, da der Befehl ordnungsgemäß funktioniert, da er in der Datei bashrc
definiert wurde.
Was ist die mögliche Ursache für diesen Fehler und wie wird man davon los? Es könnte Java Classpath Problem sein, denke ich, aber ich bin immer noch nicht in der Lage, das Detail herauszufinden. Bei jeder Problemumgehung in Bezug auf dieses Problem geht es um die Ausführung des Befehls java
oder javac
, nicht um den Befehl hadoop
.
Ich möchte nur das Beispielprogramm zuerst arbeiten, bevor Sie lernen, wie es funktioniert. Jede Hilfe wäre willkommen. Dank ..
Vielleicht wird ein 'export PATH = $ PATH: $ JAVA_HOME/bin 'den Trick machen. Kannst du 'javac -version' überhaupt ausführen? – blackSmith
@blackSmith 'java -version' wurde erstellt javac 1.6.0_33 –
Ich fragte bout' javac' nicht 'java'. Das Problem ist höchstwahrscheinlich auf die Nichtverfügbarkeit von 'javac' im Klassenpfad zurückzuführen. Versuchen Sie 'JAVA_HOME =/usr/lib/jvm/java-6-openjdk-amd64' und fügen Sie dann' JAVA_HOME' zu 'Path' hinzu, wie zuvor gezeigt. Es sollte funktionieren. – blackSmith