Como faço para definir 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

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)

AWS OFICIAL
AWS OFICIALAtualizada há um ano