Advento de 2020, dia 30 – Monitoramento e solução de problemas do Apache Spark

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

[ad_1]

[This article was first published on R – TomazTsql, and kindly contributed to R-bloggers]. (Você pode relatar problemas sobre o conteúdo desta página aqui)


Quer compartilhar seu conteúdo em R-bloggers? clique aqui se você tiver um blog, ou aqui se não tiver.

Série de postagens do Azure Databricks:

Ontem, examinamos o ajuste de desempenho para melhorar o uso diário do Spark e do Azure Databricks. E hoje vamos explorar o monitoramento (como começamos no Dia 15) e a solução de problemas para os erros mais comuns ou erros que um usuário no Azure Databricks encontrará.

1. Monitoramento

O Spark no Databricks é relativamente cuidado e pode ser monitorado na UI do Spark. Como o Databricks é uma plataforma encapsulada, de certa forma, o Azure está gerenciando muitos dos componentes para você, de rede a JVM (Java Virtual Machine), sistema operacional de hospedagem e muitos dos componentes do cluster, Mesos, YARN e qualquer outro aplicativo de cluster spark .

Como vimos na postagem do dia 15, você pode monitorar consultas, tarefas, trabalhos, logs do Spark e interface do usuário do Spark no Azure Databricks. Os logs do Spark irão ajudá-lo a identificar o problema que você está encontrando. Também é bom para criar logs de histórico para entender o comportamento do trabalho ou da tarefa ao longo do tempo e para possível solução de problemas futura.

O Spark UI é uma boa maneira visual de monitorar o que está acontecendo com o cluster e oferece um grande valor de métricas para solução de problemas.

Ele também fornece informações detalhadas sobre tarefas do Spark e excelente apresentação visual da execução da tarefa, execução de SQL e execução detalhada de todas as etapas.

Todas as tarefas podem ser visualizadas também como DAG:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

2. Solução de problemas

Abordando a depuração do Spark, deixe-me apresentar algumas causas ou visualizações e sintomas de problemas em seus trabalhos do Spark e no próprio mecanismo do Spark. Há muitos problemas que podem ser explicados, tentarei lidar com alguns deles que podem ser encontrados como uma mensagem de retorno nos blocos de notas do Databricks ou na IU do Spark em geral.

Leia Também  Detectar quando o gerador de número aleatório foi usado

2.1. Trabalho do Spark não iniciado

Esse problema pode aparecer com frequência, especialmente se você for iniciante, mas também pode acontecer quando o Spark está em execução autônomo (não no Azure Databricks).

Sinais e sintomas:
– O trabalho do Spark não começa
– Spark UI não mostra nenhum nó no cluster (exceto o driver)
– Spark UI está relatando informações vagas

Solução potencial:
– O cluster não foi iniciado ou está inicializando,
– Isso geralmente acontece com cluster mal configurado (geralmente ao executar aplicativos Spark e (quase) nunca com Databricks do Azure), seja IP ou rede ou VNet,
– Pode ser um problema de configuração de memória e deve ser reconfigurado nos scripts de inicialização.

2.2. Erro durante a execução do notebook

Durante o trabalho em notebooks em um cluster que já está rodando, pode acontecer que alguma parte do código ou do Spark Job, que antes estava rodando ok, tenha começado a falhar.

Sinais e sintomas:
– um trabalho em um cluster é executado com sucesso em todos os clusters, mas em um falha
– blocos de código no notebook são executados normalmente em sequências, mas uma execução falha
– A tabela HiveSQL ou R / Python Dataframe, que costumava ser criada normalmente, não pode ser criada

Solução potencial:
– verifique se seus dados ainda existem no local esperado ou se os dados ainda estão no mesmo formato de arquivo
– se você estiver executando uma consulta SQL, verifique se a consulta é válida e todos os nomes das colunas estão corretos
– tente percorrer o rastreamento de pilha e tentar descobrir qual componente está falhando

2.3. Cluster sem resposta

Ao executar comandos do notebook ou usar Spark Apps (widgets, etc), você pode obter uma mensagem desse cluster. Este é um erro grave e deve ser

Leia Também  Package lconnect: métricas de conectividade e priorização de patches

Sinais e sintomas:
– o bloco de código não é executado e falha com cargas de respostas JVM
– você recebe uma mensagem de erro, esse cluster não responde
– O trabalho do Spark está em execução, sem retorno ou mensagem de erro.

Solução potencial:
– reinicie o cluster e conecte o notebook a um cluster
– verificar o conjunto de dados quanto a inconsistências, tamanho dos dados (limitações do arquivo carregado ou distribuição dos arquivos por DBFS),
– verifique a compatibilidade das bibliotecas instaladas e a versão do Spark em seu cluster.
– alterar a configuração do cluster de padrão, GPU, ML para LTS. Suporte de longo prazo A instalação do Spark tende a ter maior amplitude de compatibilidade.
– se você estiver usando um cluster de alta simultaneidade, verifique quem e o que eles estão fazendo, se houver um potencial “bloqueio” em algumas tarefas que consomem muitos recursos.

2.4. Falha ao carregar dados

Carregar dados é provavelmente a tarefa mais importante no Azure Databricks. E pode haver muitas maneiras em que os dados não podem ser apresentados no notebook.

Sinais e sintomas:
– os dados são armazenados no armazenamento de blob e não podem ser acessados ​​ou carregados no Databricks
– os dados estão demorando muito para carregar, e eu interrompo o processo de carregamento
– os dados devem estar no local, mas não é

Solução potencial:
– se você estiver lendo os dados do armazenamento de blobs do Azure, verifique se os Databricks do Azure têm todas as credenciais necessárias para acesso
– carregar arquivos de dados largos (com mais de 1000 colunas) pode causar alguns problemas com o Spark. Carregue o esquema primeiro e crie um DataFrame com Scala e depois insira os dados no quadro
– verifique se os dados persistentes (DBFS) estão no local correto e no formato de dados esperado. Também pode acontecer que diferentes arquivos de amostra sejam usados, que neste caso podem estar faltando no caminho DBFS padrão
– DataFrame ou Dataset foi criado em um idioma diferente daquele de onde você está tentando lê-lo. As linguagens são superiores à API estruturada e devem ser intercambiáveis, portanto, você deve verificar se há algumas inconsistências em seu código.

Leia Também  Fácil criação de API para cientistas de dados com R

2,5. Nulo inesperado nos resultados

Sinais e sintomas:
– valores nulos inesperados nas transformações do Spark
– trabalhos programados que costumavam funcionar não funcionam mais ou não produzem mais o resultado correto

Solução potencial:
– pode ser a causa de dados subjacentes que tiveram o formato alterado,
– use o acumulador para executar e tentar contar o número de linhas (ou registros ou observações) ou tentar analisar ou processar o erro onde uma linha (registro / observação) está faltando,
– verificar e garantir que as transformações nos dados retornem um plano de consulta SQL válido; verifique se há algumas conversões de tipo de dados implícitas (um “15” é uma string e não um número, respectivamente) e o Spark pode retornar um resultado estranho ou nenhum resultado.

2.6. Agregações lentas

Este é um problema comum e também o mais difícil de resolver. Geralmente acontece devido à carga de trabalho distribuída de maneira desigual no cluster ou devido a falha de hardware (um disco / VM não responde).

Sinais e sintomas:
– tarefa lenta por chamada .groupBy ()
– após a agregação de dados, os trabalhos ainda são lentos

Solução potencial:
– tente alterar o particionamento dos dados, para ter menos dados por partição.
– tente alterar a chave de partição em seu conjunto de dados
– verifique se sua instrução SELECT está ganhando desempenho das partições
– se você estiver usando RDD, tente criar um DataFrame ou Conjunto de Dados para fazer as agregações mais rapidamente

Amanhã terminaremos com a série examinando as fontes, documentações e os próximos passos de aprendizagem e deve ser uma boa maneira de encerrar a série.

O conjunto completo de código e o Notebook estão disponíveis no repositório Github.

Feliz codificação e mantenha-se saudável!



[ad_2]

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br