Configuración predeterminada de aplicación para EMR sin servidor - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración predeterminada de aplicación para EMR sin servidor

Puede especificar un conjunto común de configuraciones de tiempo de ejecución y monitorización a nivel de aplicación para todos los trabajos que envía en la misma aplicación. Esto reduce la sobrecarga adicional asociada a la necesidad de enviar las mismas configuraciones para cada trabajo.

Puede modificar las configuraciones en los siguientes momentos:

En las siguientes secciones se proporcionan más detalles y un ejemplo como contexto adicional.

Declaración de las configuraciones a nivel de aplicación

Puede especificar las propiedades de configuración del registro y del tiempo de ejecución a nivel de aplicación para los trabajos que envíe en la aplicación.

monitoringConfiguration

Para especificar las configuraciones de registro de los trabajos que envíe con la aplicación, utilice el campo monitoringConfiguration. Para obtener más información sobre el registro de EMR sin servidor, consulte Almacenamiento de registros.

runtimeConfiguration

Para especificar propiedades de configuración en tiempo de ejecución como spark-defaults, proporcione un objeto de configuración en el campo runtimeConfiguration. Esto afecta a las configuraciones predeterminadas de todos los trabajos que envíe con la aplicación. Para obtener más información, consulte Parámetro de anulación de la configuración de Hive y Parámetro de anulación de configuración de Spark.

Las clasificaciones de configuración disponibles varían en función de la versión de EMR sin servidor. Por ejemplo, las clasificaciones para el Log4j personalizado de spark-driver-log4j2 y spark-executor-log4j2 solo están disponibles en las versiones 6.8.0 y posteriores. Para obtener una lista de propiedades específicas de la aplicación, consulte Propiedades de trabajo de Spark y Propiedades de los trabajos de Hive.

También puede configurar las propiedades de Apache Log4j2, AWS Secrets Manager para la protección de datos, así como el tiempo de ejecución de Java 17 a nivel de aplicación.

Para transmitir los secretos del Secrets Manager a nivel de aplicación, asocie la siguiente política a los usuarios y roles que necesiten crear o actualizar aplicaciones EMR sin servidor con secretos.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "SecretsManagerPolicy", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "kms:Decrypt" ], "Resource": "arn:aws:secretsmanager:your-secret-arn" } ] }

Para obtener más información sobre la creación de políticas personalizadas para los secretos, consulte los Ejemplos de políticas de permisos AWS Secrets Manager en la AWS Secrets Manager Guía del usuario.

nota

La runtimeConfiguration que especifique a nivel de aplicación se asigna a la applicationConfiguration en la API de StartJobRun.

Declaración de ejemplo

En el siguiente ejemplo, se muestra cómo declarar configuraciones predeterminadas con create-application.

aws emr-serverless create-application \ --release-label release-version \ --type SPARK \ --name my-application-name \ --runtime-configuration '[ { "classification": "spark-defaults", "properties": { "spark.driver.cores": "4", "spark.executor.cores": "2", "spark.driver.memory": "8G", "spark.executor.memory": "8G", "spark.executor.instances": "2", "spark.hadoop.javax.jdo.option.ConnectionDriverName":"org.mariadb.jdbc.Driver", "spark.hadoop.javax.jdo.option.ConnectionURL":"jdbc:mysql://db-host:db-port/db-name", "spark.hadoop.javax.jdo.option.ConnectionUserName":"connection-user-name", "spark.hadoop.javax.jdo.option.ConnectionPassword": "EMR.secret@SecretID" } }, { "classification": "spark-driver-log4j2", "properties": { "rootLogger.level":"error", "logger.IdentifierForClass.name": "classpathForSettingLogger", "logger.IdentifierForClass.level": "info" } } ]' \ --monitoring-configuration '{ "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/app-level" }, "managedPersistenceMonitoringConfiguration": { "enabled": false } }'

Anulación de configuraciones durante la ejecución de un trabajo

Puede especificar las anulaciones de configuración para la configuración de la aplicación y la configuración de supervisión con la API de StartJobRun. Luego, EMR sin servidor combina las configuraciones que especifique en el nivel de aplicación y en el nivel de trabajo para determinar las configuraciones para la ejecución del trabajo.

El nivel de detalle cuando se produce la fusión es el siguiente:

nota

La prioridad de las configuraciones que proporcione a StartJobRun sustituirá a las configuraciones que usted proporcione a nivel de aplicación.

Para obtener más información sobre las clasificaciones de prioridades, consulte Parámetro de anulación de la configuración de Hive y Parámetro de anulación de configuración de Spark.

Al iniciar un trabajo, si no especifica una configuración concreta, esta se heredará de la aplicación. Si declara las configuraciones a nivel de trabajo, puede realizar las siguientes operaciones:

  • Anular una configuración existente: proporcione el mismo parámetro de configuración en la solicitud StartJobRun con sus valores de anulación.

  • Añadir una configuración adicional: añada el nuevo parámetro de configuración en la solicitud StartJobRun con los valores que desee especificar.

  • Eliminar una configuración existente: para eliminar una configuración en tiempo de ejecución de una aplicación, proporcione la clave de la configuración que desee eliminar y pase una declaración vacía {} para la configuración. No recomendamos eliminar ninguna clasificación que contenga parámetros necesarios para la ejecución de un trabajo. Por ejemplo, si intenta eliminar las propiedades necesarias para un trabajo de Hive, el trabajo dará error.

    Para eliminar una configuración de supervisión de aplicaciones, utilice el método adecuado para el tipo de configuración correspondiente:

    • cloudWatchLoggingConfiguration: para eliminar cloudWatchLogging, pase el indicador de habilitación como false.

    • managedPersistenceMonitoringConfiguration: para eliminar la configuración de persistencia administrada y volver al estado activado predeterminado, introduzca una declaración vacía {} para la configuración.

    • s3MonitoringConfiguration: para eliminar s3MonitoringConfiguration, pase una declaración vacía {} para la configuración.

Anulación de ejemplo

El siguiente ejemplo muestra diferentes operaciones que puede realizar durante el envío de un trabajo en start-job-run.

aws emr-serverless start-job-run \ --application-id your-application-id \ --execution-role-arn your-job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://us-east-1.elasticmapreduce/emr-containers/samples/wordcount/scripts/wordcount.py", "entryPointArguments": ["s3://amzn-s3-demo-destination-bucket1/wordcount_output"] } }' \ --configuration-overrides '{ "applicationConfiguration": [ { // Override existing configuration for spark-defaults in the application "classification": "spark-defaults", "properties": { "spark.driver.cores": "2", "spark.executor.cores": "1", "spark.driver.memory": "4G", "spark.executor.memory": "4G" } }, { // Add configuration for spark-executor-log4j2 "classification": "spark-executor-log4j2", "properties": { "rootLogger.level": "error", "logger.IdentifierForClass.name": "classpathForSettingLogger", "logger.IdentifierForClass.level": "info" } }, { // Remove existing configuration for spark-driver-log4j2 from the application "classification": "spark-driver-log4j2", "properties": {} } ], "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { // Override existing configuration for managed persistence "enabled": true }, "s3MonitoringConfiguration": { // Remove configuration of S3 monitoring }, "cloudWatchLoggingConfiguration": { // Add configuration for CloudWatch logging "enabled": true } } }'

En el momento de la ejecución del trabajo, se aplicarán las siguientes clasificaciones y configuraciones en función de la clasificación de anulación de prioridades descrita en Parámetro de anulación de la configuración de Hive y Parámetro de anulación de configuración de Spark.

  • La clasificación spark-defaults se actualizará con las propiedades especificadas a nivel de trabajo. Solo se considerarían para esta clasificación las propiedades incluidas en StartJobRun.

  • La clasificación spark-executor-log4j2 se añadirá a la lista de clasificaciones existente.

  • La clasificación spark-driver-log4j2 se eliminará.

  • Las configuraciones para managedPersistenceMonitoringConfiguration se actualizarán con las configuraciones a nivel de trabajo.

  • Las configuraciones para s3MonitoringConfiguration se eliminarán.

  • Las configuraciones para cloudWatchLoggingConfiguration se añadirán a las configuraciones de monitorización existentes.