Monitoramento com insights de execuções de trabalho do AWS Glue - AWS Glue

Monitoramento com insights de execuções de trabalho do AWS Glue

Os insights de execução de trabalhos do AWS Glue são um recurso do AWS Glue que simplifica a depuração e a otimização de trabalhos para seus trabalhos do AWS Glue. O AWS Glue fornece a IU do Spark e logs e métricas do CloudWatch para monitorar seus trabalhos do AWS Glue. Com esse recurso, você obtém essas informações sobre a execução do seu trabalho do AWS Glue:

  • Número da linha do script do trabalho do AWS Glue que apresentou uma falha.

  • Ação Spark executada por último no plano de consulta do Spark pouco antes da falha do seu trabalho.

  • Eventos de exceção do Spark relacionados à falha apresentados em um fluxo de log ordenado ao longo do tempo.

  • Análise de causa raiz e ação recomendada (como ajustar seu script) para corrigir o problema.

  • Eventos comuns do Spark (mensagens de log relacionadas a uma ação do Spark) com uma ação recomendada que aborda a causa raiz.

Todos esses insights estão disponíveis para você usando dois novos fluxos de log nos logs do CloudWatch para seus trabalhos do AWS Glue.

Requisitos

O recurso de insights de execução de trabalhos do AWS Glue está disponível para AWS Glue versão 2.0 e AWS Glue versão 3.0. Você pode seguir o guia de migração para seus trabalhos existentes para atualizá-los das versões mais antigas do AWS Glue.

Habilitação de insights de execução de trabalhos para um trabalho ETL do AWS Glue

Você pode habilitar insights de execução de trabalhos por meio do AWS Glue Studio ou da CLI.

AWS Glue Studio

Ao criar um trabalho via AWS Glue Studio, você pode habilitar ou desabilitar insights de execuções de trabalhos na guia Job Details (Detalhes do trabalho). Verifique se a caixa Generate job insights (Gerar insights de trabalhos) está selecionada (habilitada por padrão).


        Habilitação de insights de execução de trabalhos no AWS Glue Studio.

Linha de comando

Se estiver criando um trabalho por meio da CLI, você poderá iniciar uma execução de trabalho com um único novo parâmetro de trabalho: --enable-job-insights = true.

Por padrão, os fluxos de log de insights de execução de trabalhos são criados sob o mesmo grupo de logs padrão usado pelo log contínuo do AWS Glue, ou seja, /aws-glue/jobs/logs-v2/. Você pode configurar o nome do grupo de logs personalizado, filtros de log e configurações de grupo de logs usando o mesmo conjunto de argumentos para o log contínuo. Para obter mais informações, consulte Habilitar o log contínuo para trabalhos do AWS Glue.

Acessar os fluxos de log de insights de execução de trabalhos no CloudWatch

Com o recurso de insights de execução de trabalhos habilitado, pode haver dois fluxos de log criados quando uma execução de trabalho falha. Quando um trabalho termina com sucesso, nenhum dos fluxos é gerado.

  1. Fluxo de log de análise de exceção: <job-run-id>-job-insights-rca-driver. Este stream fornece o seguinte:

    • Número da linha do script do trabalho do AWS Glue que causou a falha.

    • Ação do Spark executada por último no plano de consulta do Spark (DAG).

    • Eventos concisos ordenados por tempo do driver e executores do Spark relacionados à exceção. Você poderá encontrar detalhes como mensagens de erro completas, a tarefa do Spark com falha e os IDs dos executores para obter ajuda para se concentrar no fluxo de log do executor específico para uma investigação mais profunda, se necessário.

  2. Fluxo de insights baseado em regras:

    • Análise de causa raiz e recomendações sobre como corrigir os erros (como usar um parâmetro de trabalho específico para otimizar a performance).

    • Eventos relevantes do Spark servindo de base para a análise de causa raiz e uma ação recomendada.

nota

O primeiro fluxo só existirá se qualquer evento de exceção do Spark estiver disponível para uma execução de trabalho com falha, e o segundo fluxo só existirá se houver insights disponíveis para a execução do trabalho com falha. Por exemplo, se o trabalho for concluído com êxito, nenhum dos fluxos será gerado; se o trabalho falhar, mas não houver uma regra definida por serviço que possa corresponder ao seu cenário de falha, somente o primeiro fluxo será gerado.

Se o trabalho for criado do AWS Glue Studio, os links para os fluxos acima também estarão disponíveis na guia de detalhes da execução do trabalho (insights da execução do trabalho) como "Concise and consolidated error logs" (Logs de erros concisos e consolidados) e "Error analysis and guidance" (Análise de erros e orientações).


        A página Job Run Details (Detalhes da execução do trabalho) que contém links para os fluxos de log.

Exemplo de insights de execuções de trabalhos do AWS Glue

Nesta seção, apresentamos um exemplo de como o recurso de insights de execução de trabalhos pode ajudar a resolver um problema em um trabalho que falhou. Neste exemplo, um usuário esqueceu de importar o módulo necessário (tensorflow) em um trabalho do AWS Glue para analisar e criar um modelo de machine learning em seus dados.

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.types import * from pyspark.sql.functions import udf,col args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME'], args) data_set_1 = [1, 2, 3, 4] data_set_2 = [5, 6, 7, 8] scoresDf = spark.createDataFrame(data_set_1, IntegerType()) def data_multiplier_func(factor, data_vector): import tensorflow as tf with tf.compat.v1.Session() as sess: x1 = tf.constant(factor) x2 = tf.constant(data_vector) result = tf.multiply(x1, x2) return sess.run(result).tolist() data_multiplier_udf = udf(lambda x:data_multiplier_func(x, data_set_2), ArrayType(IntegerType(),False)) factoredDf = scoresDf.withColumn("final_value", data_multiplier_udf(col("value"))) print(factoredDf.collect())

Sem o recurso de insights de execução de trabalhos, quando o trabalho falhar, você só vê esta mensagem emitida pelo Spark:

An error occurred while calling o111.collectToPython. Traceback (most recent call last):

A mensagem é ambígua e limita sua experiência de depuração. Nesse caso, esse recurso fornece informações adicionais em dois fluxos de log do CloudWatch:

  1. O fluxo de log do job-insights-rca-driver:

    • Eventos de exceção: este fluxo de log fornece os eventos de exceção do Spark relacionados à falha coletada do driver do Spark e de diferentes operadores distribuídos. Esses eventos ajudam a entender a propagação ordenada por tempo da exceção à medida que o código defeituoso é executado em tarefas, executores e estágios do Spark distribuídos pelos operadores do AWS Glue.

    • Números de linha: este fluxo de log identifica a linha 21, que fez a chamada para importar o módulo Python ausente que causou a falha; ele também identifica a linha 24, a chamada para a ação collect() do Spark, como a última linha executada em seu script.

    
        O fluxo de log de job-insights-rca-driver.
  2. O fluxo de log do job-insights-rule-driver:

    • Causa raiz e recomendação: além do número da linha e do número da última linha executada para a falha no script, esse fluxo de log mostra a análise da causa raiz e a recomendação para que você siga o doc do AWS Glue e configure os parâmetros de trabalho necessários para usar um módulo Python adicional em seu trabalho do AWS Glue.

    • Evento base: este fluxo de log também mostra o evento de exceção do Spark que foi avaliado com a regra definida pelo serviço para inferir a causa raiz e fornecer uma recomendação.

    
        O fluxo de log de job-insights-rca-driver.