Wie stelle ich Spark-Parameter in Amazon EMR ein?
Ich möchte die Apache-Spark-Parameter in Amazon EMR konfigurieren.
Kurzbeschreibung
Es gibt zwei Methoden zur Konfiguration von Spark-Anwendungen:
- Verwenden Sie Befehlszeilenargumente wie den Befehl spark-submit, um Hardcoding-Werte zu vermeiden.
- Konfigurieren Sie die Werte in der Datei spark-defaults.conf, um die Änderungen dauerhaft zu machen.
Lösung
Konfigurieren von Spark-Parametern mit spark-submit
Die Spark-Shell und der Befehl spark-submit unterstützen zwei Möglichkeiten, Konfigurationen dynamisch zu laden:
- Verwenden Sie Befehlszeilenoptionen wie --num-executors.
- Benutzen Sie das Flag --conf.
Hinweis: Führen Sie spark-submit--help aus, um die vollständige Optionsliste anzuzeigen.
Der Befehl spark-submit liest auch die Konfigurationsoptionen aus spark-defaults.conf. In der Datei spark-defaults.conf besteht jede Zeile aus einem Schlüssel und einem Wert, getrennt durch Leerzeichen.
Weitere Informationen finden Sie unter Benutzeranwendungen mit spark-submit einreichen.
Weitere Informationen zu den von Spark unterstützten Parametern finden Sie unter Spark-Konfiguration.
Im Folgenden sind einige der gängigsten Konfigurationsoptionen aufgeführt:
--class <main-class> \ --master <master-url> --deploy-mode <deploy-mode> --conf <key>=<value> --num-executors <value> \ --executor-memory <value>G \ --driver-memory <value>G \ --executor-cores <number of cores> \ --driver-cores <number of cores> \ --jars <Comma-separated list of jars> \ --packages <Comma-separated list of Maven coordinates> \ --py-files < Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps> \
Bei Verwendung von spark-submit werden das Anwendungs-JAR und alle JAR-Dateien, die in der Option --jars enthalten sind, automatisch in den Cluster übertragen. URLs, die nach --jars angegeben werden, müssen durch Kommas getrennt werden. Die Liste ist in den Treibern- und Ausführer-Klassenpfaden enthalten, und die JARs und Dateien werden für jeden SparkContext auf den Ausführer-Knoten in das Arbeitsverzeichnis kopiert. Beachten Sie, dass die Verzeichniserweiterung bei --jars nicht funktioniert.
Beispiel
spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --conf spark.dynamicAllocation.enabled=false --master yarn --num-executors 4 --driver-memory 4G --executor-memory 4G --executor-cores 1 /usr/lib/spark/examples/jars/spark-examples.jar 10
Sie können die Speicherparameter mit dem Flag --conf übergeben, wie im folgenden Beispiel gezeigt:
spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --conf spark.dynamicAllocation.enabled=false --master yarn >--conf spark.driver.memory=1G --conf spark.executor.memory=1G /usr/lib/spark/examples/jars/spark-examples.jar 10
Starten Sie Spark-Shell und Pyspark-Shell mit benutzerdefinierten Spark-Parametern
Führen Sie die folgenden Befehle aus, um Spark-Shell oder Pyspark-Shell zu starten:
spark-shell
spark-shell --conf spark.driver.maxResultSize=1G --conf spark.driver.memory=1G --deploy-mode client --conf spark.executor.memory=1G --conf spark.executor.heartbeatInterval=10000000s --conf spark.network.timeout=10000001s --executor-cores 1 --num-executors 5 --packages org.apache.spark:spark-avro_2.12:3.1.2 --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'
pyspark-shell
pyspark --conf spark.driver.maxResultSize=1G --conf spark.driver.memory=1G --deploy-mode client --conf spark.executor.memory=1G --conf spark.executor.heartbeatInterval=10000000s --conf spark.network.timeout=10000001s --executor-cores 1 --num-executors 5 --packages org.apache.spark:spark-avro_2.12:3.1.2 --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer'
Konfigurieren von Spark-Parametern mit spark-defaults.conf
Um die Konfigurationsänderungen dauerhaft zu machen, fügen Sie die Konfiguration an die Datei /etc/spark/conf/spark-defaults.conf an. Starten Sie dann den Spark History Server neu. Das folgende Beispiel konfiguriert den Ausführer-Speicher und den Treiberspeicher in spark-defaults.conf. In diesem Beispiel besteht jede Zeile aus einem Schlüssel und einem Wert, getrennt durch Leerzeichen.
Beispiel
spark.executor.memory 9486M spark.driver.memory 9486M
Die folgende Beispielkonfiguration konfiguriert den Spark-Treiber und den Ausführer-Speicher beim Clusterstart:
{ "Classification": "spark-defaults", "Properties": { "spark.executor.memory": "9486M", "spark.driver.memory": "9486M" } } ]
Ähnliche Informationen
Bewährte Methoden für die erfolgreiche Speicherverwaltung Apache-Spark-Anwendungen in Amazon EMR
Einen Spark-Schritt hinzufügen
Ändern Ihres Clusters im Handumdrehen mit der Amazon-EMR-Rekonfiguration

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 6 Monaten
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 5 Monaten