2014-10-02 15 views
9

Wie könnte ich von Java (oder Scala) Code Anzahl der Executoren mit SparkConfig und SparkContext konfigurieren? Ich sehe ständig 2 Executoren. Sieht aus wie spark.default.parallelism funktioniert nicht und geht über etwas anderes.Wie wird die Anzahl der Spark-Executoren festgelegt?

Ich muss nur die Anzahl der Executoren auf Clustergröße einstellen, aber es gibt immer nur 2 davon. Ich kenne meine Clustergröße. Ich laufe auf YARN, wenn das wichtig ist.

Antwort

16

OK, hab es. Die Anzahl der Executoren ist nicht die Spark-Eigenschaft selbst, sondern der Treiber, der den Job auf YARN setzt. So wie ich SparkSubmit-Klasse als Treiber verwenden und es hat --num-executors Parameter, der genau das ist, was ich brauche.

UPDATE:

Für einige Jobs, die ich SparkSubmit Ansatz nicht mehr folgen. Ich kann das nicht primär für Anwendungen tun, bei denen der Spark-Job nur eine der Anwendungskomponenten ist (und sogar optional ist). Für diese Fälle verwende ich spark-defaults.conf an die Cluster-Konfiguration und spark.executor.instances Eigenschaft darin. Dieser Ansatz ist viel universeller, sodass ich die Ressourcen je nach Cluster (Workstation, Staging, Produktion) besser ausbalancieren kann.

+0

Die Eigenschaft spark.default.parallelism dient zum Reduzieren von Operationen wie join, reduceByKey, groupBy. – Rags

5

Sie können es auch programmgesteuert tun, indem Sie die Parameter "spark.executor.instances" und "spark.executor.cores" auf dem SparkConf-Objekt festlegen.

Beispiel:

SparkConf conf = new SparkConf() 
     // 4 workers 
     .set("spark.executor.instances", "4") 
     // 5 cores on each workers 
     .set("spark.executor.cores", "5"); 

Der zweite Parameter ist nur für Garn- und Standalone-Modus. Es ermöglicht einer Anwendung, mehrere Executoren für denselben Worker auszuführen, vorausgesetzt, es sind genügend Cores für diesen Worker vorhanden.

Verwandte Themen