Ejecuta la herramienta de calificación de ejecución de consultas nativas

Para identificar las cargas de trabajo por lotes que pueden lograr tiempos de ejecución más rápidos con la ejecución de consultas nativas (NQE), puedes usar la herramienta de calificación. La herramienta analiza los registros de eventos de Spark para estimar los posibles ahorros en el tiempo de ejecución y, además, identifica las operaciones que no son compatibles con el motor de NQE.

Google Cloud proporciona dos métodos para ejecutar el análisis de calificación: trabajo de calificación y secuencia de comandos de calificación. El enfoque recomendado para la mayoría de los usuarios es el trabajo de calificación, que automatiza el descubrimiento y el análisis de las cargas de trabajo por lotes. La secuencia de comandos de calificación alternativa está disponible para el caso de uso específico del análisis de un archivo de registro de eventos conocido. Elige el método que mejor se adapte a tu caso de uso:

  • Trabajo de calificación (recomendado): Este es el método principal y recomendado. Es un trabajo de PySpark que descubre y analiza automáticamente las cargas de trabajo por lotes recientes en uno o más Google Cloud proyectos y regiones. Usa este método cuando desees realizar un análisis amplio sin necesidad de ubicar manualmente archivos de registro de eventos individuales. Este enfoque es ideal para la evaluación a gran escala de la idoneidad de la NQE.

  • Secuencia de comandos de calificación (alternativa): Este es un método alternativo para casos de uso avanzados o específicos. Es un secuencia de comandos de shell que analiza un solo archivo de registro de eventos de Spark o todos los registros de eventos dentro de un directorio específico de Cloud Storage. Usa este método si tienes la ruta de acceso de Cloud Storage a los registros de eventos que deseas analizar.

Trabajo de calificación

El trabajo de calificación simplifica el análisis a gran escala, ya que analiza de forma programática las cargas de trabajo por lotes de Serverless for Apache Spark y envía un trabajo de análisis distribuido. La herramienta evalúa los trabajos en toda tu organización, lo que elimina la necesidad de buscar y especificar manualmente las rutas de acceso a los registros de eventos.

Asigna roles de IAM

Para que el trabajo de calificación acceda a los metadatos de la carga de trabajo por lotes y lea los registros de eventos de Spark en Cloud Logging, la cuenta de servicio que ejecuta la carga de trabajo debe tener los siguientes roles de IAM otorgados en todos los proyectos que se analizarán:

Envía el trabajo de calificación

Envía el trabajo de calificación con la herramienta de gcloud CLI. El trabajo incluye una secuencia de comandos de PySpark y un archivo JAR que se alojan en un bucket público de Cloud Storage.

Puedes ejecutar el trabajo en cualquiera de los siguientes entornos de ejecución:

  • Como una carga de trabajo por lotes de Serverless for Apache Spark Esta es una ejecución de trabajo simple y autónoma.

  • Como un trabajo que se ejecuta en un clúster de Dataproc en Compute Engine Este enfoque puede ser útil para integrar el trabajo en un flujo de trabajo.

Argumentos del trabajo

Argumento Descripción ¿Es obligatorio? Valor predeterminado
--project-ids Es un solo ID de proyecto o una lista separada por comas de IDs de proyectos de Google Cloud para analizar las cargas de trabajo por lotes. No Es el proyecto en el que se ejecuta el trabajo de calificación.
--regions Es una sola región o una lista de regiones separadas por comas para analizar dentro de los proyectos especificados. No Todas las regiones dentro de los proyectos especificados.
--start-time Es la fecha de inicio para filtrar lotes. Solo se analizarán los lotes creados a partir de esta fecha (formato: AAAA-MM-DD). No No se aplica ningún filtro de fecha de inicio.
--end-time Es la fecha de finalización para filtrar lotes. Solo se analizarán los lotes creados en esta fecha o antes de ella (formato: AAAA-MM-DD). No No se aplica ningún filtro de fecha de finalización.
--limit Es la cantidad máxima de lotes que se pueden analizar por región. Primero se analizan los lotes más recientes. No Se analizan todos los lotes que coinciden con los demás criterios de filtro.
--output-gcs-path Ruta de Cloud Storage (por ejemplo, gs://your-bucket/output/) en la que se escribirán los archivos de resultados. Ninguno
--input-file Ruta de Cloud Storage a un archivo de texto para el análisis masivo. Si se proporciona, este argumento anula todos los demás argumentos que definen el alcance (--project-ids, --regions, --start-time, --end-time, --limit). No Ninguno

Ejemplos de trabajos de calificación

  • Un trabajo por lotes de Serverless for Apache Spark para realizar análisis simples y ad hoc. Los argumentos del trabajo se enumeran después del separador --.

    gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \
        --project=PROJECT_ID \
        --region=REGION \
        --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \
        -- \
        --project-ids=COMMA_SEPARATED_PROJECT_IDS \
        --regions=COMMA_SEPARATED_REGIONS \
        --limit=MAX_BATCHES \
        --output-gcs-path=gs://BUCKET
    
  • Un trabajo por lotes de Serverless for Apache Spark para analizar hasta 50 lotes más recientes que se encuentran en sample_project en la región sample_project. Los resultados se escriben en el bucket de Cloud Storage.us-central1 Los argumentos del trabajo se enumeran después del separador --.

    gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \
        --project=PROJECT_ID \
        --region=US-CENTRAL1 \
        --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \
        -- \
        --project-ids=PROJECT_ID \
        --regions=US-CENTRAL1 \
        --limit=50 \
        --output-gcs-path=gs://BUCKET/
    
  • Es un trabajo de Dataproc en Compute Engine que se envía a un clúster de Dataproc para realizar análisis masivos en un flujo de trabajo de análisis a gran escala, repetible o automatizado. Los argumentos del trabajo se colocan en un objeto INPUT_FILE que se sube a un objeto BUCKET en Cloud Storage. Este método es ideal para analizar diferentes períodos o límites de lotes en diferentes proyectos y regiones en una sola ejecución.

    gcloud dataproc jobs submit pyspark gs://qualification-tool/performance-boost-qualification.py \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \
        -- \
        --input-file=gs://INPUT_FILE \
        --output-gcs-path=gs://BUCKET
    

    Notas:

    INPUT_FILE: Cada línea del archivo representa una solicitud de análisis distinta y usa un formato de marcas de una sola letra seguidas de sus valores, como -p PROJECT-ID -r REGION -s START_DATE -e END_DATE -l LIMITS.

    Ejemplo de contenido del archivo de entrada:

    -p project1 -r us-central1 -s 2024-12-01 -e 2024-12-15 -l 100
    -p project2 -r europe-west1 -s 2024-11-15 -l 50
    

    Estos argumentos dirigen la herramienta para que analice los siguientes dos alcances:

    • Hasta 100 lotes en project1 en la región us-central1 creados entre el 1 y el 15 de diciembre de 2025.
    • Hasta 50 lotes en project2 en la región europe-west1 creados a partir del 15 de noviembre de 2025

Secuencia de comandos de calificación

Usa este método si tienes la ruta de acceso directa de Cloud Storage a un registro de eventos de Spark específico que deseas analizar. Este enfoque requiere que descargues y ejecutes una secuencia de comandos de shell, run_qualification_tool.sh, en una máquina local o en una VM de Compute Engine configurada con acceso al archivo de registro de eventos en Cloud Storage.

Sigue estos pasos para ejecutar la secuencia de comandos en los archivos de eventos de la carga de trabajo por lotes de Serverless for Apache Spark.

1.Copia run_qualification_tool.sh en un directorio local que contenga los archivos de eventos de Spark que se analizarán.

  1. Ejecuta la secuencia de comandos de calificación para analizar un archivo de eventos o un conjunto de archivos de eventos contenidos en el directorio de la secuencia de comandos.

    ./run_qualification_tool.sh -f EVENT_FILE_PATH/EVENT_FILE_NAME \
        -o CUSTOM_OUTPUT_DIRECTORY_PATH \
        -k SERVICE_ACCOUNT_KEY  \
        -x MEMORY_ALLOCATEDg  \
        -t PARALLEL_THREADS_TO_RUN
    

    Marcas y valores:

    -f (obligatorio): Consulta Ubicaciones de los archivos de eventos de Spark para encontrar los archivos de eventos de la carga de trabajo de Spark.

    • EVENT_FILE_PATH (obligatorio, a menos que se especifique EVENT_FILE_NAME): Es la ruta de acceso al archivo de eventos que se analizará. Si no se proporciona, se supone que la ruta del archivo de eventos es el directorio actual.

    • EVENT_FILE_NAME (obligatorio, a menos que se especifique EVENT_FILE_PATH): Nombre del archivo de eventos que se analizará. Si no se proporciona, se analizan los archivos de eventos que se encuentran de forma recursiva en EVENT_FILE_PATH.

    -o(opcional): Si no se proporciona, la herramienta crea o usa un directorio output existente en el directorio actual para colocar los archivos de salida.

    • CUSTOM_OUTPUT_DIRECTORY_PATH: Es la ruta de acceso del directorio de salida a los archivos de salida.

    -k (opcional):

    -x (opcional):

    • MEMORY_ALLOCATED: Es la memoria en gigabytes que se asignará a la herramienta. De forma predeterminada, la herramienta usa el 80% de la memoria libre disponible en el sistema y todos los núcleos de la máquina disponibles.

    -t(opcional):

    • PARALLEL_THREADS_TO_RUN: Es la cantidad de subprocesos paralelos que ejecutará la herramienta. De forma predeterminada, la herramienta ejecuta todos los núcleos.

    Ejemplo de uso del comando:

    ./run_qualification_tool.sh -f gs://dataproc-temp-us-east1-9779/spark-job-history \
        -o perfboost-output -k /keys/event-file-key -x 34g -t 5
    

    En este ejemplo, la herramienta de calificación recorre el directorio gs://dataproc-temp-us-east1-9779/spark-job-history y analiza los archivos de eventos de Spark que se encuentran en este directorio y sus subdirectorios. El acceso al directorio se proporciona en /keys/event-file-key. La herramienta usa 34 GB memory para la ejecución y ejecuta 5 subprocesos paralelos.

Ubicaciones de los archivos de eventos de Spark

Realiza cualquiera de los siguientes pasos para encontrar los archivos de eventos de Spark para las cargas de trabajo por lotes de Serverless for Apache Spark:

  1. En Cloud Storage, busca el archivo spark.eventLog.dir de la carga de trabajo y, luego, descárgalo.

    1. Si no encuentras el archivo spark.eventLog.dir, configúralo en una ubicación de Cloud Storage, vuelve a ejecutar la carga de trabajo y descarga el archivo spark.eventLog.dir.spark.eventLog.dir
  2. Si configuraste el servidor de historial de Spark para el trabajo por lotes, haz lo siguiente:

    1. Ve al servidor de historial de Spark y, luego, selecciona la carga de trabajo.
    2. Haz clic en Descargar en la columna Registro de eventos.

Archivos de salida de la herramienta de calificación

Una vez que se completa el trabajo de calificación o el análisis de la secuencia de comandos, la herramienta de calificación coloca los siguientes archivos de salida en un directorio perfboost-output en el directorio actual:

  • AppsRecommendedForBoost.tsv: Es una lista separada por tabulaciones de las aplicaciones recomendadas para usar con la ejecución de consultas nativas.

  • UnsupportedOperators.tsv: Es una lista separada por tabulaciones de las aplicaciones que no se recomiendan para usar con la ejecución de consultas nativas.

Archivo de salida AppsRecommendedForBoost.tsv

En la siguiente tabla, se muestra el contenido de un archivo de salida AppsRecommendedForBoost.tsv de ejemplo. Contiene una fila para cada aplicación analizada.

Archivo de salida AppsRecommendedForBoost.tsv de muestra:

applicationId applicationName rddPercentage unsupportedSqlPercentage totalTaskTime supportedTaskTime supportedSqlPercentage recommendedForBoost expectedRuntimeReduction
app-2024081/batches/083f6196248043938-000 projects/example.com:dev/locations/us-central1
6b4d6cae140f883c0
11c8e
0.00% 0.00% 548924253 548924253 100.00% TRUE 30.00%
app-2024081/batches/60381cab738021457-000 projects/example.com:dev/locations/us-central1
474113a1462b426bf
b3aeb
0.00% 0.00% 514401703 514401703 100.00% TRUE 30.00%

Descripciones de columnas:

  • applicationId: Es el ApplicationID de la aplicación de Spark. Se usa para identificar la carga de trabajo por lotes correspondiente.

  • applicationName: Es el nombre de la aplicación de Spark.

  • rddPercentage: Es el porcentaje de operaciones de RDD en la aplicación. La ejecución de consultas nativas no admite las operaciones de RDD.

  • unsupportedSqlPercentage: Porcentaje de operaciones en SQL que no admite la ejecución de consultas nativas.

  • totalTaskTime: Es el tiempo acumulado de todas las tareas ejecutadas durante la ejecución de la aplicación.

  • supportedTaskTime: Es el tiempo total de la tarea que admite la ejecución de consultas nativas.

Las siguientes columnas proporcionan información importante para ayudarte a determinar si la ejecución de consultas nativas puede beneficiar tu carga de trabajo por lotes:

  • supportedSqlPercentage: Es el porcentaje de operaciones de SQL que admite la ejecución de consultas nativas. Cuanto mayor sea el porcentaje, mayor será la reducción del tiempo de ejecución que se puede lograr ejecutando la aplicación con la ejecución de consultas nativas.

  • recommendedForBoost: Si es TRUE, se recomienda ejecutar la aplicación con la ejecución de consultas nativas. Si recommendedForBoost es FALSE, no uses la ejecución de consultas nativas en la carga de trabajo por lotes.

  • expectedRuntimeReduction: Es el porcentaje esperado de reducción en el tiempo de ejecución de la aplicación cuando la ejecutas con la ejecución de consultas nativas.

Archivo de salida UnsupportedOperators.tsv.

El archivo de salida UnsupportedOperators.tsv contiene una lista de los operadores que se usan en las aplicaciones de cargas de trabajo que no son compatibles con la ejecución de consultas nativas. Cada fila del archivo de salida muestra un operador no admitido.

Descripciones de columnas:

  • unsupportedOperator: Es el nombre del operador que no admite la ejecución de consultas nativas.

  • cumulativeCpuMs: Es la cantidad de milisegundos de CPU consumidos durante la ejecución del operador. Este valor refleja la importancia relativa del operador en la aplicación.

  • count: Es la cantidad de veces que se usa el operador en la aplicación.