Was steuert, wie viel Spark Cluster einer Anwendung gegeben wird?

8

Auf dieser Seite der Dokumentation Ссылка für die statische Partitionierung heißt es: "Mit diesem Ansatz Jede Anwendung erhält eine maximale Menge an Ressourcen, die sie verwenden kann. "

Ich habe mich nur gefragt, was sind diese maximalen Ressourcen? Ich habe den Speicher pro Executor-Einstellung gefunden (siehe unten in der dynamischen Partitionierung). Ich nehme an, dass er die Speicherressource begrenzt, die eine Anwendung bekommt. Aber was entscheidet, wie viele Executoren gestartet werden / wie viele Knoten aus dem Cluster verwendet werden, z. der gesamte Clusterspeicher und die Kerne, die "genommen" werden?

Auf einer anderen ähnlichen Anmerkung gibt es eine Möglichkeit, den Speicher zu ändern, der auf einer Job- oder Aufgabenebene angefordert wird?

    
James k 14.01.2015, 14:11
quelle

1 Antwort

11

Die Anzahl der Ressourcen hängt davon ab, welcher Cluster-Manager verwendet wird, da verschiedene Cluster-Manager unterschiedliche Zuordnungen bereitstellen.

ZB Im Standalone-Modus wird Spark versuchen, alle Knoten zu verwenden. spark.max.cores steuert, wie viele Kerne insgesamt der Job über Knoten hinweg übernimmt. Wenn nicht festgelegt, verwendet Spark spark.deploy.defaultCores . Die Dokumentation von spark.deploy.defaultCores verdeutlicht die weitere Verwendung:

  

Standardanzahl von Kernen für Anwendungen in Sparks Standalone   Modus, wenn sie nicht spark.cores.max setzen. Wenn nicht festgelegt, Anwendungen   Erhalten Sie immer alle verfügbaren Kerne, es sei denn sie config.cores.max konfigurieren   sich. Setzen Sie dies in einem freigegebenen Cluster niedriger, um Benutzer daran zu hindern   packen den gesamten Cluster standardmäßig.

Im grobkörnigen Modus von Mesos wird Spark alle verfügbaren Kerne standardmäßig zuweisen. Verwenden Sie spark.max.cores , um das pro Job zu begrenzen.

Im feinkörnigen Modus von Mesos wird Spark je nach Bedarf einen Kern pro Aufgabe zuweisen und anschließend freigeben. Dies gewährleistet eine faire Nutzung auf Kosten höherer Aufgabenzuweisungen.

In YARN, pro Dokumentation :

  

Die Option --num-executors für den Spark YARN-Client steuert, wie viele   Executors wird es auf dem Cluster zuweisen, während --Executor-Speicher und   --Executor-Cores steuern die Ressourcen pro Executor.

In Bezug auf den Speicher gibt es keine Möglichkeit, den Gesamtspeicher pro Job oder Task nur pro Executor mithilfe von spark.executor.memory festzulegen. Der Ihrem Job zugewiesene Speicher ist spark.executor.memory x #executors .

    
maasg 14.01.2015, 14:33
quelle

Tags und Links