Monitorar e otimizar uma solução de análise
03. Monitoramento de Spark e notebooks
Um notebook pode passar muito tempo esperando uma sessão, preparando bibliotecas ou executando tarefas. A duração total não identifica qual dessas fases domina. O monitoramento Spark conecta aplicação, jobs, stages e tarefas às partições realmente processadas.
Um notebook pode passar muito tempo esperando uma sessão, preparando bibliotecas ou executando tarefas. A duração total não identifica qual dessas fases domina. O monitoramento Spark conecta aplicação, jobs, stages e tarefas às partições realmente processadas.
Da sessão à tarefa
A sessão fornece o contexto da aplicação; ações podem gerar jobs, que se dividem em stages e tarefas. Uma tarefa trabalha sobre uma partição. Essa hierarquia permite sair do notebook que parece lento e chegar ao conjunto de tarefas ou à operação responsável.
Em sessões compartilhadas, filtre os jobs do notebook investigado para não atribuir a ele o consumo de outro. Separe admissão, início da sessão e execução. Um notebook que expirou aguardando sessão não executou necessariamente a célula suspeita.
Um notebook que contém várias ações pode gerar jobs distintos, e cada job pode ter etapas separadas por shuffle. Identificar apenas a célula é insuficiente quando ela dispara trabalho complexo. Siga a hierarquia até a etapa dominante e compare tarefas equivalentes. Em uma sessão com múltiplos notebooks, use o filtro correspondente para delimitar a investigação. Sem essa separação, um pico de consumo de outro notebook pode ser atribuído à transformação errada e orientar uma alteração sem relação com a causa.
Distribuição e skew
Compare duração, volume de entrada e shuffle entre tarefas da mesma etapa. Quando poucas tarefas trabalham muito mais que as demais, pode haver skew: distribuição desigual de chaves ou partições. A maioria concluída não significa que a etapa está quase terminando se a partição restante concentra grande parte dos dados.
Quantidade de partições não é quantidade de registros. O Adaptive Query Execution pode reorganizar partições, inclusive juntar pequenas, sem descartar dados. Uma redução no número de tarefas exige examinar o plano e o volume, não presumir perda de linhas.
Continue lendo de graça
O capítulo inteiro está liberado no plano gratuito
Criar conta leva menos de um minuto e não pede cartão. Você destrava o texto completo, o mapa mental, o PDF para estudar off-line e ainda resolve questões inéditas todo dia.
Leu o resumo? Agora pratique.
São 40 questões inéditas de Monitoramento de Spark e notebooks, todas comentadas alternativa por alternativa.
Você volta para este capítulo depois de criar a conta.
Fontes consultadas
- https://learn.microsoft.com/en-us/fabric/data-engineering/spark-detail-monitoring
- https://learn.microsoft.com/en-us/fabric/data-engineering/spark-monitoring-overview
- https://learn.microsoft.com/en-us/fabric/data-engineering/spark-monitor-debug
- https://learn.microsoft.com/en-us/fabric/data-engineering/spark-monitoring-api-overview
- https://spark.apache.org/docs/3.5.7/sql-performance-tuning.html
- https://learn.microsoft.com/en-us/fabric/data-engineering/spark-job-concurrency-and-queueing
- https://spark.apache.org/docs/3.5.7/monitoring.html
- https://spark.apache.org/docs/3.5.7/rdd-programming-guide.html
- https://spark.apache.org/docs/3.5.7/tuning.html