Ir para o conteúdo

Como defino os parâmetros do Spark no Amazon EMR?

4 minuto de leitura
0

Quero configurar os parâmetros do Apache Spark no Amazon EMR.

Breve descrição

Para configurar aplicações Spark, use argumentos de linha de comandos, como spark-submit. Ou configure os valores no arquivo spark-defaults.conf para tornar as alterações permanentes.

Resolução

Usar spark-submit para configurar os parâmetros do Spark

Para carregar configurações dinamicamente por meio do shell do Spark e do comando spark-submit, use uma das seguintes opções:

  • Opções de linha de comandos, como --num-executors.
  • O sinalizador --conf.

Observação: para ver a lista completa de opções, execute spark-submit--help.

O comando spark-submit lê as opções de configuração de spark-defaults.conf.

No arquivo spark-defaults.conf, cada linha inclui uma chave e um valor separados por um espaço em branco.

Para mais informações, consulte Submitting user applications with spark-submit (Envio de aplicações de usuário com spark-submit). Para mais informações sobre os parâmetros suportados pelo Spark, consulte Spark configuration (Configuração do Spark) no site do Apache Spark.

Exemplo de opções de configuração:

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

O comando spark-submit transfere automaticamente o JAR da aplicação e todos os JARs incluídos na opção --jars para o cluster. Você deve separar os URLs fornecidos após --jars por vírgulas. O spark-submit inclui a lista nos caminhos das classes do driver e do executor e copia os JARs e os arquivos para o diretório de trabalho de cada SparkContext nos nós do executor.

Observação: a expansão do diretório não funciona com --jars.

Exemplo de 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

Para passar os parâmetros de memória, use o sinalizador --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

Usar parâmetros personalizados do Spark para iniciar spark-shell e pyspark shell

Para iniciar o spark-shell ou o pyspark shell, execute os seguintes comandos:

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'

Usar spark-defaults.conf para configurar os parâmetros do Spark

Para tornar as alterações de configuração permanentes, anexe a configuração ao arquivo /etc/spark/conf/spark-defaults.conf. Em seguida, reinicie o Servidor de histórico do Spark. O exemplo a seguir configura a memória do executor e a memória do driver em spark-defaults.conf. Neste exemplo, cada linha consiste em uma chave e um valor separados por um espaço em branco.

Exemplo

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

O exemplo de configuração a seguir configura o driver do Spark e a memória do executor durante a inicialização do cluster:

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

Observação: no Amazon EMR, a configuração spark.yarn.executor.memoryOverhead tem um valor padrão de 18,75%, mas o padrão do Spark é 0,1875%. Depois de configurar sua tarefa do Spark, monitore seu desempenho e analise a utilização de recursos para obter informações e ajustar ainda mais os parâmetros de tarefa.

Informações relacionadas

AWS open data analytics

Adicionar um trabalho do Spark

Modify your cluster on the fly with Amazon EMR reconfiguration (Modificar o cluster em tempo real com a reconfiguração do Amazon EMR)

AWS OFICIALAtualizada há um mês