Como faço para definir os parâmetros do Spark no Amazon EMR?
Quero configurar os parâmetros do Apache Spark no Amazon EMR.
Breve descrição
Existem dois métodos para configurar aplicações do Spark:
- Use argumentos de linha de comando, como o comando spark-submit, para evitar valores de código fixo.
- Configure os valores no arquivo spark-defaults.conf para tornar as alterações permanentes.
Resolução
Configure os parâmetros do Spark usando spark-submit
O shell do Spark e o comando spark-submit oferecem suporte a duas formas de carregamento de configurações dinamicamente:
- Use opções de linha de comando, como --num-executors.
- Use o sinalizador --conf.
Observação: Execute spark-submit--help para mostrar a lista completa de opções.
O comando spark-submit também lê as opções de configuração do spark-defaults.conf. No arquivo spark-defaults.conf, cada linha consiste em uma chave e um valor separados por espaços em branco.
Para obter mais informações, consulte Submitting user applications with spark-submit (Enviar aplicações de usuários com spark-submit).
Para obter mais informações sobre os parâmetros suportados pelo Spark, consulte a Spark configuration (Configuração do Spark).
Veja a seguir algumas das opções de configuração mais comuns:
--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> \
Ao usar spark-submit, o JAR da aplicação e quaisquer JARs incluídos na opção --jars são automaticamente transferidos para o cluster. Os URLs fornecidos depois de --jars devem ser separados por vírgulas. A lista está incluída nos caminhos das classes do driver e do executor e os JARs e os arquivos são copiados para o diretório de trabalho de cada SparkContext nos nós do executor. Lembre-se de que a expansão do diretório não funciona com --jars.
Exemplo
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
Você pode passar os parâmetros de memória usando o sinalizador --conf, conforme mostrado no exemplo a seguir:
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
Inicie o spark-shell e o pyspark shell usando parâmetros personalizados do Spark
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'
Configure os parâmetros do Spark usando spark-defaults.conf
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 Spark History Server. O exemplo a seguir configura a memória do executor e a memória do driver em spark-defaults.conf. Nesse exemplo, cada linha consiste em uma chave e um valor separados por espaços em branco.
Exemplo
spark.executor.memory 9486M spark.driver.memory 9486M
O exemplo de configuração a seguir configura o driver e a memória do executor do Spark durante a inicialização do cluster:
{ "Classification": "spark-defaults", "Properties": { "spark.executor.memory": "9486M", "spark.driver.memory": "9486M" } } ]
Informações relacionadas
Best practices for successfully managing memory for Apache Spark applications on Amazon EMR (Práticas recomendadas para gerenciar com sucesso a memória para aplicações do Apache Spark no Amazon EMR)
Add a Spark step (Adicionar uma etapa do Spark)
Modify your cluster on the fly with Amazon EMR reconfiguration (Modificar seu cluster rapidamente com a reconfiguração do Amazon EMR)
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos