Spark Kill Laufende Anwendung

101

Ich habe eine laufende Spark-Anwendung, in der alle Kerne belegt sind, in denen meinen anderen Anwendungen keine Ressource zugewiesen wird.

Ich habe einige schnelle Nachforschungen angestellt und die Leute schlugen vor, YARN kill oder / bin / spark-class zu verwenden, um den Befehl zu beenden. Ich verwende jedoch die CDH-Version und / bin / spark-class existiert überhaupt nicht. Die YARN-Kill-Anwendung funktioniert auch nicht.

Geben Sie hier die Bildbeschreibung ein

Kann jemand mit mir damit?

B.Mr.W.
quelle
1
Wenn Sie sich in einer Testumgebung befinden: ps aux | grep spark -> hol den Funken und töte ihn von der Kommandozeile
eliasah
@eliasah "test env", für mich ist der Job bereits verteilt ..
B.Mr.W.
1
du willst einen Job in der Produktion töten ????
Eliasah
1
@eliasah Ja ... ein Job in der Produktion wurde wegen des Ausfalls in einem Host hängen gelassen.
B.Mr.W.

Antworten:

213
  • Kopieren Sie die Anwendungs-ID aus dem Spark-Scheduler, z. B. application_1428487296152_25597
  • Stellen Sie eine Verbindung zu dem Server her, auf dem der Job gestartet wurde
  • yarn application -kill application_1428487296152_25597
Gérald Reinhart
quelle
1
Wie kommt man zum Funkenplaner?
Makansij
Ist es das gleiche wie das web UI?
Makansij
@Hunle Sie können die ID von der Spark History UIBenutzeroberfläche von YARN RUNNINGApps ( Garn-Host: 8088 / Cluster / Apps / RUNNING ) oder von der Spark Job Web UIURL ( Garn-Host: 8088 / Proxy / Anwendung_ <Zeitstempel> _ <ID> )
abrufen
2
kann man mehrere gleichzeitig töten: garnapplikation -kill application_1428487296152_25597 application_1428487296152_25598 ... ??
user3505444
6

Es kann zeitaufwändig sein, alle Anwendungs-IDs von YARN abzurufen und einzeln zu beenden. Sie können eine Bash for-Schleife verwenden, um diese sich wiederholende Aufgabe schnell und effizienter auszuführen, wie unten gezeigt:

Beenden Sie alle Anwendungen auf YARN, die sich im Status AKZEPTIERT befinden:

for x in $(yarn application -list -appStates ACCEPTED | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

Beenden Sie alle Anwendungen auf YARN, die sich im Status RUNNING befinden:

for x in $(yarn application -list -appStates RUNNING | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

Anil kumar
quelle
1

Dies ist möglicherweise keine ethische und bevorzugte Lösung, hilft jedoch in Umgebungen, in denen Sie nicht auf die Konsole zugreifen können, um den Auftrag mit dem Befehl garnapplikation abzubrechen.

Schritte sind

Gehen Sie zur Anwendungs-Masterseite des Spark-Jobs. Klicken Sie auf den Bereich Jobs. Klicken Sie auf die aktive Phase des aktiven Jobs. Sie sehen die Schaltfläche "Töten" direkt neben der aktiven Stufe.

Dies funktioniert, wenn die nachfolgenden Phasen von der aktuell ausgeführten Phase abhängen. Der Job wird jedoch als "Vom Benutzer getötet" markiert.

Sachin Gaikwad
quelle