Monitore e resolva problemas de cargas de trabalho do Dataproc sem servidor

Monitore e solucione problemas do Dataproc sem servidor para cargas de trabalho em lote do Spark usando as informações e ferramentas discutidas nas seções a seguir.

Servidor de histórico persistente

O Dataproc sem servidor para Spark cria os recursos de computação necessários para executar uma carga de trabalho, executa a carga de trabalho nesses recursos e os exclui quando a carga de trabalho termina. As métricas e os eventos da carga de trabalho não são mantidos após a conclusão dela. No entanto, é possível usar um servidor de histórico permanente (PHS, na sigla em inglês) para armazenar o histórico de aplicativos de carga de trabalho (registros de eventos) no Cloud Storage.

Para usar um PHS com uma carga de trabalho em lote, faça o seguinte:

  1. Crie um servidor de histórico permanente do Dataproc (PHS).

  2. Especifique seu PHS ao enviar uma carga de trabalho.

  3. Use o Gateway de componentes para se conectar ao PHS e visualizar detalhes do aplicativo, estágios do programador, detalhes no nível da tarefa e informações de ambiente e executor.

Dataproc sem servidor para registros do Spark

A geração de registros é ativada por padrão no Dataproc sem servidor para Spark, e os registros de carga de trabalho são mantidos após o término de uma carga de trabalho. O Dataproc sem servidor para Spark coleta registros de cargas de trabalho no Cloud Logging. É possível acessar os registros spark, agent, output e container da carga de trabalho no recurso Cloud Dataproc Batch na Análise de registros.

Exemplo de lote do Dataproc sem servidor para Spark:

Exemplo de seleção em lote no Metrics Explorer.

Para mais informações, consulte Registros do Dataproc.

Registros de auditoria do Dataproc sem servidor

Para informações sobre os registros de auditoria do Dataproc sem servidor, consulte Geração de registros de auditoria do Dataproc.

Métricas de carga de trabalho

Por padrão, o Dataproc Serverless para Spark ativa a coleta de métricas do Spark disponíveis, a menos que você use as propriedades de coleta de métricas do Spark para desativar ou modificar a coleta de uma ou mais métricas do Spark.

É possível visualizar métricas de carga de trabalho no Metrics Explorer ou na página Detalhes do lote no console do Google Cloud.

Métricas em lote

As métricas de recursos batch do Dataproc fornecem insights sobre recursos em lote, como o número de executores em lote. As métricas em lote são prefixadas com dataproc.googleapis.com/batch.

Exemplo de métrica em lote no Metrics Explorer.

Métricas do Spark

As métricas do Spark disponíveis incluem as métricas do driver e do executor do Spark e métricas do sistema. As métricas do Spark disponíveis são prefixadas com custom.googleapis.com/.

Exemplo de métrica do Spark no Metrics Explorer.

Configurar alertas de métricas

É possível criar alertas de métricas do Dataproc para receber avisos sobre problemas na carga de trabalho.

Criar gráficos

É possível criar gráficos que visualizam métricas de carga de trabalho usando o Metrics Explorer no console do Google Cloud. Por exemplo, é possível criar um gráfico para exibir disk:bytes_used e filtrar por batch_id.

Cloud Monitoring

O Monitoring usa metadados e métricas de carga de trabalho para fornecer insights sobre a integridade e o desempenho do Dataproc sem servidor para cargas de trabalho do Spark. As métricas de carga de trabalho incluem métricas do Spark, métricas em lote e métricas de operação.

É possível usar o Cloud Monitoring no console do Google Cloud para analisar métricas, adicionar gráficos, criar painéis e alertas.

Criar painéis

É possível criar um painel para monitorar cargas de trabalho usando métricas de vários projetos e diferentes produtos do Google Cloud. Para mais informações, consulte Criar e gerenciar painéis personalizados.

Solução de problemas avançada (pré-lançamento)

Esta seção aborda os recursos avançados de solução de problemas (Pré-lançamento) que estão disponíveis no console do Google Cloud. Esses recursos incluem a solução de problemas assistida pelo Gemini para Dataproc sem servidor, que faz parte da oferta Gemini no BigQuery.

Acesso a recursos de pré-visualização

Para se inscrever na versão de pré-lançamento dos recursos avançados de solução de problemas, preencha e envie o formulário de inscrição pré-GA do Gemini no BigQuery (em inglês). Depois que o formulário é aprovado, os projetos listados no formulário têm acesso a recursos de visualização.

Visualizar preços

Não há cobrança adicional por participar da prévia. Os seguintes recursos em fase de pré-lançamento serão cobrados quando eles estiverem com disponibilidade geral (GA, na sigla em inglês):

Um aviso com antecedência das cobranças do GA será enviado para o endereço de e-mail que você informar no formulário de inscrição em pré-lançamento.

Requisitos de atributos

  • Inscrição: é necessário se inscrever no recurso.

  • Permissão:é preciso ter a permissão dataproc.batches.analyze.

    gcloud iam roles update CUSTOM_ROLE_ID --project=PROJECT_ID \
    --add-permissions="dataproc.batches.analyze"
    
  • Ative a solução de problemas assistida pelo Gemini para o Dataproc sem servidor: você ativa a solução de problemas assistida pelo Gemini para o Dataproc sem servidor ao enviar cada carga de trabalho em lote do Spark recorrente usando o console do Google Cloud, a CLI gcloud ou a API Dataproc. Depois que esse recurso é ativado em uma carga de trabalho em lote recorrente, o Dataproc armazena uma cópia dos registros da carga de trabalho por 30 dias e usa os dados de registro salvos para fornecer a solução de problemas assistida pelo Gemini para a carga de trabalho. Para informações sobre o conteúdo dos registros de carga de trabalho do Spark, acesse Dataproc sem servidor para registros do Spark.

Console

Siga as etapas a seguir para ativar a solução de problemas assistida pelo Gemini em cada carga de trabalho em lote recorrente do Spark:

  1. No console do Google Cloud, acesse a página Lotes do Dataproc.

    Acessar Lotes do Dataproc

  2. Para criar uma carga de trabalho em lote, clique em Criar.

  3. Na seção Contêiner, preencha o nome da Coorte, que identifica o lote como uma de uma série de cargas de trabalho recorrentes. A análise assistida pelo Gemini é aplicada à segunda carga de trabalho e às subsequentes enviadas com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.

  4. Preencha outras seções da página Criar lote conforme necessário e clique em Enviar. Para mais informações, acesse Enviar uma carga de trabalho em lote.

gcloud

Execute o seguinte comando gcloud dataproc batches submit da CLI gcloud localmente em uma janela do terminal ou no Cloud Shell para ativar a solução de problemas assistida pelo Gemini em cada carga de trabalho recorrente em lote do Spark:

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    other arguments ...

Substitua:

  • COMMAND: o tipo de carga de trabalho do Spark, como Spark, PySpark, Spark-Sql ou Spark-R.
  • REGION: a região em que a carga de trabalho será executada.
  • COHORT: o nome da coorte, que identifica o lote como uma de uma série de cargas de trabalho recorrentes. A análise assistida pelo Gemini é aplicada à segunda carga de trabalho e às subsequentes enviadas com esse nome de coorte. Por exemplo, especifique TPCH Query 1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.

API

Inclua o nome RuntimeConfig.cohort em uma solicitação batches.create para ativar a solução de problemas assistida pelo Gemini em cada carga de trabalho recorrente em lote do Spark. A análise assistida pelo Gemini é aplicada à segunda carga de trabalho e às subsequentes enviadas com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte de uma carga de trabalho programada que executa uma consulta TPC-H diária.

Exemplo:

...
runtimeConfig:
  cohort: TPCH-Query1
...

Solução de problemas assistida pelo Gemini no Dataproc sem servidor

Os seguintes recursos de pré-lançamento da solução de problemas assistidos pelo Gemini estão disponíveis nas páginas Detalhes do lote e Lotes no console do Google Cloud.

  • Guia Investigar: a guia "Investigar" na página Detalhes do lote fornece uma seção de visão geral da integridade (prévia) com os seguintes painéis de solução de problemas assistidos pelo Gemini:

    • O que foi ajustado automaticamente? Se você ativou o ajuste automático em uma ou mais cargas de trabalho, esse painel exibirá as alterações mais recentes de ajuste automático aplicadas a cargas de trabalho em execução, concluídas e com falha.

    Painel de investigação do ajuste automático.

    • O que está acontecendo agora? e O que posso fazer a respeito? Clique em Perguntar ao Gemini para solicitar recomendações para ajudar a corrigir cargas de trabalho com falha ou melhorar cargas de trabalho bem-sucedidas, mas lentas.

    Botão "Perguntar ao Gemini".

    Se você clicar em Perguntar ao Gemini, o Gemini para Google Cloud vai gerar um resumo de todos os erros, anomalias ou destaques de registros de carga de trabalho, métricas e eventos do Spark. O Gemini para Google Cloud também pode exibir uma lista de etapas recomendadas para corrigir uma carga de trabalho com falha ou melhorar o desempenho de uma carga de trabalho bem-sucedida, mas lenta.

    Insights gerados pelo Gemini para o Google Cloud.

  • Colunas de solução de problemas assistidas pelo Gemini: como parte da versão de pré-lançamento, a página da lista de Lotes do Dataproc no console do Google Cloud inclui as colunas What was Autotuned, What is happening now? e What can I do about it?.

    Os lotes listam as colunas do Gemini.

    O botão Perguntar ao Gemini vai aparecer e ativar somente se um lote concluído estiver no estado Failed, Cancelled ou Succeeded. Se você clicar em Perguntar ao Gemini, o Gemini para Google Cloud gera um resumo de todos os erros, anomalias ou destaques de registros de carga de trabalho, métricas e eventos do Spark. O Gemini para Google Cloud também pode exibir uma lista de etapas recomendadas para corrigir uma carga de trabalho com falha ou melhorar o desempenho de uma carga de trabalho bem-sucedida, mas lenta.

Destaques de métricas em lote

Como parte da versão de pré-lançamento, a página Detalhes do lote no console do Google Cloud inclui gráficos que exibem valores importantes das métricas de carga de trabalho em lote. Os gráficos de métricas são preenchidos com valores após a conclusão do lote.

Painel de métricas do lote.

Tabela de métricas

A tabela a seguir lista as métricas de carga de trabalho do Spark exibidas na página Detalhes do lote no console do Google Cloud e descreve como os valores das métricas podem fornecer insights sobre o status e o desempenho da carga de trabalho.

Métrica O que ele mostra?
Métricas no nível do Executor
Proporção do tempo de execução de GC da JVM Essa métrica mostra a proporção entre o tempo de GC (coleta de lixo) da JVM e o tempo de execução por executor. Proporções altas podem indicar vazamentos de memória em tarefas executadas em executores específicos ou estruturas de dados ineficientes, o que pode levar a uma alta rotatividade de objetos.
Bytes do disco espalhados Essa métrica mostra o número total de bytes de disco espalhados por diferentes executores. Se um executor mostrar muitos bytes de disco espalhados, isso pode indicar desvio de dados. Se a métrica aumentar ao longo do tempo, isso pode indicar que há estágios com pressão ou vazamentos de memória.
Bytes lidos e gravados Essa métrica mostra os bytes gravados em comparação aos bytes lidos por executor. Grandes discrepâncias nos bytes lidos ou gravados podem indicar cenários em que as junções replicadas levam à amplificação de dados em executores específicos.
Registros lidos e gravados Essa métrica mostra registros lidos e gravados por executor. Um grande número de leituras de registro com poucos registros gravados pode indicar um gargalo na lógica de processamento em executores específicos, fazendo com que os registros sejam lidos durante a espera. Os executores que demoram consistentemente para ler e gravar podem indicar contenção de recursos nesses nós ou ineficiências de código específicas do executor.
Proporção entre o tempo de gravação do embaralhamento e o tempo de execução A métrica mostra a quantidade de tempo que o executor passou no ambiente de execução de embaralhamento em comparação com o ambiente geral. Se esse valor for alto para alguns executores, isso poderá indicar distorção ou serialização ineficiente de dados. É possível identificar estágios com longos tempos de gravação de embaralhamento na interface do Spark. Procure tarefas outliers nesses estágios que levam mais do que o tempo médio para conclusão. Confira se os executores com altos tempos de gravação de embaralhamento também mostram alta atividade de E/S do disco. Uma serialização mais eficiente e etapas adicionais de particionamento podem ajudar. Gravações de registros muito grandes em comparação com as leituras de registro podem indicar duplicação não intencional de dados devido a junções ineficientes ou transformações incorretas.
Métricas no nível do aplicativo
Progressão de fases Essa métrica mostra o número de estágios nos estágios com falha, em espera e em execução. Um grande número de estágios com falha ou em espera pode indicar desvio de dados. Verifique se há partições de dados e depure o motivo da falha do estágio usando a guia Stages na interface do Spark.
Executores de lote do Spark Essa métrica mostra o número de executores que podem ser necessários em relação ao número de executores em execução. Uma grande diferença entre os executores necessários e em execução pode indicar problemas de escalonamento automático.
Métricas no nível da VM
Memória usada Essa métrica mostra a porcentagem de memória da VM em uso. Se a porcentagem do mestre for alta, isso pode indicar que o driver está sob pressão de memória. Para outros nós de VM, uma porcentagem alta pode indicar que os executores estão ficando sem memória, o que pode resultar em um alto vazamento de disco e em um ambiente de execução de carga de trabalho mais lento. Use a interface do Spark para analisar os executores e verificar se há um alto tempo de GC e muitas falhas de tarefas. Além disso, depure o código Spark para armazenamento em cache de grandes conjuntos de dados e transmissão desnecessária de variáveis.

Registros do job

Como parte da versão de pré-lançamento, a página Detalhes do lote no console do Google Cloud lista registros de jobs (carga de trabalho em lote). Os registros incluem avisos e erros filtrados da saída da carga de trabalho e dos registros do Spark. Selecione a Gravidade do registro, adicione um Filtro e clique no ícone Ver na Análise de registros para abrir os registros em lote selecionados na Análise de registros.

Exemplo: a Análise de registros é aberta depois de escolher Errors no seletor de gravidade na página Detalhes do lote no console do Google Cloud.

Análise de registros em lote.

Interface do Spark (pré-lançamento)

Se você tiver registrado seu projeto no recurso de visualização da IU do Spark, poderá ver a interface do Spark no console do Google Cloud sem precisar criar um cluster do servidor de histórico permanente do Dataproc. A interface do Spark coleta detalhes de execução do Spark de cargas de trabalho em lote. Para mais informações, consulte o Guia do usuário distribuído aos clientes inscritos como parte da versão de pré-lançamento da interface do Spark.