Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este artigo descreve como otimizar o gerenciamento de memória do cluster Apache Spark para obter o melhor desempenho no Azure HDInsight.
Visão geral
O Spark opera colocando dados na memória. Portanto, gerenciar recursos de memória é um aspeto fundamental para otimizar a execução de trabalhos do Spark. Há várias técnicas que você pode aplicar para usar a memória do cluster de forma eficiente.
- Prefira partições de dados menores e leve em conta o tamanho, os tipos e a distribuição dos dados em sua estratégia de particionamento.
- Considere a
Kryo data serializationmais recente e eficiente , em vez da serialização Java padrão. - Prefira usar YARN, pois separa
spark-submitpor lote. - Monitore e ajuste as definições de configuração do Spark.
Para sua referência, a estrutura de memória do Spark e alguns parâmetros de memória do executor chave são mostrados na próxima imagem.
Considerações sobre memória no Spark
Se você estiver usando o Apache Hadoop YARN, o YARN controlará a memória usada por todos os contêineres em cada nó do Spark. O diagrama a seguir mostra os objetos principais e suas relações.
Para lidar com mensagens de 'falta de memória', tente:
- Analise os embaralhamentos de gerenciamento do DAG. Reduza reduzindo do lado do mapa, pré-particione (ou bucketize) os dados de origem, maximize os embaralhamentos únicos e reduza a quantidade de dados enviados.
- Prefira
ReduceByKeycom seu limite de memória fixa paraGroupByKey, que fornece agregações, janelas e outras funções, mas tem um limite de memória ilimitada. - Prefira
TreeReduce, que faz mais trabalho nos executores ou partições, paraReduce, que faz todo o trabalho no driver. - Use DataFrames em vez dos objetos RDD de nível inferior.
- Crie tipos complexos que encapsulem ações, como "Top N", várias agregações ou operações de janela.
Para obter etapas adicionais de solução de problemas, consulte exceções OutOfMemoryError para Apache Spark no Azure HDInsight.