Uso de las características extendidas del Servidor de historial de Apache Spark para depurar y diagnosticar aplicaciones Spark

En este artículo se muestra cómo usar las características extendidas del Servidor de historial de Apache Spark para depurar y diagnosticar las aplicaciones Spark en ejecución y completadas. La extensión incluye la pestaña Data (Datos), la pestaña Graph (Gráfico) y la pestaña Diagnosis (Diagnóstico). En la pestaña Data (Datos), puede comprobar los datos de entrada y salida del trabajo de Spark. En la pestaña Graph (Gráfico), puede comprobar el flujo de datos y reproducir el gráfico del trabajo. En la pestaña Diagnóstico, puede consultar las características Asimetría de datos, Desfase horario y Análisis de uso del ejecutor.

Obtención de acceso al Servidor de historial de Spark

El Servidor de historial de Spark es la interfaz de usuario web para aplicaciones Spark completadas y en ejecución. Puede abrirla desde Azure Portal o desde una dirección URL.

Apertura de la interfaz de usuario web del Servidor de historial de Spark desde Azure Portal

  1. En Azure Portal, abra el clúster de Spark. Para obtener más información, consulte Enumeración y visualización de clústeres.

  2. En Paneles de clúster, seleccione Servidor de historial de Spark. Cuando se le pida, escriba las credenciales de administrador del clúster Spark.

    Launch the Spark History Server from the Azure portal. Azure Portal." border="true":::

Apertura de la interfaz de usuario web del Servidor de historial de Spark mediante dirección URL

Abra el Servidor de historial de Spark; para ello, vaya a https://CLUSTERNAME.azurehdinsight.net/sparkhistory, donde CLUSTERNAME es el nombre del clúster de Spark.

La interfaz de usuario web del Servidor de historial de Spark puede tener un aspecto similar al de esta imagen:

The Spark History Server page.

Uso de la pestaña Datos del Servidor de historial de Spark

Seleccione el identificador del trabajo y, a continuación, seleccione Data (Datos) en el menú de herramientas para obtener la vista de datos.

  • Revise por separado las pestañas Inputs (Entradas), Outputs (Salidas) y Table Operations (Operaciones de tablas).

    Data tabs on the Data for Spark Application page.

  • Seleccione el botón Copy (Copiar) para copiar todas las filas.

    Copy data on the Spark application page.

  • Guarde todos los datos como archivo .CSV; para ello, seleccione el botón CSV.

    Save data as a .CSV file from the Data for Spark Application page.

  • Busque los datos escribiendo palabras clave en el campo Search (Buscar). Los resultados de la búsqueda se mostrarán inmediatamente.

    Search data on the Data for Spark Application page.

  • Seleccione el encabezado de columna para ordenar la tabla. Seleccione el signo más para expandir una fila y mostrar más detalles. Seleccione el signo menos para contraer una fila.

    The data table on the Data for Spark Application page.

  • Descargue un solo archivo; para ello, seleccione el botón Partial Download (Descarga parcial) de la derecha. El archivo seleccionado se descargará localmente. Si el archivo ya no existe, se abrirá una nueva pestaña para mostrar los mensajes de error.

    The data download row on the Data for Spark Application page.

  • Copie una ruta de acceso completa o una ruta de acceso relativa; para ello, seleccione la opción Copy Full Path (Copiar ruta de acceso completa) o Copy Relative Path (Copiar ruta de acceso relativa) que se expande desde el menú de descarga. Para los archivos de Azure Data Lake Storage, seleccione Open in Azure Storage Explorer (Abrir en Explorador de Azure Storage) para iniciar el Explorador de Azure Storage y buscar la carpeta después del inicio de sesión.

    Copy Full Path and Copy Relative Path options on the Data for Spark Application page.

  • Si hay demasiadas filas para mostrar en una sola página, seleccione los números de página en la parte inferior de la tabla para explorarla.

    Page numbers on the Data for Spark Application page.

  • Para más información, seleccione o mantenga el ratón sobre el signo de interrogación junto a Data for Spark Application (Datos de la aplicación Spark) para mostrar la información sobre herramientas.

    Get more information from the Data for Spark Application page.

  • Para enviar comentarios sobre problemas, seleccione Provide us feedback (Envíenos sus comentarios).

    Provide feedback from the Data for Spark Application page.

Uso de la pestaña Gráfico del Servidor de historial de Spark

  • Seleccione el identificador del trabajo y, a continuación, seleccione Graph (Gráfico) en el menú de herramientas para obtener el gráfico del trabajo. De forma predeterminada, el gráfico mostrará todos los trabajos. Filtre los resultados mediante el menú desplegable Job ID (Identificador del trabajo).

    The Job ID drop-down menu on the Spark Application & Job Graph page.

  • La opción Progress (Progreso) está seleccionada de forma predeterminada. Compruebe el flujo de datos; para ello, seleccione Read (Leído) o Written (Escrito) en la lista desplegable Display (Mostrar).

    Check the data flow on the Spark Application & Job Graph page.

  • El color de fondo de cada tarea corresponde a un mapa térmico.

    The heat map on the Spark Application & Job Graph page.

    Color Descripción
    Verde el trabajo se ha completado correctamente.
    Naranja Se produjo un error en la tarea, pero esto no afecta al resultado final del trabajo. Estas tareas tienen instancias duplicadas o de reintento que pueden realizarse correctamente más tarde.
    Azul la tarea se está ejecutando.
    Blanco la tarea está esperando para ejecutarse o la fase se ha omitido.
    Rojo error en la tarea.

    Running a task on the Spark Application & Job Graph page.

    Las fases omitidas se muestran en blanco. A skipped task on the Spark Application & Job Graph page.

    A failed task on the Spark Application & Job Graph page.

    Nota:

    La reproducción está disponible para los trabajos completados. Seleccione el botón Playback (Reproducción) para volver a reproducir el trabajo. Puede detener el trabajo en cualquier momento; para ello, seleccione el botón de detención. Cuando se reproduce un trabajo, cada tarea mostrará su estado por color. No se admite la reproducción en trabajos incompletos.

  • Desplácese para acercar o alejar el gráfico del trabajo o seleccione Zoom to fit (Ampliar para ajustar) para ajustarlo a la pantalla.

    Select Zoom to fit on the Spark Application & Job Graph page.

  • Cuando se produzca un error en las tareas, mantenga el ratón sobre el nodo del gráfico para ver la información sobre herramientas y, a continuación, seleccione la fase para abrirla en una nueva página.

    View the tooltip on the Spark Application & Job Graph page.

  • En la página Spark Application & Job Graph (Gráfico de la aplicación Spark y el trabajo), las fases mostrarán información sobre herramientas e iconos pequeños si las tareas cumplen estas condiciones:

    • Asimetría de datos: tamaño de lectura de datos > tamaño promedio de lectura de datos de todas las tareas dentro de esta fase * 2 y tamaño de lectura de datos > 10 MB

    • Desfase horario: tiempo de ejecución > tiempo promedio de ejecución de todas las tareas dentro de esta fase * 2 y tiempo de ejecución > 2 minutos

      The skewed task icon on the Spark Application & Job Graph page.

  • El nodo del gráfico del trabajo mostrará la siguiente información de cada fase:

    • ID

    • Nombre o descripción

    • Número total de tareas

    • Datos leídos: suma del tamaño de entrada y el tamaño de lectura aleatorio

    • Datos escritos: suma del tamaño de salida y el tamaño de escritura aleatorio

    • Tiempo de ejecución: tiempo entre la hora de inicio del primer intento y la hora de finalización del último intento

    • Recuento de filas: suma de los registros de entrada, los registros de salida, los registros de lectura aleatoria y los registros de escritura aleatoria

    • Progreso

      Nota

      De forma predeterminada, el nodo del gráfico del trabajo mostrará información del último intento de cada fase (excepto en el tiempo de ejecución de la fase). Pero durante la reproducción, el nodo del gráfico del trabajo mostrará información sobre cada intento.

      Nota

      En el caso de los tamaños de lectura y escritura de datos, usamos 1 MB = 1000 KB = 1000 * 1000 bytes.

  • Seleccione Provide us feedback (Envíenos sus comentarios) para enviar comentarios sobre problemas.

    The feedback option on the Spark Application & Job Graph page.

Uso de la pestaña Diagnóstico del Servidor de historial de Spark

Seleccione el identificador del trabajo y luego Diagnosis (Diagnóstico) en el menú de herramientas para obtener la vista de diagnóstico del trabajo. La pestaña Diagnosis (Diagnóstico) incluye Asimetría de datos, Desfase horario y Análisis de uso del ejecutor.

  • Seleccione las pestañas correspondientes para revisar la Asimetría de datos, el Desfase horario y el Análisis de uso del ejecutor.

    The Data Skew tab within the Diagnosis tab.

Asimetría de datos

Seleccione la pestaña Data Skew (Asimetría de datos). Las tareas sesgadas correspondientes se muestran en función de los parámetros especificados.

Especificar parámetros

La sección Specify Parameters (Especificar parámetros) muestra los parámetros que se usan para detectar la asimetría de datos. La regla predeterminada es: La lectura de datos de tarea es tres veces mayor que la lectura de datos de tarea promedio y la lectura de datos de tarea es mayor que 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 sección Skewed Stage (Fase sesgada) muestra las fases que tienen tareas con desfase que cumplen los criterios especificados. Si hay más de una tarea con desfase en una fase, la sección Skewed Stage (Fase sesgada) muestra solo la tarea más sesgada (es decir, los datos más grandes con asimetría de datos).

Larger view of the Data Skew tab within the Diagnosis tab.

Gráfico de sesgo

Cuando se selecciona una fila de la tabla Skew Stage (Fase sesgada), Skew Chart (Gráfico de sesgo) muestra más detalles de distribuciones de tareas en función de la lectura de datos y el tiempo de ejecución. Las tareas sesgadas se marcan en rojo y las tareas normales se marcan en azul. Por motivos de rendimiento, el gráfico muestra hasta 100 tareas de ejemplo. Los detalles de la tarea se muestran en el panel inferior derecho.

The Skew Chart for Stage 10 in the Spark UI.

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 sección Specify Parameters (Especificar parámetros) muestra los parámetros que se usan para detectar el desfase horario. La regla predeterminada es: 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. Skewed Stage (Fase sesgada) y Skew Chart (Gráfico de sesgo) muestran información sobre las fases y las tareas correspondientes del mismo modo que la pestaña Data Skew (Asimetría de datos).

Al seleccionar Time Skew (Desfase horario), los resultados filtrados se muestran en la sección Skewed Stage (Fase sesgada) según los parámetros establecidos en la sección Specify Parameters (Especificar parámetros). Al seleccionar un elemento de la sección Skewed Stage (Fase sesgada), se muestra el gráfico correspondiente en la tercera sección y los detalles de la tarea en el panel inferior derecho.

The Time skew tab within the Diagnosis tab.

Gráficos de análisis de uso del ejecutor

Executor Usage Graph (Gráfico de uso del ejecutor) visualiza el estado de ejecución y la asignación del ejecutor real del trabajo.

Al seleccionar Executor Usage Analysis (Análisis de uso del ejecutor), se trazan cuatro curvas diferentes sobre el uso del ejecutor: Allocated Executors (Ejecutores asignados), Running Executors (Ejecutores en ejecución), idle Executors (Ejecutores inactivos) y Max Executor Instances (Número máximo de instancias del ejecutor). Cada evento Ejecutor agregado o Ejecutor eliminado aumentará o disminuirá los ejecutores asignados. Puede comprobar la escala de tiempo del evento en la pestaña Jobs (Trabajos) para comparaciones adicionales.

The Executor Usage Analysis tab within the Diagnosis tab.

Seleccione el icono de color para seleccionar o anular la selección del contenido correspondiente en todos los borradores.

Select the chart in the Executor Usage Analysis tab.

Preguntas más frecuentes

¿Cómo puedo revertir a la versión de la comunidad?

Para revertir a la versión de la comunidad, realice los pasos siguientes.

  1. Abra el clúster en Ambari.

  2. Vaya a Spark2>Configs (Configuraciones).

  3. Seleccione Custom spark2-defaults.

  4. Seleccione Add Property ... (Agregar propiedad...).

  5. Agregue spark.ui.enhancement.enabled=false y guárdelo.

  6. La propiedad se establece ahora en false.

  7. Para guardar la configuración, seleccione Guardar.

    Turn off a feature in Apache Ambari.

  8. En el panel izquierdo, seleccione Spark2. A continuación, en la pestaña Summary (Resumen), seleccione Spark2 History Server.

    The summary view in Apache Ambari.

  9. Para reiniciar el Servidor de historial de Spark, seleccione el botón Started (Iniciado) a la derecha de Spark2 History Server y, a continuación, seleccione Restart (Reiniciar) en el menú desplegable.

    Restart the Spark History Server in Apache Ambari.

  10. Actualice la interfaz de usuario web del Servidor de historial de Spark. Se revertirá a la versión de la comunidad.

¿Cómo puedo cargar un evento del Servidor de historial de Spark para informar de un problema?

Si se produce un error en el Servidor de historial de Spark, realice los pasos siguientes para notificar el evento.

  1. Seleccione Download (Descargar) en la interfaz de usuario web del Servidor de historial de Spark para descargar el evento.

    Download the event in the Spark History Server UI.

  2. Seleccione Provide us feedback (Envíenos sus comentarios) en la página Spark Application & Job Graph (Gráfico de la aplicación Spark y el trabajo).

    Provide feedback on the Spark Application & Job Graph page.

  3. Proporcione el título y una descripción del error. A continuación, arrastre el archivo .zip al campo de edición y seleccione Submit new issue (Enviar nuevo comentario).

    Upload and submit a new issue.

¿Cómo puedo actualizar un archivo .jar en un escenario de revisión?

Si desea actualizar con una revisión, use el siguiente script, que actualizará spark-enhancement.jar*.

upgrade_spark_enhancement.sh:

 #!/usr/bin/env bash

 # Copyright (C) Microsoft Corporation. All rights reserved.

 # Arguments:
 # $1 Enhancement jar path

 if [ "$#" -ne 1 ]; then
     >&2 echo "Please provide the upgrade jar path."
     exit 1
 fi

 install_jar() {
     tmp_jar_path="/tmp/spark-enhancement-hotfix-$( date +%s )"

     if wget -O "$tmp_jar_path" "$2"; then
         for FILE in "$1"/spark-enhancement*.jar
         do
             back_up_path="$FILE.original.$( date +%s )"
             echo "Back up $FILE to $back_up_path"
             mv "$FILE" "$back_up_path"
             echo "Copy the hotfix jar file from $tmp_jar_path   to $FILE"
             cp "$tmp_jar_path" "$FILE"

             "Hotfix done."
             break
         done
     else    
         >&2 echo "Download jar file failed."
         exit 1
     fi
 }

 jars_folder="/usr/hdp/current/spark2-client/jars"
 jar_path=$1

 if ls ${jars_folder}/spark-enhancement*.jar 1>/dev/null 2>&1;   then
     install_jar "$jars_folder" "$jar_path"
 else
     >&2 echo "There is no target jar on this node. Exit with no action."
     exit 0
 fi

Uso

upgrade_spark_enhancement.sh https://${jar_path}

Ejemplo

upgrade_spark_enhancement.sh https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

Uso del archivo bash desde Azure Portal

  1. Inicie Azure Portal y, a continuación, seleccione el clúster.

  2. Complete una acción de script con los parámetros siguientes.

    Propiedad Value
    Tipo de script - Personalizado
    Nombre UpgradeJar
    URI de script de Bash https://hdinsighttoolingstorage.blob.core.windows.net/shsscriptactions/upgrade_spark_enhancement.sh
    Tipos de nodo Principal, trabajo
    Parámetros https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

    Azure portal submit script action.

Problemas conocidos

  • Actualmente, el Servidor de historial de Spark solo funciona para Spark 2.3 y 2.4.

  • Los datos de entrada y salida que usan RDD no se mostrarán en la pestaña Data (Datos).

Pasos siguientes

Sugerencias

Si tiene algún comentario o si experimenta algún problema al usar esta herramienta, envíe un correo electrónico a (hdivstool@microsoft.com).