Ich finde eine gute Antwort auf hortonworks Website.
Im Gegensatz zur landläufigen Meinung Spark ist nicht im Speicher nur
a) Einfach kein Shuffle lesen (nicht beitritt, ...)
Für die Anfangs liest Funken wie MapReduce liest die Daten in ein Strom und> verarbeitet es, wie es kommt. I.e. es sei denn, es gibt einen Grund, warum Funke die vollen RDDs nicht im Speicher findet (Sie können ihm aber sagen, dass er es tun soll, wenn Sie einen kleinen Dataset zwischenspeichern wollen). Eine RDD ist resilierfähig, weil spark es neu erstellen kann (lesen Sie einen Block von hdfs) zum Beispiel) nicht weil es in mem an verschiedenen Orten gespeichert ist. (Das kann aber auch getan werden.)
Wenn Sie also die meisten Ihrer Daten herausfiltern oder eine effiziente Aggregation durchführen, die auf der Kartenseite aggregiert, haben Sie nie die volle Tabelle im Speicher.
b) Shuffle
Diese sehr ähnlich gemacht wird MapReduce, da sie die Karte Ausgänge auf Disc schreibt und liest sie mit den Reduzierungen durch http. Allerdings verwendet spark eine aggressive Dateisystem-Pufferstrategie für das Linux-Dateisystem. Wenn das Betriebssystem über Speicher verfügt, werden die Daten nicht wirklich auf den physischen Datenträger geschrieben.
c) Nach Shuffle
RDDs nach Shuffle wird in der Regel durch den Motor zwischengespeichert (sonst ein ausgefallener Knoten oder RDD würde einen vollständigen Wieder Lauf des Auftrags erforderlich ist) jedoch als abdelkrim erwähnt Funken diese Scheibe verschütten können, wenn Sie überstimmen Sie das.
d) Funken Streaming
Dies ist ein bisschen anders. Spark-Streaming erwartet, dass alle Daten in den Speicher passen, wenn Sie die Einstellungen nicht überschreiben.
Wünschen, dass es etwas Nützliches gibt.
Wenn Sie Store auf der Festplatte sagen, ist es Arbeitsmaschine Festplatte oder hdfs? – Rahul
Ich denke, es ist Arbeitsmaschine Festplatte, wie mapreduce. – neilron