Come faccio a impostare i parametri Spark in Amazon EMR?

3 minuti di lettura
0

Desidero configurare i parametri di Apache Spark in Amazon EMR.

Breve descrizione

Esistono due metodi per configurare le applicazioni Spark:

  • Usa argomenti della riga di comando come il comando spark-submit per evitare la codifica fissa dei valori.
  • Configura i valori nel file spark-defaults.conf per rendere permanenti le modifiche.

Risoluzione

Configura i parametri Spark usando spark-submit

La shell (interprete di comandi) di Spark e il comando spark-submit supportano due modi per caricare le configurazioni in modo dinamico:

  • Usa le opzioni della riga di comando, come --num-executors.
  • Usa il contrassegno --conf.

Nota: esegui spark-submit--help per mostrare l'elenco completo delle opzioni.

Il comando spark-submit legge anche le opzioni di configurazione da spark-defaults.conf, nel file spark-defaults.conf, ogni riga è composta da una chiave e un valore separati da uno spazio bianco.

Per ulteriori informazioni, consulta Invio di candidature utente con spark-submit.

Per ulteriori informazioni sui parametri supportati da Spark, consulta Configurazione di Spark.

Di seguito sono elencate alcune delle opzioni di configurazione più comuni:

--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> \

Quando si utilizza spark-submit, l'applicazione JAR e qualsiasi JAR incluso nell'opzione --jars vengono trasferiti automaticamente al cluster. Gli URL forniti dopo --jars devono essere separati da virgole. L'elenco è incluso nei percorsi delle classi driver ed executor e i JAR e i file vengono copiati nella directory di lavoro per ogni SparkContext sui nodi executor. Tieni presente che l'espansione della directory non funziona con --jars.

Esempio

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

Puoi passare i parametri di memoria usando il contrassegno --conf come mostrato nell'esempio seguente:

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

Avvia spark-shell e pyspark shell usando parametri Spark personalizzati

Per avviare spark-shell o pyspark shell, esegui i seguenti comandi:

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'

Configurazione dei parametri Spark utilizzando spark-defaults.conf

Per rendere permanenti le modifiche alla configurazione, aggiungi la configurazione al file /etc/spark/conf/spark-defaults.conf. Quindi, riavvia Spark History Server. L'esempio seguente configura la memoria dell'executor e la memoria del driver in spark-defaults.conf. In questo esempio, ogni riga è composta da una chiave e un valore separati da uno spazio bianco.

Esempio

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

La seguente configurazione di esempio configura il driver Spark e la memoria dell'executor durante l'avvio del cluster:

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

Informazioni correlate

Best practice per gestire con esito la memoria delle applicazioni Apache Spark in Amazon EMR

Aggiungi una fase Spark

Modifica il tuo cluster in tempo reale con la riconfigurazione di Amazon EMR

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa