2014-04-14 37 views
29

Ich bin neu zu funken. Jetzt kann ich Funke 0.9.1 auf Garn (2.0.0-cdh4.2.1) laufen lassen. Aber es gibt kein Protokoll nach der Ausführung.Wo sind Sparks auf YARN?

Der folgende Befehl wird zum Ausführen eines Funkenbeispiels verwendet. Protokolle werden jedoch nicht wie in einem normalen MapReduce-Job im Verlaufsserver gefunden.

SPARK_JAR=./assembly/target/scala-2.10/spark-assembly-0.9.1-hadoop2.0.0-cdh4.2.1.jar \ 
./bin/spark-class org.apache.spark.deploy.yarn.Client --jar ./spark-example-1.0.0.jar \ 
--class SimpleApp --args yarn-standalone --num-workers 3 --master-memory 1g \ 
--worker-memory 1g --worker-cores 1 

Wo finde ich die Protokolle/stderr/stdout?

Gibt es einen Ort, an dem die Konfiguration eingerichtet werden kann? Ich habe eine Ausgabe von Konsole finden sagen:

14/04/14 18:51:52 INFO-Client: Befehl zur ApplicationMaster: $ JAVA_HOME/bin/java -Server -Xmx640m -Djava.io.tmpdir = $ PWD/tmp org.apache.spark.deploy.yarn.ApplicationMaster - Klasse SimpleApp --jar./spark-beispiel-1.0.0.jar --args 'Garn-Standalone' --Worker-Speicher 1024 - Arbeiter-Kerne 1 --num-workers 3 1> <LOG_DIR>/stdout 2> < LOG_DIR>/stderr

In dieser Zeile Hinweis 1> $LOG_DIR/stdout 2> $LOG_DIR/stderr

Wo kann LOG_DIR eingestellt werden?

Antwort

18

Recht Artikel für diese Frage:

Running Spark on YARN - siehe Abschnitt "Debuggen von Anwendung". Anständige Erklärung mit allen erforderlichen Beispielen.

Die einzige Sache, die Sie folgen müssen, um korrekt funktionierenden Verlaufsserver für Spark zu erhalten, besteht darin, Ihren Spark-Kontext in Ihrer Anwendung zu schließen. Andernfalls sieht der Anwendungsverlaufsserver Sie nicht als COMPLETE und zeigt nichts an (obwohl die History-Benutzeroberfläche zwar zugänglich, aber nicht so sichtbar ist).

25

können Sie Zugriff auf Protokolle über den Befehl

yarn logs -applicationId <application ID> [OPTIONS]

allgemeine Optionen sind: -appOwner AppOwner (angenommen aktuellen Benutzer, wenn nicht angegeben) -containerId ContainerId (muss angegeben werden, wenn der Knoten Adresse wird angegeben) -nodeAddress NodeAddress im Format Knotenname: Port (muss angegeben werden, wenn die Container-ID angegeben ist)

Beispiele:

yarn logs -applicationId application_1414530900704_0003          
yarn logs -applicationId application_1414530900704_0003 myuserid 

// the user ids are different 
yarn logs -applicationId <appid> --appOwner <userid> 
+8

Das ist nur wahr, wenn 'yarn.log-aggregation-enable' in' garn-site.xml' 'wahr' ist und die Anwendung bereits beendet ist. – thSoft

+0

Wie bekomme ich applicationId auf Yarn innerhalb des Codes? – nish1013

+0

Dies funktioniert nicht, wenn der Cluster sicher ist. – Sohaib

11

Es meldet sich an:

/var/log/hadoop-yarn/containers/[application id]/[container id]/stdout 

Die Protokolle sind auf jedem Knoten, die Ihren Funkenjob auf läuft.

11

Keine der Antworten machen es kristallklar, wo man nach Baumstämmen suchen sollte (obwohl sie in Stücken), also stelle ich es zusammen.

Wenn die Protokollaggregation aktiviert ist (mit der Garn.log-Aggregationsaktivierungs-Garnstelle).xml) dann tun, um diese

yarn logs -applicationId <app ID> 

Wenn dies jedoch nicht auf dann eingeschaltet wird, muss man auf der Data-Knoten Maschine gehen und Blick auf

$HADOOP_HOME/logs/userlogs/application_1474886780074_XXXX/ 

application_1474886780074_XXXX ist die Anwendungs-ID

+1

Für diejenigen wie mich, die nicht wissen, wie man die Anwendung ID: Verwenden Sie 'Garn Anwendungen -list' –

+0

@ stefan.m, das wäre' Garnapplikation -list' und nicht 'Garnapplikation -list' – iruvar

+0

Und' Garnprotokolle -applicationId -log_files stdout' wird nur das stdout abrufen, wenn das alles dein Interesse ist :). – snark