2016-04-23 19 views
4

Ich habe Prototyping Spark-Streaming 1.6.1 mit Kafka-Empfänger auf einem Mesos 0.28 Cluster mit groben genarbten Modus.Spark-Streaming durch Kafka-Empfänger auf Grobkorn Mesos-Cluster

Ich habe 6 Mesos Sklaven jeweils mit 64GB RAM and 16 Cores.
Mein Kafka-Thema hat 3 Partitionen.
Mein Ziel ist es, 3 Executoren zu starten (jeder auf einem anderen Mesos-Slave), wobei jeder Executor einen Kafka-Empfänger hat, der von einer Kafka-Partition liest.

Wenn ich meine Spark-Anwendung mit spark.cores.max auf 24 und spark.executor.memory auf 8GB gesetzt starte, bekomme ich zwei Executoren - mit 16 Kernen auf einem Slave und mit 8 Kernen auf einem anderen Slave.

Ich suche 3 Executoren mit je 8 Kernen auf drei verschiedenen Slaves. Ist das mit Mesos durch Ressourcenreservierung/-isolierung, Constraints etc. möglich?

Die einzige Problemumgehung, die jetzt für mich funktioniert, besteht darin, jeden Mesos-Slave-Knoten so zu verkleinern, dass er nur maximal 8 Kerne hat. Ich möchte Mesos nicht im feinkörnigen Modus aus Leistungsgründen verwenden, und die Unterstützung wird bald verschwinden.

Antwort

4

Mesosphere hat den folgenden Patch zu Spark beigetragen: https://github.com/apache/spark/commit/80cb963ad963e26c3a7f8388bdd4ffd5e99aad1a. Diese Verbesserung wird in Spark 2.0 landen. Mesosphere hat diese und andere Verbesserungen zu Spark 1.6.1 zurückportiert und in DC/OS verfügbar gemacht (http://dcos.io).

Dieser Patch enthält eine neue Konfigurationsvariable "spark.executor.cores" im Kurs-Verstärkungsmodus. Wenn die config-Variable "spark.executor.cores" festgelegt ist, werden Executoren mit der angegebenen Anzahl an Kernen skaliert.

Wenn ein Angebot mit einem Vielfachen von (spark.executor.memory, spark.executor.cores) ankommt, werden mehrere Executoren für dieses Angebot gestartet. Dies bedeutet, dass es mehrere, aber separate Spark-Executoren geben könnte, die auf demselben Mesos-Agentenknoten laufen.

Es gibt (derzeit) keine Möglichkeit, die Executoren auf N Mesos-Agenten zu verteilen. Wir haben kurz über die Möglichkeit gesprochen, Spark-Executoren auf N Mesos-Agenten zu verteilen, kamen aber zu dem Schluss, dass es im Hinblick auf eine verbesserte Verfügbarkeit nicht viel zu kaufen gibt.

Können Sie uns helfen, Ihre Motivation zur Verbreitung von Spark-Executoren über 3 Mesos-Agenten zu verstehen? Wahrscheinlich haben wir nicht alle möglichen Anwendungsfälle und Vorteile berücksichtigt.

Keith

+0

meine Motivation für die Verbreitung von N Testamentsvollstrecker über N Mesos Sklaven -> so dass kafka Empfänger wird über die Arbeiter verteilt beherbergt so gleichmäßig wie möglich von den kafka Partitionen über separate Netzwerkschnittstellen – rohit

+0

@rohit Ich denke, zu lesen, dass Sie wollen das: https://issues.apache.org/jira/browse/SPARK-4940 Es wurde ausführlich diskutiert und es gab sogar eine PR dafür, aber es wurde nicht akzeptiert mit der Begründung, dass es anders wäre was YARN anbieten konnte. Ich kenne den Status heute nicht. – maasg

Verwandte Themen