2015-04-20 14 views
5

Mein Programm, das ich mehrmals auf verschiedenen Clustern ausgeführt habe, stoppt plötzlich. Das Protokoll:Apache Spark auf EC2 "Killed"

15/04/20 19:19:59 INFO scheduler.TaskSetManager: Finished task 12.0 in stage 15.0 (TID 374) in 61 ms on ip-XXX.compute.internal (16/24) 
15/04/20 19:19:59 INFO storage.BlockManagerInfo: Added rdd_44_14 in memory on ip-XXX.compute.internal:37999 (size: 16.0 B, free: 260.6 MB) 
Killed 

Was bedeutet "Getötet" und warum tritt es auf? Es gibt keine anderen Fehler.

Antwort

1

"Getötet" bedeutet normalerweise, dass das Betriebssystem den Prozess durch Senden eines SIGKILL-Signals beendet hat. Dies ist ein nicht blockierbares Signal, das einen Prozess sofort beendet. Es wird oft als OOM-Prozesskiller (out-of-memory) verwendet. Wenn das Betriebssystem entscheidet, dass Speicherressourcen gefährlich niedrig werden, kann es einen Prozess zum Töten auswählen, um Speicher freizugeben.

Ohne weitere Informationen ist es unmöglich festzustellen, ob Ihr Prozess aufgrund von Speicherproblemen oder aus einem anderen Grund beendet wurde. Die Art von Informationen, die Sie möglicherweise zur Verfügung stellen können, um zu diagnostizieren, was passiert, ist: Wie lange lief der Prozess, bevor er getötet wurde? Können Sie eine ausführlichere Debug-Ausgabe des Prozesses aktivieren und bereitstellen? Ist die Prozessbeendigung mit einem bestimmten Kommunikations- oder Verarbeitungsmuster verbunden?

+0

Der Prozess wurde mehrere Stunden lang ausgeführt. Jetzt stoppt es jedoch nach vielleicht 20 Sekunden. Es besagt, dass pro Knoten ungefähr 255 MB Speicher frei sind. Wenn ich einen neuen Cluster starte, funktioniert es wieder gut. – monster

0

vielleicht das Problem vm

  1. gewährleisten Sie haben eine Swap-Partition.
  2. sicherstellen vm.swappiness ist nicht Null.