Uso de la rotación de los registros de contenedores de Spark - Amazon EMR

Uso de la rotación de los registros de contenedores de Spark

Con Amazon EMR 6.11.0 y versiones posteriores, puede activar la característica de rotación de los registros de contenedores de Spark para Amazon EMR en EKS. En lugar de generar un único archivo stdout o un archivo de registro stderr, esta característica rota el archivo en función del tamaño de rotación configurado y elimina los archivos de registro más antiguos del contenedor.

Rotar los registros de un contenedor de Spark puede ayudarle a evitar posibles problemas con los archivos de registro de Spark de gran tamaño que se generan para trabajos de larga duración o en streaming. Por ejemplo, puede iniciar un trabajo de Spark de larga duración, y el controlador de Spark genera un archivo de registro de contenedor. Si el trabajo se ejecuta durante horas o días y el espacio en disco en el nodo de Kubernetes es limitado, el archivo de registro de contenedor puede consumir todo el espacio disponible en el disco. Al activar la rotación de los registros de contenedor de Spark, se divide el archivo de registro en varios archivos y se eliminan los archivos más antiguos.

Para activar la característica de rotación de los registros de contenedores de Spark, configure los siguientes parámetros de Spark:

containerLogRotationConfiguration

Incluya este parámetro en monitoringConfiguration para activar la rotación del registro. Está deshabilitado de forma predeterminada. Debe usar containerLogRotationConfiguration además de s3MonitoringConfiguration.

rotationSize

El parámetro rotationSize especifica el tamaño del archivo para la rotación del registro. El rango de valores posibles va de 2KB a 2GB. La parte de unidades numéricas del parámetro rotationSize se pasa como un número entero. Como no se admiten valores decimales, puede especificar un tamaño de rotación de 1,5 GB, por ejemplo, con el valor 1500MB.

maxFilesToKeep

El parámetro maxFilesToKeep especifica el número máximo de archivos que deben retenerse en el contenedor después de que se haya completado la rotación. El valor mínimo es 1 y el máximo, 50.

Puede especificar estos parámetros en la sección monitoringConfiguration de la API StartJobRun, tal como se muestra en el siguiente ejemplo. En este ejemplo, con rotationSize = "10 MB" y maxFilesToKeep = 3, Amazon EMR en EKS rota los registros a 10 MB, genera un nuevo archivo de registro y, a continuación, purga el archivo de registro más antiguo cuando el número de archivos de registro llega a 3.

{ "name": "my-long-running-job", "virtualClusterId": "123456", "executionRoleArn": "iam_role_name_for_job_execution", "releaseLabel": "emr-6.11.0-latest", "jobDriver": { "sparkSubmitJobDriver": { "entryPoint": "entryPoint_location", "entryPointArguments": ["argument1", "argument2", ...], "sparkSubmitParameters": "--class main_class --conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1" } }, "configurationOverrides": { "applicationConfiguration": [ { "classification": "spark-defaults", "properties": { "spark.driver.memory":"2G" } } ], "monitoringConfiguration": { "persistentAppUI": "ENABLED", "cloudWatchMonitoringConfiguration": { "logGroupName": "my_log_group", "logStreamNamePrefix": "log_stream_prefix" }, "s3MonitoringConfiguration": { "logUri": "s3://my_s3_log_location" }, "containerLogRotationConfiguration": { "rotationSize":"10MB", "maxFilesToKeep":"3" } } } }

Para iniciar la ejecución de un trabajo con la rotación del registro de contenedor de Spark, incluya en el comando una ruta al archivo JSON que configuró en el comando StartJobRun.

aws emr-containers start-job-run \ --cli-input-json file://path-to-json-request-file