¿Cómo defino los parámetros de Spark en Amazon EMR?

4 minutos de lectura
0

Quiero configurar los parámetros de Apache Spark en Amazon EMR.

Descripción breve

Hay dos métodos para configurar las aplicaciones de Spark:

  • Utilice argumentos de línea de comandos, como el comando spark-submit, para evitar codificar valores de forma rígida.
  • Configure los valores del archivo spark-defaults.conf para que los cambios sean permanentes.

Resolución

Configurar los parámetros de Spark mediante spark-submit

El comando spark-submit y el shell de Spark admiten dos formas de cargar configuraciones de forma dinámica:

  • Use opciones de línea de comandos, como --num-executors.
  • Use el marcador --conf.

Nota: Ejecute spark-submit--help para mostrar la lista completa de opciones.

El comando spark-submit también lee las opciones de configuración de spark-defaults.conf. En el archivo spark-defaults.conf, cada línea consta de una clave y un valor separados por espacios en blanco.

Para obtener más información, consulte Submitting user applications with spark-submit (Enviar aplicaciones de usuario con spark-submit).

Para más información sobre los parámetros compatibles con Spark, consulte Spark configuration (Configuración de Spark).

A continuación se enumeran algunas de las opciones de configuración más comunes:

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

Cuando se usa spark-submit, el JAR de la aplicación y todos los JAR incluidos en la opción --jars se transfieren automáticamente al clúster. Las URL proporcionadas después de --jars deben estar separadas por comas. La lista se incluye en las rutas de las clases del controlador y del ejecutor, y los JAR y los archivos se copian al directorio de trabajo de cada SparkContext en los nodos ejecutores. Tenga en cuenta que la expansión de directorios no funciona con --jars.

Ejemplo

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

Puede pasar los parámetros de memoria mediante el indicador --conf, como se muestra en el siguiente ejemplo:

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

Iniciar spark-shell y el shell de pyspark mediante parámetros de Spark personalizados

Para iniciar spark-shell o el shell de pyspark, ejecute los siguientes 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'

shell de pyspark

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'

Configurar los parámetros de Spark mediante spark-defaults.conf

Para que los cambios en la configuración sean permanentes, agregue la configuración al archivo /etc/spark/conf/spark-defaults.conf. A continuación, reinicie Spark History Server. El siguiente ejemplo configura la memoria del ejecutor y la memoria del controlador en spark-defaults.conf. En este ejemplo, cada línea se compone de una clave y un valor separados por espacios en blanco.

Ejemplo

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

El siguiente ejemplo configura la memoria del ejecutor y el controlador de Spark durante el inicio del clúster:

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

Información relacionada

Best practices for successfully managing memory for Apache Spark applications on Amazon EMR (Prácticas recomendadas para administrar correctamente la memoria de las aplicaciones de Apache Spark en Amazon EMR)

Add a Spark step (Agregar un paso de Spark)

Modify your cluster on the fly with Amazon EMR reconfiguration (Modificar el clúster sobre la marcha con la reconfiguración de Amazon EMR)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año