Direkt zum Inhalt

Wie lege ich Spark-Parameter in Amazon EMR fest?

Lesedauer: 3 Minute
0

Ich möchte Apache-Spark-Parameter in Amazon EMR konfigurieren.

Kurzbeschreibung

Verwende Befehlszeilenargumente wie spark-submit, um Spark-Anwendungen zu konfigurieren. Oder konfiguriere die Werte in der Datei spark-defaults.conf, um die Änderungen dauerhaft zu machen.

Lösung

Verwenden von spark-submit, um Spark-Parameter zu konfigurieren

Verwende eine der folgenden Optionen, um Konfigurationen dynamisch über die Spark-Shell und mit dem Befehl spark-submit zu laden:

  • Befehlszeilenoptionen wie --num-executors.
  • Das --conf-Flag.

Hinweis: Um die vollständige Optionsliste anzuzeigen, führe spark-submit--help aus.

Der Befehl spark-submit liest die Konfigurationsoptionen aus spark-defaults.conf.

In der Datei spark-defaults.conf enthält jede Zeile einen Schlüssel und einen Wert, getrennt durch Leerzeichen.

Weitere Informationen findest du unter Absenden von Benutzeranwendungen mit spark-submit. Weitere Informationen zu den von Spark unterstützten Parametern findest du unter Spark configuration (Spark-Konfiguration) auf der Apache Spark-Website.

Beispiele für Konfigurationsoptionen:

--class  \
--master  \
--deploy-mode  \
--conf = \
--num-executors  \
--executor-memory G \
--driver-memory G \
--executor-cores  \
--driver-cores  \
--jars  \
--packages  \
--py-files < Comma-separated list of .zip, .egg, or .py files to place on the PYTHONPATH for Python apps> \

Der Befehl spark-submit überträgt automatisch die Anwendungs-JAR und alle JARs, die in der Option --jars enthalten sind, an den Cluster. Du musst die nach --jars angegebenen URLs durch Kommas trennen. spark-submit nimmt die Liste in die Treiber- und Executor-Klassenpfade auf und kopiert die JARs und Dateien für jeden SparkContext auf den Executor-Knoten in das Arbeitsverzeichnis.

Hinweis: Die Verzeichniserweiterung funktioniert nicht mit --jars.

Beispiel für einen spark-submit-Befehl:

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

Verwende das Flag --conf, um die Speicherparameter weiterzugeben:

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

Verwenden von Spark-Parametern, um Spark-Shell und Pyspark-Shell zu starten

Führe 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'

Verwenden von spark-defaults.conf, um Spark-Parameter zu konfigurieren

Um die Konfigurationsänderungen dauerhaft zu machen, hänge die Konfiguration an die Datei /etc/spark/conf/spark-defaults.conf an. Starte dann den Spark-Verlaufsserver neu. Das folgende Beispiel konfiguriert den Executor-Speicher und den Treiberspeicher in spark-defaults.conf. In diesem Beispiel besteht jede Zeile aus einem Schlüssel und einem Wert, die durch Leerzeichen getrennt sind.

Beispiel

spark.executor.memory 9486M
spark.driver.memory 9486M

Die folgende Beispielkonfiguration konfiguriert den Spark-Treiber und den Executor-Speicher während des Clusterstarts:

[
    {
        "Classification": "spark-defaults",
        "Properties": {
            "spark.executor.memory": "9486M",
            "spark.driver.memory": "9486M"
        }
    }
]

Hinweis: Auf Amazon EMR hat die spark.yarn.executor.memoryOverhead-Konfiguration einen Standardwert von 18,75 %, der standardmäßige Spark-Standardwert ist jedoch 0,1875 %. Sobald du den Spark-Auftrag konfiguriert hast, überwache dessen Leistung und analysiere die Ressourcenauslastung, um Erkenntnisse zu gewinnen und die Auftragsparameter weiter zu optimieren.

Ähnliche Informationen

Offene Datenanalytik von AWS

Einen Spark-Schritt hinzufügen

Den Cluster im Handumdrehen mit der Amazon-EMR-Neukonfiguration ändern

AWS OFFICIALAktualisiert vor 8 Monaten