Salta al contenuto

Come posso impostare i parametri di Spark in Amazon EMR?

4 minuti di lettura
0

Desidero configurare i parametri di Apache Spark in Amazon EMR.

Breve descrizione

Per configurare le applicazioni Spark, utilizza argomenti della riga di comando come spark-submit. Oppure configura i valori nel file spark-defaults.conf per rendere permanenti le modifiche.

Risoluzione

Utilizza spark-submit per configurare i parametri di Spark

Per caricare le configurazioni in modo dinamico tramite la shell Spark e il comando spark-submit, utilizza una delle seguenti opzioni:

  • Opzioni della riga di comando, come --num-executors.
  • Il flag --conf.

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

Il comando spark-submit legge le opzioni di configurazione da spark-defaults.conf.

Nel file spark-defaults.conf, ogni riga include una chiave e un valore separati da uno spazio bianco.

Per ulteriori informazioni, consulta Submitting User Applications with spark-submit (Invio di applicazioni dell'utente con spark-submit). Per ulteriori informazioni sui parametri supportati da Spark, consulta Spark configuration (Configurazione di Spark) sul sito web Apache Spark.

Esempi di opzioni di configurazione:

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

Il comando spark-submit trasferisce automaticamente il JAR dell'applicazione e tutti i JAR inclusi nell'opzione --jars al cluster. Devi separare gli URL forniti dopo --jars con virgole. spark-submit include l'elenco nei percorsi delle classi del driver e dell'esecutore e copia i JAR e i file nella directory di lavoro per ogni SparkContext nei nodi dell'esecutore.

Nota: l'espansione della directory non funziona con --jars.

Esempio di comando spark-submit:

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

Per passare i parametri di memoria, utilizza il flag --conf:

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

Utilizza i parametri di Spark personalizzati per avviare spark-shell e pyspark shell

Per avviare spark-shell o pyspark shell, esegui questi 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'

Utilizza spark-defaults.conf per configurare i parametri di Spark

Per rendere permanenti le modifiche alla configurazione, aggiungi la configurazione al file /etc/spark/conf/spark-defaults.conf. Quindi riavvia il server della cronologia Spark. L'esempio seguente configura la memoria dell'esecutore 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

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

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

Nota: in Amazon EMR la configurazione spark.yarn.executor.memoryOverhead ha un valore predefinito del 18,75%, mentre il valore predefinito standard di Spark è 0,1875%. Una volta configurato il processo Spark, monitorane le prestazioni e analizza l'utilizzo delle risorse per raccogliere informazioni e ottimizzare ulteriormente i parametri del processo.

Informazioni correlate

AWS open data analytics (Analisi dei dati aperti di AWS)

Aggiungi una fase Spark

Modify your cluster on the fly with Amazon EMR reconfiguration (Come modificare velocemente un cluster con la riconfigurazione di Amazon EMR)

AWS UFFICIALEAggiornata un mese fa