Todos os produtos
Search
Central de documentação

AnalyticDB:Diagnóstico de desempenho de aplicações Spark

Última atualização: Jun 27, 2026

O AnalyticDB for MySQL Enterprise Edition, Basic Edition e Data Lakehouse Edition (V3.0) oferece o recurso de diagnóstico de aplicações Spark. Caso uma aplicação Spark enviada por você apresente problemas de desempenho, utilize as informações de diagnóstico para localizar e analisar rapidamente gargalos, otimizar a aplicação e aumentar a eficiência na resolução de problemas. Este tópico descreve como diagnosticar o desempenho de aplicações Spark e fornece exemplos práticos.

Pré-requisitos

Casos de uso

Este recurso é utilizado principalmente nos seguintes cenários:

  • Análise de desempenho de conjuntos de dados: ao processar dados em grande escala com o Spark, a análise de desempenho é essencial. A ferramenta de diagnóstico ajuda a identificar rapidamente gargalos, como picos de memória e spills em disco, melhorando a eficiência do processamento de dados.

  • Balanceamento de carga para aplicações de grande escala: quando aplicações Spark executam sob cargas de trabalho de alta concorrência, podem ocorrer problemas como skew de dados, tarefas long-tail e desequilíbrio de carga. O diagnóstico da aplicação permite identificar essas questões rapidamente para que você possa otimizá-la.

Limitações

  • É possível diagnosticar apenas aplicações Spark concluídas com sucesso nos últimos 14 dias.

  • Somente aplicações em batch e streaming são suportadas.

Procedimento

  1. Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo do console, selecione uma região. No painel de navegação à esquerda, clique em Clusters. Localize o cluster que deseja gerenciar e clique em ID do cluster.

  2. No painel de navegação à esquerda, escolha Job Development>Spark JAR Development.

  3. Na seção Workspaces, localize a aplicação desejada e escolha More > History na coluna Actions.

  4. Na seção Tuning History, localize a tarefa alvo e clique em Diagnose na coluna Actions.

    Nota

    Após a conclusão do diagnóstico, o painel Diagnostic Optimization Details abre automaticamente. Se a aplicação apresentar problemas de desempenho, use as informações neste painel para otimizá-la.

Exemplos de diagnóstico

Os exemplos a seguir mostram problemas comuns de desempenho identificados pelo diagnóstico de aplicações Spark. Se sua aplicação apresentar qualquer um desses problemas, utilize as soluções recomendadas para otimizá-la.

Exemplo 1: Skew de dados durante a fase de shuffle

Regra de anomalia

Uma única tarefa lê mais de cinco vezes a mediana de registros durante um shuffle.

Otimização

  • Defina spark.sql.shuffle.partitions como 2 a 3 vezes o número de núcleos dos executores Spark para redistribuir os dados entre as tarefas.

  • Atualize sua lógica de negócios e filtre outliers no conjunto de dados antes da fase de shuffle.

  • Adicione um número aleatório como chave no operador GroupBy ou ReduceBy para fragmentar os dados durante as fases map e reduce. Em seguida, remova o número aleatório na fase reduce.

  • Com base nos requisitos do seu negócio, aumente o valor de spark.shuffle.file.buffer ou spark.reducer.maxSizeInFlight para melhorar o desempenho do shuffle.

Exemplo 2: Baixa utilização de CPU

Regra de anomalia

O tempo total de CPU usado pelas tarefas em um executor Spark é inferior a 35% do tempo total de execução do executor.

Otimização

  • Modifique spark.executor.resourceSpec para reduzir a especificação e diminuir o número de núcleos.

  • Altere seu código de negócios para reduzir o número de partições RDD.

  • Se ocorrer um shuffle, modifique spark.sql.shuffle.partitions para aumentar o número de tarefas.

Exemplo 3: Tempo excessivo de garbage collection (GC) da JVM

Regra de anomalia

O tempo de GC da JVM representa mais de 20% do tempo total de execução.

Otimização

  • Modifique spark.executor.resourceSpec para aumentar a especificação.

  • Ajuste os parâmetros relevantes. Para mais informações, consulte Garbage Collection Tuning.

Exemplo 4: Volume excessivo de dados por tarefa

Regra de anomalia

Uma única tarefa em um estágio processa mais de 200 MB de dados.

Otimização

  • Aumente o valor do parâmetro spark.default.parallelism ou spark.sql.shuffle.partitions para ajustar o particionamento de dados e elevar o grau de paralelismo.

Exemplo 5: Spill excessivo em disco

Regra de anomalia

A quantidade de dados despejada em disco é maior que a quantidade de dados despejada da memória.

Otimização

Modifique spark.executor.resourceSpec para aumentar a especificação e reduzir o spill em disco.

Exemplo 6: Tarefas long-tail

Regra de anomalia

O tempo de execução da tarefa mais lenta em um estágio é superior a 1,5 vez a mediana do tempo de execução das tarefas desse estágio.

Otimização

  • Defina spark.sql.shuffle.partitions como 2 a 3 vezes o número de núcleos dos executores Spark para que os dados sejam redistribuídos entre diferentes tarefas.

  • Atualize sua lógica de negócios e filtre outliers no conjunto de dados.