Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo discute 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, o gerenciamento de recursos de memória é um aspecto fundamental da otimização da execução de trabalhos do Spark. Há várias técnicas que podem ser aplicadas para usar a memória do cluster de maneira eficiente.
- Preferir partições de dados menores e considerar o tamanho, os tipos e a distribuição de dados na sua estratégia de particionamento.
- Considere a mais recente e mais eficiente
Kryo data serializationao invés da serialização Java padrão. - Prefira usar YARN, pois ele separa
spark-submitpor lote. - Monitorar e sintonizar as definições da configuração do Spark.
Para sua referência, a estrutura da memória do Spark e alguns parâmetros da memória do executor chave são mostrados na próxima imagem.
Considerações de memória do Spark
Se você estiver usando o YARN do Apache Hadoop, o YARN controlará a memória usada por todos os contêineres em cada nó do Spark. O diagrama a seguir mostra os objetos de chave e os respectivos relacionamentos.
Para endereçar mensagens de "memória insuficiente", tente:
- Revisar as ordens aleatórias de armazenamento do DAG. Reduzir com a redução do lado do mapa, fazer a pré-partição (ou bucket) dos dados de origem, maximizar as ordens aleatórias simples e reduzir a quantidade de dados enviados.
- Prefira
ReduceByKeycom seu limite de memória fixo aGroupByKey, que fornece agregações, janelas e outras funções, mas que tem limite de memória ilimitado. - Preferir
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.
- Criar ComplexTypes que encapsulam ações, como "Top N", várias agregações ou operações de janelas.
Para obter mais etapas de solução de problemas, consulte exceções OutOfMemoryError para Apache Spark no Azure HDInsight.