Frage

Ich versuche, die kürzesten Wege aus dem Girap-Inkubator auszuführen ( https://cwiki.apache.org/confluence/display/giraph/sShortest+Paths+Example ). Anstatt das Beispiel jedoch von den Giraph - * - Abhängigkeiten.jar zu erstellen, habe ich mein eigenes Joachtgefäß erstellt. Wenn ich eine einzelne Jobdatei erstellt habe, wie im Beispiel, wurde ich

generasacodicetagpre.

Dann habe ich die inneren Klassen (SimpleShortesteTeTeTexInputFormat und SimpleSeTestEdpathSexoutputFormat) umgezogen, um Dateien zu trennenden und nur in dem Fall umbenannt (SimpleSeTestestPathSeTexinputformat_v2, SimpleShortestExInPut_V2, SimpleShortestPathSeXOutputFormat_v2); Die Klassen sind nicht mehr statisch mehr. Dies hat die Probleme der Klasse nicht gelöst, die nicht für die SimpleshortestPathsVerCremexinputformat_v2 gefunden wurden. Ich bekomme jedoch immer noch den gleichen Fehler für den SimpleShortestElpathSeTexoutputformat_v2. Unten ist meine Stapelspur.

generasacodicetagpre.

Ich habe mein Joachtgefäß inspiziert und alle Klassen sind da. Außerdem benutze ich Hadoop 0.20.203 in einem Pseudo-verteilten Modus. Die Art, wie ich meinen Job starte, ist unten dargestellt.

generasacodicetagpre.

Ich habe auch Hadoop_Classpath für die Giraph - * - Abhängigkeiten.jar definiert. Ich kann das PageRankbenchennark-Beispiel ohne ein Problem (direkt von den Giraph - * - Abhängigkeiten.jar) ausführen, und das Kurzschluss-Weg-Beispiel funktioniert auch (auch direkt von den Giraph - * - Abhängigkeiten.jar). Andere Hadoop-Jobs funktionieren ohne ein Problem (irgendwo habe ich gelesen, um zu testen, ob mein "Cluster" richtig funktioniert). Ist jemand auf ein ähnliches Problem gestoßen? Jede Hilfe wird geschätzt.


Lösung (tut mir leid, es so zu posten, aber ich kann meine eigene Frage für ein paar Stunden nicht beantworten)

Um dieses Problem zu lösen, musste ich mein Job-Jar dem -libjars hinzufügen (keine Änderungen an Hadoop_ClassPath, wo erstellt). Der Befehl zum Starten des Jobs sieht jetzt so aus.

generasacodicetagpre.

Liste der Gläser muss durch Kommas getrennt sein. Dies hat jedoch mein Problem gelöst. Ich bin immer noch neugierig, warum ich mein Job-Jar als "ClassPath-Parameter" bestehen muss? Kann mir jemand erklären, was ist der rationale dahinter? Wie ich es seltsam fand (um es am wenigsten zu sagen), um mein Job-Glas aufzurufen und dann erneut als "Klassenpfad" -Ger-Glas weiterzuleiten. Ich bin wirklich neugierig auf die Erklärung.

War es hilfreich?

Lösung

Ich habe ein alternatives programmatisches Lösung für das Problem gefunden. Wir müssen das RUN () -Methode auf folgende Weise ändern -

generasacodicetagpre.

setjarbyclass () sucht HADOOOOP nach den fehlenden Klassen in demselben JAR, das die von GetClass () zurückgegebene Klasse enthält, und wir müssen den Job-JAR-Namen nicht separat zur Option -libjars hinzufügen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top