Uso del servidor de historial de Apache Spark extendido para depurar y diagnosticar aplicaciones Spark

En este artículo se proporcionan instrucciones sobre cómo usar el servidor de historial de Apache Spark para depurar y diagnosticar las aplicaciones Apache Spark en ejecución y completadas.

Acceso al servidor de historial de Apache Spark

El servidor de historial de Apache Spark es la interfaz de usuario web para aplicaciones Spark completadas y en ejecución. Puede abrir la interfaz de usuario web de Apache Spark (UI) desde el cuaderno del indicador de progreso o la página de detalles de la aplicación Apache Spark.

Abrir la interfaz de usuario web de Spark desde el cuaderno indicador de progreso

Cuando se activa un trabajo de Apache Spark, el botón para abrir Spark web UI se encuentra dentro de la opción Más acciones del indicador de progreso. Seleccione Spark web UI y espere unos segundos, entonces aparecerá la página Spark UI.

Captura de pantalla que muestra la apertura de Spark web UI desde el cuaderno del indicador de progreso.

Abrir la interfaz web de Spark desde la página de detalles de la aplicación Apache Spark

La interfaz web de Spark también puede abrirse a través de la página de detalles de la aplicación Apache Spark. Seleccione Monitor en el lado izquierdo de la página y, a continuación, seleccione una aplicación de Apache Spark. Aparecerá la página de detalles de la aplicación.

Captura de pantalla que muestra la apertura de la interfaz de usuario web de Spark desde la página de detalles de la aplicación Apache Spark.

Para una aplicación Apache Spark cuyo estado es en ejecución, el botón muestra Interfaz de usuario de Spark. Seleccione Interfaz de usuario de Spark y aparecerá la página Interfaz de usuario de Spark.

Captura de pantalla del botón que muestra la Spark UI en ejecución.

Para una aplicación Apache Spark cuyo estado es finalizado, el estado finalizado puede ser Detenido, Erróneo, Cancelado, o Completado. El botón muestra Servidor de historial de Spark. Seleccione Servidor de historial de Spark y aparecerá la página de Interfaz de usuario de Spark.

La captura de pantalla que muestra el botón muestra la Interfaz de usuario de Spark en el estado finalizado.

Carga basada en instantáneas para registros de eventos de gran tamaño

Se ha introducido un nuevo método de carga basado en instantáneas para el servidor de historial de Spark, optimizado para escenarios de registro de eventos grandes.

Con esta mejora, la interfaz de usuario de Spark revela progresivamente los datos disponibles en lugar de esperar a que se complete la reproducción completa. Cuando el tamaño del registro de eventos es de 6 GB o mayor, se muestra un mensaje de carga para indicar que puede ser necesario un tiempo de carga adicional (normalmente unos minutos).

Tan pronto como esté disponible una instantánea parcial, la interfaz de usuario se representa con esos datos. Una barra de mensajes en la parte superior indica que los datos se siguen procesando en segundo plano. Una vez completada la reproducción completa, la barra de mensajes se quita automáticamente y se muestra la vista completa.

Con esta experiencia, puede:

  • Verá un mensaje de carga claro para los registros de eventos de gran tamaño (≥ 6 GB), para que sepa que el sistema está procesando activamente en lugar de que parezca que no responde.
  • Examine una instantánea parcial al principio a través de un banner de vista previa claramente etiquetado, lo que le permite investigar trabajos y fases sin esperar a la reproducción completa.
  • Actualice la página más adelante para cargar el conjunto de datos completo una vez finalizado el procesamiento.

Cuando los datos del historial de Spark se cargan por completo, la barra de mensajes de carga parcial desaparece y la experiencia completa está disponible.

Captura de pantalla que muestra que el botón muestra la carga basada en instantáneas para registros de eventos de gran tamaño.

Exploración del servidor de historial de Apache Spark

El servidor de historial de Apache Spark proporciona una interfaz de usuario (UI) basada en web que reconstruye los detalles de ejecución de la aplicación Spark a partir de registros de eventos. Permite a los usuarios analizar aplicaciones completadas o en ejecución más allá de su ciclo de vida en tiempo de ejecución.

La interfaz de usuario del servidor de historial consta de varias pestañas, cada una de las cuales ofrece una perspectiva diferente para comprender el comportamiento de la aplicación, el rendimiento y el uso de recursos.

Pestaña Tareas

La pestaña Trabajos proporciona información general de alto nivel de todos los trabajos dentro de una aplicación spark.

Puede usar esta vista para:

  • Monitorizar el estado del trabajo (en ejecución, completado correctamente o fallido)
  • Comparación de duraciones de trabajo
  • Identificación rápida de trabajos con errores o de ejecución lenta

Etapas

La pestaña Fases muestra información detallada de ejecución para cada fase.

Puede usar esta vista para:

  • Analizar el rendimiento a nivel de fase
  • Revisión de las métricas de distribución y orden aleatorio de tareas
  • Identificar cuellos de botella, como datos sesgados o operaciones costosas

Captura de pantalla que muestra la pestaña fase.

Límite del número de fases

Para tener en cuenta el rendimiento, de forma predeterminada, el gráfico solo está disponible cuando la aplicación Spark tiene menos de 500 fases. Si hay demasiadas fases, se producirá un error similar al siguiente:

The number of stages in this application exceeds limit (500), graph page is disabled in this case.

Como solución alternativa, antes de iniciar una aplicación Spark, aplique esta configuración de Spark para aumentar el límite:

spark.ui.enhancement.maxGraphStages 1000

Sin embargo, tenga en cuenta que esto puede provocar un rendimiento deficiente de la página y la API, ya que el contenido puede ser demasiado grande para que el explorador pueda capturar y representar.

Pestaña Almacenamiento

La pestaña Almacenamiento muestra información sobre los datos almacenados en caché.

Puede usar esta vista para:

  • Descripción del uso de memoria y disco para conjuntos de datos almacenados en caché
  • Comprobar si el almacenamiento en caché es efectivo

Entorno

En la pestaña Entorno se enumeran los detalles de configuración y entorno en tiempo de ejecución.

Puede usar esta vista para:

  • Inspección de las opciones de configuración de Spark
  • Comprobación de las variables de entorno y las dependencias
  • Solución de problemas relacionados con la configuración

Pestaña de ejecutores

La pestaña Ejecutores muestra el uso de recursos entre ejecutores.

Puede usar esta vista para:

  • Supervisión del uso de CPU y memoria
  • Análisis de la distribución de tareas entre ejecutores
  • Identificar errores o desequilibrios del ejecutor

Pestaña de gráfico

La pestaña Gráfico visualiza la ejecución de un trabajo de Spark como un grafo acíclico dirigido (DAG), que representa las relaciones entre fases.

Puede usar esta vista para:

  • Comprender cómo se divide un trabajo en fases y sus dependencias
  • Identificación de rutas críticas que determinan la duración general del trabajo
  • Detectar etapas fallidas o reintentadas
  • Reproducción de la ejecución de trabajos para observar cómo progresan las tareas con el tiempo

Esta pestaña es especialmente útil para comprender el flujo de ejecución e identificar cuellos de botella de rendimiento de alto nivel.

Captura de pantalla que muestra el gráfico.

Diagnóstico

La pestaña Diagnóstico proporciona funcionalidades de análisis avanzadas, entre las que se incluyen:

  • Detección de asimetría de datos
  • Análisis de asimetría de tiempo
  • Análisis de uso del ejecutor

Para comprobar la Asimetría de datos, el Desfase horario y el Análisis de uso del ejecutor, seleccione las pestañas respectivamente.

Captura de pantalla mostrando de nuevo la pestaña de sesgo de datos de diagnóstico de sparkUI.

Esta pestaña ayuda a identificar cuellos de botella de rendimiento e ineficiencias en la ejecución del trabajo.

Asimetría de datos

Cuando seleccione la pestaña Asimetría de datos, se mostrarán las tareas con sesgos según los parámetros especificados.

  • Especificar parámetros: la primera sección muestra los parámetros que se usan para detectar la Asimetría de datos. La regla predeterminada es: la cantidad de datos leídos por la tarea es superior a tres veces la media de datos leídos por tarea y es mayor de 10 MB. Si desea definir su propia regla para las tareas sesgadas, puede elegir los parámetros. Las secciones Skewed Stage (Fase sesgada) y Skew Chart (Gráfico de sesgo) se actualizarán en consecuencia.

  • Fase sesgada: la segunda sección muestra las etapas que tienen tareas sesgadas que cumplen los criterios especificados anteriormente. Si hay más de una tarea sesgada en una etapa, la tabla de etapas sesgadas sólo muestra la tarea más sesgada (por ejemplo, los datos más grandes para el sesgo de datos).

    Captura de pantalla que muestra la pestaña de datos sesgados del diagnóstico de spark ui.

  • Gráfico de sesgo: cuando se selecciona una fila de la tabla de etapas de sesgo, el gráfico de sesgo muestra más detalles de la distribución de tareas en función de los datos leídos y el tiempo de ejecución. Las tareas sesgadas se marcan en rojo y las tareas normales se marcan en azul. El gráfico muestra hasta 100 tareas de ejemplo y los detalles de la tarea se muestran en el panel inferior derecho.

    Captura de pantalla que muestra el gráfico de inclinación de spark ui para la etapa 10.

Desfase horario

En la pestaña Desfase horario se muestran las tareas sesgadas en función del tiempo de ejecución de la tarea.

  • Especificar parámetros: la primera sección muestra los parámetros que se utilizan para detectar la inclinación del tiempo. Los criterios predeterminados para detectar el desfase horario son: el tiempo de ejecución de la tarea es mayor que tres veces el tiempo de ejecución promedio y el tiempo de ejecución de la tarea es superior a 30 segundos. Puede cambiar los parámetros en función de sus necesidades. Las secciones Fase sesgada y Gráfico sesgado muestran la información de las fases y tareas correspondientes, al igual que la pestaña Datos sesgados descrita anteriormente.

  • Seleccione Desfase horario y, después, se muestran los resultados filtrados en la sección Fase sesgada según los parámetros establecidos en la sección Especificar parámetros. Seleccione un elemento en la sección Fase sesgada, entonces el gráfico correspondiente se dibuja en la sección 3, y los detalles de la tarea se muestran en el panel inferior derecho.

    Captura de pantalla que muestra la sección de diagnóstico de tiempo sesgado de spark ui.

Análisis de uso del ejecutor

Esta característica ha quedado en desuso en Fabric. Si todavía quiere usar esto como solución alternativa, acceda a la página agregando explícitamente "/executorusage" al final de la ruta de acceso "/diagnostic" en la dirección URL, de la siguiente manera:

Recorte de pantalla que muestra cómo modificar la dirección URL.

Pestaña SQL/DataFrame

En el caso de las cargas de trabajo que usan Spark SQL, la pestaña SQL proporciona información de nivel de consulta.

Puede usar esta vista para:

  • Análisis de planes de ejecución de consultas
  • Revisión de la duración y el rendimiento de las consultas

Nota:

La disponibilidad de determinadas pestañas depende del tipo de carga de trabajo y de las características de Spark habilitadas.

Registros rotativos de Spark Executor: acceso más sencillo para trabajos grandes y largos

A medida que las aplicaciones spark siguen creciendo a escala y duración, la administración y el análisis eficientes de registros se han vuelto cada vez más críticos. Para abordar estas necesidades en evolución, hemos introducido mejoras en el servidor de historial de Spark (para aplicaciones completadas) y la interfaz de usuario de Spark (para aplicaciones en ejecución), lo que permite los registros graduales del ejecutor para Spark 3.4 y versiones posteriores.

Con esta mejora, cuando un registro de ejecutor supera los 16 MB o el trabajo de Spark se ejecuta durante más de una hora, el sistema divide automáticamente los registros en segmentos por hora. Esto facilita la navegación, visualización y descarga de registros sin tratar con archivos extremadamente grandes.

Ahora puede hacer lo siguiente:

  • Visualización de registros por hora para identificar rápidamente ventanas de ejecución específicas
  • Acceda a los registros activos más recientes mientras el trabajo todavía se está ejecutando.
  • Descargue los registros por hora individuales o todos los registros juntos según sea necesario.

Esta característica permite a los usuarios localizar y analizar registros desde un punto de tiempo determinado con facilidad, a la vez que evita la molestia de descargar o abrir un archivo de registro único masivo.

A continuación se muestra un ejemplo de la vista Registros continuos del ejecutor:

Captura de pantalla que muestra los registros graduales del ejecutor de Spark.