Monitorar e resolver problemas de cargas de trabalho em lote do Dataproc sem servidor

É possível monitorar e resolver 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.

Interface do Spark

A interface do Spark coleta detalhes de execução do Apache Spark do Dataproc sem servidor para cargas de trabalho em lote do Spark. Não há custo financeiro para o recurso da interface do Spark, que é ativada por padrão.

Os dados coletados pelo recurso Spark UI são mantidos por 90 dias. É possível usar essa interface da Web para monitorar e depurar cargas de trabalho do Spark sem precisar criar um servidor de histórico persistente.

Limitações

A interface do Spark não oferece suporte aos seguintes workloads do Dataproc Serverless:

Permissões e papéis de gerenciamento de identidade e acesso obrigatórios

As seguintes permissões são necessárias para usar o recurso da interface do Spark com processamento em lote do Google Cloud.

  • Permissão de coleta de dados: dataproc.batches.sparkApplicationWrite. Essa permissão precisa ser concedida à conta de serviço que executa cargas de trabalho em lote. Essa permissão está incluída no papel de Dataproc Worker, que é concedido automaticamente à conta de serviço padrão do Compute Engine que o Dataproc Serverless usa por padrão. Consulte Conta de serviço do Dataproc Serverless. No entanto, se você especificar conta de serviço personalizada para a carga de trabalho em lote, é preciso adicionar o dataproc.batches.sparkApplicationWrite permissão a essa conta de serviço (normalmente, concedendo à conta de serviço o papel Worker do Dataproc).

  • Permissão de acesso à interface do Spark: dataproc.batches.sparkApplicationRead. Essa permissão precisa ser concedida a um usuário para acessar a interface do Spark no console do Google Cloud. Essa permissão está incluída nos papéis Dataproc Viewer, Dataproc Editor e Dataproc Administrator. Para abrir a UI do Spark no console do Google Cloud, você precisa ter um dos esses papéis ou ter um papel personalizado que inclua essa permissão.

Abrir a interface do Spark

A página da interface do Spark está disponível no console do Google Cloud para cargas de trabalho em lote do Spark.

  1. Acessar Lotes do Dataproc

  2. Clique em um ID do lote para abrir a página de detalhes do lote.
  3. Clique em Visualizar a interface do Spark no menu superior.

O link Visualizar interface do Spark está desativado? Se um a permissão necessária não foi concedida, ou se você desmarcar a caixa de seleção Ativar interface do Spark na página de detalhes do lote ou definir a propriedade Create.dataproc.appContext.enabled como false (padrão: true) quando você envie uma carga de trabalho em lote, o botão Visualizar interface do Spark será desativado.

Servidor de histórico persistente

O Dataproc Serverless 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 ela é concluída. As métricas e os eventos de carga de trabalho não persistem após a conclusão de uma carga de trabalho. No entanto, é possível usar Persistent History Server (PHS) para reter o histórico de aplicativos da carga de trabalho (evento) registros) 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 persistente do Dataproc (PHS, na sigla em inglês).

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

  3. Usar 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 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 um carga de trabalho concluída. O Dataproc Serverless para Spark coleta registros de carga de trabalho no Cloud Logging. É possível acessar os registros do Dataproc sem servidor para Spark no recurso Cloud Dataproc Batch no Explorador de registros.

Consulte o Dataproc sem servidor para registros do Spark

O Explorador de registros no console do Google Cloud oferece um painel de consulta para ajudar a criar uma consulta para examinar os registros de carga de trabalho em lote. Siga estas etapas para criar uma consulta e examinar a carga de trabalho em lote registros:

  1. Acessar o Explorador de registros

  2. Seu projeto atual está selecionado. Clique em Refinar projeto de escopo para: selecione um projeto diferente.
  3. Defina uma consulta de registros em lote.

    • Use menus de filtro para filtrar uma carga de trabalho em lote.

      1. Em Todos os recursos, selecione o recurso Cloud Dataproc Batch.

        1. No painel Selecionar recurso, selecione o lote LOCAL e depois o ID DO LOTE. Esses parâmetros de lote estão listados Lotes do Dataproc no console do Google Cloud.

        2. Clique em Aplicar.

        3. Em Selecionar nomes de registros, digite dataproc.googleapis.com na caixa Pesquisar nomes de registros para limitar os tipos de registro a serem consultados. Selecione um ou mais nomes de arquivos de registro listados.

    • Use o editor de consultas para filtrar os registros específicos da VM.

      1. Especifique o tipo e o nome do recurso de VM, conforme mostrado no exemplo a seguir:

        resource.type="cloud_dataproc_batch"
        labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
        
        Observações:

        • BATCH_UUID: o UUID do lote é listado na página "Detalhes do lote" no console do Google Cloud, que é aberta quando você clica no ID do lote na página Lotes.

        Os registros de lote também listam o UUID do lote no nome do recurso da VM. Confira um exemplo de um lote de driver.log:

  4. Clique em Executar consulta.

Tipos de registro e consultas de exemplo do Dataproc Serverless para Spark

A lista a seguir descreve diferentes tipos de registro do Dataproc Serverless e fornece exemplos de consultas do Logs Explorer para cada tipo de registro.

  1. dataproc.googleapis.com/output: este arquivo de registro contém a saída da carga de trabalho em lote. O Dataproc Serverless para Spark transmite a saída em lote para o namespace output, e define o nome do arquivo como JOB_ID.driver.log.

    Exemplo de consulta do Logs Explorer para registros de saída:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
    

  2. dataproc.googleapis.com/spark: o namespace spark agrega os registros do Spark para daemons e executores em execução nas VMs mestre e de trabalho do cluster do Dataproc. Cada entrada de registro inclui um rótulo de componente master, worker ou executor para identificar a origem do registro, conforme mostrado abaixo:

    • executor: registros dos executores de código de usuário. Normalmente, são registros distribuídos.
    • master: registros do mestre do gerenciador de recursos autônomo do Spark, que são semelhante ao Dataproc no YARN do Compute Engine ResourceManager.
    • worker: registros do worker do gerenciador de recursos independente do Spark, que são semelhantes aos registros NodeManager do YARN do Dataproc no Compute Engine.

    Exemplo de consulta da Análise de registros para todos os registros no namespace spark:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
    

    Exemplo de consulta do Logs Explorer para registros de componentes autônomos do Spark no namespace spark:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
    jsonPayload.component="COMPONENT"
    

  3. dataproc.googleapis.com/startup: o namespace startup inclui o em lote (cluster). Todos os registros de script de inicialização são incluídos. Os componentes são identificados por um rótulo, por exemplo:

    startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
    
    Exemplo de consulta da Análise de registros para registros de inicialização em uma VM especificada:
    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
    
  4. dataproc.googleapis.com/agent: as agregações do namespace agent registros do agente do Dataproc. Cada entrada de registro inclui o rótulo do nome do arquivo que identifica a origem do registro.

    Exemplo de consulta da Análise de registros para registros de agentes gerados por uma VM de trabalho especificada:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
    

  5. dataproc.googleapis.com/autoscaler: as agregações do namespace autoscaler Dataproc sem servidor para registros do escalonador automático do Spark.

    Exemplo de consulta da Análise de registros para registros de agentes gerados por uma VM de trabalho especificada:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
    

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 substituir a coleta de uma ou mais métricas do Spark.

É possível conferir as métricas de carga de trabalho no Metrics Explorer ou na página Batch details no console do Google Cloud.

Métricas em lote

As métricas de recursos batch do Dataproc fornecem insights sobre recursos de lote, como o número de executores de lote. As métricas de lote têm o prefixo 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 métricas do driver e do executor do Spark e métricas do sistema. As métricas do Spark disponíveis têm o prefixo custom.googleapis.com/.

Exemplo de métrica de faísca 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 mostram as métricas de carga de trabalho usando o Metrics Explorer no console do Google Cloud. Por exemplo, é possível crie um gráfico para mostrar disk:bytes_used e filtre por batch_id.

Cloud Monitoring

O monitoramento usa metadados e métricas de carga de trabalho para fornecer insights sobre a integridade e o desempenho do Dataproc Serverless 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)

Nesta seção, abordamos os conceitos avançados de solução de problemas recursos (Pré-lançamento) que são disponíveis no console do Google Cloud. Esses recursos incluem a solução de problemas assistida pelo Gemini para o Dataproc Serverless, 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. Depois que o formulário for aprovado, os projetos listados nele terão acesso aos recursos de visualização.

Visualizar preços

Não há cobrança adicional por participar da prévia. As cobranças serão aplicadas aos seguintes recursos de pré-lançamento quando eles forem disponibilizados para todos os usuários (GA):

O aviso prévio das cobranças do GA será enviado para o endereço de e-mail informado no formulário de inscrição da visualização.

Requisitos de atributos

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

  • Permissão: você precisa 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 assistida pelo Gemini. solução de problemas do Dataproc sem servidor ao enviar cada carga de trabalho em lote recorrente do Spark usando o console do Google Cloud, CLI gcloud ou o API. 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 solução de problemas assistida pelo Gemini para a carga de trabalho. Para informações sobre o conteúdo do registro de carga de trabalho do Spark, consulte Registros do Dataproc Serverless para Spark.

Console

Siga as etapas abaixo para ativar a solução de problemas assistida pelo Gemini em cada carga de trabalho recorrente do lote 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 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 enviados com esse nome de coorte. Por exemplo, especifique TPCH-Query1 como o nome da coorte para 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, consulte Envie uma carga de trabalho em lote.

gcloud

Execute o comando gcloud dataproc batches submit da CLI do gcloud localmente em uma janela de terminal ou no Cloud Shell para ativar a solução de problemas assistida pelo Gemini em cada carga de trabalho recorrente 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 que são 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 atividade TPC-H.

API

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

Exemplo:

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

Solução de problemas com o Gemini para o Dataproc sem servidor

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

  • Guia Investigar: a guia "Investigar" na página Detalhes do lote mostra uma seção "Visão geral de integridade (pré-lançamento)" com os seguintes painéis de solução de problemas assistida pelo Gemini:

    • O que foi ajustado automaticamente? Se você ajuste automático ativado em uma ou mais cargas de trabalho, esse painel exibe as mudanças mais recentes no ajuste automático que foram 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? Clique em Perguntar ao Gemini para solicitar recomendações que ajudem 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 Ask Gemini, o Gemini para Google Cloud vai gerar um resumo de erros, anomalias ou destaques dos logs de workload, métricas do Spark e eventos do Spark. O Gemini para Google Cloud também pode mostrar uma lista de etapas recomendadas para corrigir uma falha ou melhorar o desempenho de uma carga de trabalho bem-sucedida, mas lenta.

    Insights gerados pelo Gemini para Google Cloud.

  • Colunas de solução de problemas assistida pelo Gemini: como parte da versão de pré-lançamento, a página de lista Batches 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 Ask Gemini só aparece e é ativado se um lote concluído estiver no estado Failed, Cancelled ou Succeeded. Se você clicar em Ask Gemini, o Gemini para Google Cloud vai gerar um resumo de erros, anomalias ou destaques dos registros de carga de trabalho, métricas do Spark e eventos do Spark. O Gemini para o Google Cloud também pode mostrar 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. A métrica os gráficos 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 de métrica 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 do tempo de GC (coleta de lixo) da JVM para 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 entre diferentes executores. Se um executor mostrar bytes de disco despejados altos, isso pode indicar distorção de dados. Se a métrica aumentar com o 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 com os bytes lidos por executor. Grandes discrepâncias nos bytes lidos ou gravados podem indicar cenários em que as mesclagens replicadas levam à amplificação de dados em executores específicos.
Registros lidos e gravados Essa métrica mostra os 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.
Razão entre o tempo de gravação aleatória 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 pode indicar distorção de dados ou serialização ineficiente de dados. É possível identificar estágios com tempos de gravação de shuffle longos na interface do Spark. Procure tarefas fora da curva nessas etapas que levam mais tempo do que a média para serem concluídas. Verifique se os executores com tempos de gravação de shuffle altos também mostram alta atividade de E/S de disco. Uma serialização mais eficiente e outras etapas de particionamento podem ajudar. Gravações de registros muito grandes em comparação com leituras de registros podem indicar duplicação de dados não intencional devido a mesclagens 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 do Spark em lote Essa métrica mostra o número de executores que podem ser necessários em comparação com o número de executores em execução. Uma grande diferença entre os executores necessários e em execução podem indicar problemas de escalonamento automático.
Métricas no nível da VM
Memória usada Essa métrica mostra a porcentagem da 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 levar a um grande vazamento de disco e a um tempo de execução de carga de trabalho mais lento. Use a interface do Spark para analisar executores e verificar o tempo de GC alto e as falhas de tarefas altas. Também depure o código do Spark para armazenar em cache grandes conjuntos de dados e transmitir variáveis desnecessárias.

Registros do job

Como parte da versão de pré-lançamento, a página Detalhes do lote no console do Google Cloud lista os registros de jobs (carga de trabalho em lote). Os registros incluem avisos e erros filtrados das saídas de cargas de trabalho e dos registros do Spark. Você pode selecionar a Gravidade do registro, adicionar um filtro e clicar no ícone Ver no Explorador de registros para abrir os registros de lote selecionados no Explorador de registros.

Exemplo: a Análise de registros abre depois de escolher Errors em "Gravidade" seletor na página Detalhes do lote no console do Google Cloud.

Análise de registros em lote.