2016-05-05 7 views
1

Ich habe zwei Spark-Streaming-Jobs, die ich ausführen möchte, sowie einige verfügbare Ressourcen für Batch-Jobs und andere Operationen.Spark on Mesos - Ausführen mehrerer Streaming-Jobs

Ich habe Spark Standalone-Cluster-Manager ausgewertet, aber ich erkannte, dass ich die Ressourcen für zwei Jobs reparieren müsste, die fast keine Rechenleistung zu Batch-Jobs verlassen würde.

Ich fing an, Mesos auszuwerten, weil es ein "feinkörniges" Ausführungsmodell hat, wo Ressourcen zwischen Spark-Anwendungen verschoben werden.

1) Bedeutet es, dass ein einzelner Kern zwischen 2 Streaming Anwendungen verschoben werden kann?

2) Obwohl ich Funken & Cassandra habe, muss ich, um Datenlokalität ausnutzen, dedizierten Kern auf jedem der Slave-Maschinen haben, um Mischen zu vermeiden?

3) Würden Sie Streaming-Jobs im "feinkörnigen" oder "grobkörnigen" Modus empfehlen. Ich weiß, dass die logische Antwort natürlich strukturiert ist (um die Latenz von Streaming-Apps zu minimieren), aber wenn Ressourcen im gesamten Cluster begrenzt sind (Cluster aus 3 Knoten, jeweils 4 Kerne - es gibt 2 Streaming-Anwendungen, die mehrmals ausgeführt werden) Batch-Jobs)

4) In Mesos, wenn ich Funke-Streaming-Job im Cluster-Modus laufen, wird es 1 Kern dauerhaft besetzen (wie Standalone-Cluster-Manager tut), oder wird dieser Kern Treiberprozess ausführen und manchmal als Executor?

Danke

Antwort

2

Feinkörnige Modus jetzt eigentlich veraltet. Sogar damit wird jeder Kern bis zur Fertigstellung der Aufgabe zugewiesen, aber in Spark Streaming ist jedes Verarbeitungsintervall ein neuer Job, so dass Aufgaben nur so lange dauern, wie es dauert, um die Daten jedes Intervalls zu verarbeiten. Hoffentlich ist diese Zeit kürzer als die Intervallzeit, oder Ihre Verarbeitung wird gesichert, so dass irgendwann nicht mehr genug Speicher zur Verfügung steht, um all diese RDDs zu speichern, die auf die Verarbeitung warten.

Beachten Sie außerdem, dass Sie für jeden Stream einen Core Reader benötigen. Jeder wird für das Leben des Stromes festgesteckt! Sie benötigen zusätzliche Kerne für den Fall, dass die Stream-Aufnahme neu gestartet werden muss. Spark wird versuchen, einen anderen Kern zu verwenden. Außerdem wird ein Kern von Ihrem Treiber gebunden, wenn er auch auf dem Cluster ausgeführt wird (im Gegensatz zu Ihrem Laptop oder etwas anderem).

Dennoch ist Mesos eine gute Wahl, da es die Aufgaben Knoten zuweisen wird, die Kapazität haben, sie auszuführen. Ihr Cluster klingt ziemlich klein für das, was Sie versuchen, es sei denn, die Datenströme sind selbst klein.

Wenn Sie den Datastax-Connector für Spark verwenden, wird versucht, die Eingabe-Partitionen für die Spark-Aufgaben lokal zu halten. Ich glaube jedoch, dass Connector davon ausgeht, dass es Spark selbst im Standalone-Modus verwaltet. Also, bevor Sie Mesos übernehmen, prüfen Sie, ob das wirklich alles ist, was Sie brauchen.

+0

Vielen Dank für Ihre Antwort. Ich habe 2 Kerne auf meiner virtuellen Maschine, und ich führe 1 Job aus, wo ich "funke.cores.max = 1" setze. So kann ich 2 Jobs parallel laufen (mit jeweils 1 Kern). Also was meinst du mit "Ich muss einen Kern für jeden Stream Reader haben"? –

+0

Soweit ich weiß, weist mesos keine Aufgaben zu, sondern [cpu shares] (https://books.google.de/books?).id = NLElCwAAQBAJ & pg = PT22 & LPG = PT22 & dq = mesos + cgroups + Isolation + cpu + share & source = bl & OTS = W5gfVk8WKk & sig = dovSio2jcjFCoNwch9wyEQ1G78s & hl = en & sa = X & ved = 0ahUKEwi5jpOh8MTMAhVoKcAKHeViBEcQ6AEIRjAF # v = OnePage & q = mesos% 20cgroups% 20isolation% 20cpu% 20 Aktien & f = false): * .. .Mesos-Slaves verwenden CPU-Shares, anstatt bestimmte CPUs * zu reservieren. Außerdem, siehe [diesen Link] (https://theza.ch/2014/09/17/cpu-resources-in-docker-mesos-and-marathon/) – Tobi

+0

Ich glaube, der Punkt über Mesos und Bruchteile eines Kerns ist Korrekt, eigentlich, aber Sie haben immer noch das Problem, dass jeder Spark-Streaming-Job mindestens zwei Kerne benötigt, einen pro Stream, der an den Reader angeheftet ist, und den anderen für die allgemeine Verarbeitung. Wenn Sie also zwei Streaming-Jobs ausführen, verbrauchen Sie beide Kerne für die Leser allein. –

Verwandte Themen