Nach offizieller Spark-Dokumentation (http://spark.apache.org/docs/latest/job-scheduling.html#configuration-and-setup) Funken, wenn sie mit GARN „spark.dynamicAllocation“ Option verwenden, müssen Sie:EMR-Konfiguration für spark.dynamicAllocation entspricht nicht offizielle Dokumentation
Im Garn- site.xml auf jedem Knoten, fügen spark_shuffle to-Dienste yarn.nodemanager.aux ...
Satz yarn.nodemanager.aux-services.spark_shuffle.class
org.apache.spark.network.yarn.YarnShuffleService
Trotzdem AWS EMR Dokumentation sagt, dass
"..Spark Shuffle Service wird automatisch von EMR konfiguriert. (http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-spark-configure.html)
Ich habe bemerkt, dass "yarn.nodemanager.aux-Dienste" in "Garn-site" auf EMR Knoten ist eingestellt auf:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle,</value>
</property>
und kein Abschnitt für " garn.nodemanager.aux-services.spark_shuffle.class "wird überhaupt hinzugefügt.
Ich bin ein bisschen neu Spark/Hadoop Ökosystem, so erhöht dies ein paar Fragen in meinem Kopf:
- Warum ich noch in der Lage bin, um erfolgreich zu laufen Spark-Jobs mit „spark.dynamicAllocation“ Set zu "wahr", während die grundlegenden Konfigurationsanforderungen nicht erfüllt sind? Heißt das, dass Spark irgendwie "mapreduce_shuffle" als Fallback verwenden könnte?
- Wenn die obige Annahme wahr ist (Spark fällt zurück auf "mapreduce_shuffle"), gibt es mögliche Auswirkungen (andere?) Auf die Verwendung falscher Shuffle-Klassen ("mapreduce_shuffle" entspricht "org.apache.hadoop.map.ShuffleHandler") Klasse)?
Hinweis: Ich verwende emr-ami v 4.6.0
Vielen Dank für eine ausführliche Antwort! – Val
Brilliante Antwort mit detaillierter Erklärung. –