2016-05-03 5 views
2

Ich habe eine einfache Spark-App, die einige Daten liest, einige Metriken berechnet und speichert dann das Ergebnis (Eingabe und Ausgabe sind Cassandra-Tabelle). Dieser Codeabschnitt wird in regelmäßigen Intervallen (d. H. Jede Minute) ausgeführt.Spark Master füllen temporäres Verzeichnis

Ich habe eine Cassandra/Spark (Spark 1.6.1) und nach ein paar Minuten ist mein temporäres Verzeichnis auf dem Master-Knoten des Spark-Clusters gefüllt, und der Master weigert sich, weitere Jobs auszuführen. Ich übermittle den Job mit der Funkenabgabe.

Was fehlt mir? Wie stelle ich sicher, dass die Master-Knoten den temporären Ordner entfernen?

Antwort

0

Spark verwendet dieses Verzeichnis als Arbeitsspeicher und gibt die Ausgabedateien für die temporäre Zuordnung dort aus. Dies kann geändert werden. Sie sollten einen Blick in spark.local.dir werfen.

+0

Ich habe kein Problem mit den Arbeitern, es ist der Master-Knoten, der die Festplatte füllt. Jede Iteration meiner App erstellt einen neuen temporären Ordner, der das JAR selbst enthält, und sie werden nicht gelöscht, wenn der Job beendet ist. – davideanastasia

+0

Das ist richtig, normalerweise, wenn der Funke-Submit den Job abgeschlossen hat, reinigt er temporäre Dateien. Welche Version von Spark verwenden Sie? – tesnik03

0

Jedes Mal, wenn Sie Ihre App senden, wird das Jar an alle Worker in einem neuen App-Verzeichnis kopiert. Wie groß ist dein Glas? Bauen Sie ein Fettglas, einschließlich des Datenstax-Treiberglases? In diesem Fall würde ich vermuten, Ihre App wäre ein paar MB. Wenn Sie es jede Minute ausführen, füllt sich Ihre Festplatte sehr schnell.

Funke hat zwei Parameter, die Reinigung der App-Verzeichnisse zu steuern: spark.worker.cleanup.interval, die steuern, wie oft Funken spark.worker.cleanupDataTtl reinigen wird, die steuern, wie lange eine App Verzeichnis sollte vor der Reinigung bleiben.

Beide Parameter sind in Sekunden angegeben.

Hoffe diese Hilfe!

Verwandte Themen