Monitorización de trabajos mediante la interfaz de usuario web de Apache Spark - AWS Glue

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.

Monitorización de trabajos mediante la interfaz de usuario web de Apache Spark

Puede utilizar la interfaz de usuario web de Apache Spark para monitorizar y depurar trabajos de ETL AWS Glue que se ejecutan en el sistema de trabajos AWS Glue, así como aplicaciones de Spark que se ejecutan en puntos de enlace de desarrollo AWS Glue. La interfaz de usuario de Spark le permite comprobar lo siguiente para cada trabajo:

  • La escala de tiempo del evento de cada etapa de Spark

  • Un gráfico acíclico dirigido (DAG) del trabajo

  • Planes físicos y lógicos para consultas de SparkSQL

  • Las variables de entorno de Spark subyacentes para cada trabajo

Para obtener más información sobre el uso de la interfaz de usuario web de Spark, consulta la Interfaz de usuario web en la documentación de Spark. Para obtener orientación sobre cómo interpretar los resultados de la interfaz de usuario de Spark para mejorar el rendimiento de tu trabajo, consulta las prácticas recomendadas AWS Glue para ajustar el rendimiento de los trabajos de Apache Spark en la Guía AWS prescriptiva.

Puedes ver la interfaz de usuario de Spark en la AWS Glue consola. Está disponible cuando un AWS Glue trabajo se ejecuta en la versión AWS Glue 3.0 o versiones posteriores y los registros se generan en el formato estándar (en lugar de heredado), que es el predeterminado para los trabajos más recientes. Si tiene archivos de registro de más de 0,5 GB, puede habilitar la compatibilidad con el registro continuo para las ejecuciones de trabajos en versiones AWS Glue 4.0 o posteriores para simplificar el archivado de registros, el análisis y la solución de problemas.

Puedes activar la interfaz de usuario de Spark desde la AWS Glue consola o desde AWS Command Line Interface (AWS CLI). Al habilitar la interfaz de usuario de Spark, los trabajos de ETL de AWS Glue y las aplicaciones de Spark en puntos de conexión de desarrollo de AWS Glue pueden hacer una copia de seguridad de los registros de eventos de Spark en una ubicación que especifique en Amazon Simple Storage Service (Amazon S3). Los registros de eventos respaldados en Amazon S3 se pueden utilizar con la interfaz de usuario de Spark tanto en tiempo real mientras se está ejecutando el trabajo como después de que se haya completado el trabajo. Mientras los registros permanezcan en Amazon S3, la interfaz de usuario de Spark de la AWS Glue consola podrá verlos.

Permisos

Para usar la interfaz de usuario de Spark en la AWS Glue consola, puedes usar UseGlueStudio o añadir todas las API de servicio individuales. Para utilizar la interfaz de Spark, todas las API son necesarias; sin embargo, los usuarios pueden acceder a las características de la interfaz de Spark al agregar sus API de servicio en el permiso de IAM para un acceso detallado.

RequestLogParsing es la más importante, ya que realiza el análisis de los registros. Las API restantes realizan la lectura de los respectivos datos analizados. Por ejemplo, GetStages brinda acceso a los datos sobre las etapas de un trabajo de Spark.

La lista de las API de servicio de la interfaz de usuario de Spark elaboradas para UseGlueStudio se encuentra a continuación, en la política de muestra. La política a continuación brinda acceso para que solo se utilicen las características de la interfaz de Spark. Para añadir más permisos, como Amazon S3 e IAM, consulte Creación de políticas de IAM personalizadas para. AWS Glue Studio

La lista de las API de servicio de la interfaz de usuario de Spark elaboradas para UseGlueStudio se encuentra a continuación, en la política de muestra. Al utilizar una API de servicio de la interfaz de Spark, utilice el espacio de nombre glue:<ServiceAPI>.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGlueStudioSparkUI", "Effect": "Allow", "Action": [ "glue:RequestLogParsing", "glue:GetLogParsingStatus", "glue:GetEnvironment", "glue:GetJobs", "glue:GetJob", "glue:GetStage", "glue:GetStages", "glue:GetStageFiles", "glue:BatchGetStageFiles", "glue:GetStageAttempt", "glue:GetStageAttemptTaskList", "glue:GetStageAttemptTaskSummary", "glue:GetExecutors", "glue:GetExecutorsThreads", "glue:GetStorage", "glue:GetStorageUnit", "glue:GetQueries", "glue:GetQuery" ], "Resource": [ "*" ] } ] }

Limitaciones

  • La interfaz de usuario de Spark en la AWS Glue consola no está disponible para trabajos ejecutados antes del 20 de noviembre de 2023 porque están en el formato de registro antiguo.

  • La interfaz de usuario de Spark en la AWS Glue consola admite los registros sucesivos de la AWS Glue versión 4.0, como los que se generan de forma predeterminada en los trabajos de streaming. La suma máxima de todos los archivos de eventos acumulados generados es de 2 GB. Para los AWS Glue trabajos que no admiten registros acumulados, el tamaño máximo del archivo de eventos de registro que admite SparkUI es de 0,5 GB.

  • La interfaz de usuario de Spark sin servidor no está disponible para los registros de eventos de Spark almacenados en un bucket de Amazon S3 al que solo puede acceder tu VPC.

Ejemplo: interfaz de usuario web de Apache Spark

Este ejemplo le muestra cómo utilizar la interfaz de usuario de Spark para entender su desempeño laboral. Las capturas de pantalla muestran la interfaz de usuario web de Spark proporcionada por un servidor de historial de Spark autogestionado. La interfaz de usuario de Spark en la AWS Glue consola ofrece vistas similares. Para obtener más información sobre el uso de la interfaz de usuario web de Spark, consulta la Interfaz de usuario web en la documentación de Spark.

A continuación, se muestra un ejemplo de una aplicación Spark que lee desde dos orígenes de datos, realiza una transformación de combinación y la escribe en Amazon S3 en formato Parquet.

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job from pyspark.sql.functions import count, when, expr, col, sum, isnull from pyspark.sql.functions import countDistinct from awsglue.dynamicframe import DynamicFrame args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME']) df_persons = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/persons.json") df_memberships = spark.read.json("s3://awsglue-datasets/examples/us-legislators/all/memberships.json") df_joined = df_persons.join(df_memberships, df_persons.id == df_memberships.person_id, 'fullouter') df_joined.write.parquet("s3://aws-glue-demo-sparkui/output/") job.commit()

La siguiente visualización del DAG muestra las diferentes etapas de este trabajo de Spark.

Captura de pantalla de la interfaz de usuario de Spark que muestra 2 etapas completadas para el trabajo 0.

La siguiente escala de tiempo de eventos para un trabajo muestra el inicio, la ejecución y la terminación de diferentes ejecutores de Spark.

Captura de pantalla de la interfaz de usuario de Spark que muestra las etapas completadas, fallidas y activas de los diferentes ejecutores de Spark.

En la siguiente pantalla se muestran los detalles de los planes de consulta de SparkSQL:

  • Plan lógico examinado

  • Plan lógico analizado

  • Plan lógico optimizado

  • Plan físico para la ejecución

Planes de consulta de SparkSQL: planes físicos y planes físicos examinados, analizados y optimizados para su ejecución.