5 Stimmen

Wie kann ich Hadoop mit einer Java-Klasse ausführen?

Ich verfolge das Buch Hadoop: der endgültige Leitfaden .

Ich bin verwirrt über Beispiel 3-1.

Es gibt eine Java-Quelldatei, URLCat.java. Ich verwende javac zu URLCat.class kompilieren und dann mit jar um es in ein Glas zu verpacken.

In dem Buch heißt es, man solle

% hadoop URLCat hdfs://localhost/user/tom/quangle.txt

um es zu betreiben. Ich habe viele verschiedene Möglichkeiten ausprobiert, z. B.

% hadoop jar URLCat.jar .......

aber es funktionierte nicht. Ich bekam Fehler wie diesen:

Ausnahme im Thread "main" java.lang.ClassNotFoundException: hdfs://localhost/user/username/quangle/txt

Was ist der Grund dafür, und wie mache ich es richtig?

0voto

kometen Punkte 5040

Ich habe dies anhand der Hilfe auf dieser Website und dem Hadoop-Tutorial getan.

mkdir urlcat_classes<br>
javac -classpath /usr/lib/hadoop/hadoop-0.20.2-cdh3u1-core.jar -d     urlcat_classes URLCat.java<br>
jar -cvf urlcat.jar -C urlcat_classes .<br>
hadoop jar urlcat.jar no.gnome.URLCat       
hdfs://localhost/user/claus/sample.txt<br>
<br>
no.gnome is from 'package no.gnome;' in URLCat.java.<br><br>

Grüße
Claus

0voto

Kishore Bhosale Punkte 549

Schritt 1: Java-Programm kompilieren:

javac URLCat.java -classpath $HADOOP_HOME/share/hadoop/common/hadoop-common-2.7.0.jar

Schritt 2: jar-Datei erstellen :

jar cvf URLCat.jar URLCat.class

Schritt 3: Führen Sie das Programm aus: (geben Sie den Speicherort Ihrer hdfs-Datei an)

hadoop jar URLCat.jar URLCat hdfs://localhost:9000/pcode/wcinput.txt

0voto

Eric Na Punkte 2527

Wechseln Sie in das Verzeichnis, in dem Ihr kompiliertes .class Dateien gespeichert sind.

Verwenden Sie den vollständigen Klassennamen einschließlich des Paketnamens (siehe NoClassDefFoundError "falscher Name" beim Ausführen eines Java-Programms über die Befehlszeile für den vollständigen Klassennamen oder das Verzeichnis, in dem der Auftrag ausgeführt werden soll) bei der Ausführung hadoop URLCat hdfs://localhost/user/tom/quangle.txt .

In meinem Fall URLCat.java war in com.tom.app Der Hadoop-Befehl lautete also hadoop com.tom.app.URLCat hdfs://localhost/user/tom/quangle.txt .

-2voto

Apurv Punkte 4299

Wir können auf HDFS über die hdfs api zugreifen. Nach meinem Verständnis kann man die hdfs api verwenden, um einen Hadoop-Cluster zu kontaktieren, auf dem das dfs läuft, und Daten von dort abzurufen.

Warum müssen wir den Befehl als hadoop jar URLCat.jar

warum nicht einfach java URLCat

Warum muss der Kunde unbedingt Hadoop installieren und dann den Hadoop-Cluster kontaktieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X