Wie stelle ich Spark-Parameter in Amazon EMR ein?

Lesedauer: 3 Minute
0

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr