0

Ich möchte die dynamische Zuordnung Feature von Spark für meine eingereichten Anwendungen verwenden, aber die Anwendungen nicht skalieren.Spark dynamische Zuordnung funktioniert nicht

My Cluster besteht aus 3 Knoten und jede hat:

  • 4 Kerne
  • 8 GB RAM
  • spark: 1.6
  • YARN + MapReduce2: 2,7

I Verwenden Sie hdp 2.4 und richten Sie alle erforderlichen Eigenschaften für die dynamische Zuweisung wie folgt ein (sie wurden in hdp b vorkonfiguriert) ut ich überprüfen sie mit dem docs):

  • spark.dynamicAllocation.enabled=true
  • spark.dynamicAllocation.initialExecutors=5 - spark.dynamicAllocation.maxExecutors=10
  • spark.dynamicAllocation.minExecutors=1

  • spark.shuffle.service.enabled=true

  • yarn.nodemanager.aux-services=mapreduce_shuffle,spark_shuffle
  • yarn.nodemanager.aux-services.spark_shuffle.class=org.apache.spark.network.yarn.YarnShuffleService

Ich benutze das Garn ResourceManager-UI, um die verwendeten Kerne zu suchen.

Wenn ich das folgende PI-Beispiel einreiche, werden nur 3 Container mit je 1 Kern verwendet. Dort waren genügend Ressourcen vorhanden, aber es wurden keine Ressourcen mehr verwendet.

Wenn ich das PI-Beispiel mit einer definierten Anzahl von Executoren übertrage, kann es viel mehr Ressourcen zugewiesen werden. In diesem Beispiel wird statisch 8 Container mit jeweils 1 Kern zugeordnet. (1 Fahrer + 7 Testamentsvollstrecker)

./bin/spark-submit --class org.apache.spark.examples.SparkPi \ 
--master yarn-cluster \ 
--num-executors 7 \ 
--driver-memory 512m \ 
--executor-memory 512m \ 
lib/spark-examples*.jar 100000 

Was habe ich falsch, dass Funke nicht automatisch die maximal zur Verfügung stehenden Ressourcen zuteilen?

Danke für Sie :)

+0

Spark wird nicht sofort Speicher geben. Wenn es erforderlich ist, wird nur der Funke Speicher reservieren. –

Antwort

0

sollte man nicht --num-executor-Parameter angeben, wenn er es in den dynamischen Zuweisungsmodus ausführen möchte.