Como otimizar tarefas mapreduce

Além de otimizar o código da aplicação real com MapReduce para projetos de big data, você pode usar algumas técnicas de otimização para melhorar a confiabilidade eo desempenho. Eles se dividem em três categorias: hardware / topologia de rede, sincronização e do sistema de arquivos.

hardware de dados Big / topologia de rede

Independente da aplicação, o hardware e redes mais rápido, provavelmente, produzir os tempos de execução mais rápido para o seu software. Uma vantagem distinta de MapReduce é a capacidade de executar em clusters de baixo custo de hardware commodity e redes padrão. Se você não prestar atenção para onde os servidores estão fisicamente organizado, você não vai conseguir o melhor desempenho e alto grau de tolerância a falhas necessários para apoiar tarefas de big data.

hardware commodity é muitas vezes armazenados em racks no centro de dados. A proximidade do hardware no rack oferece uma vantagem de desempenho em oposição a movimentação de dados e / ou código de rack para rack. Durante a implementação, você pode configurar o seu MapReduce motor para estar atento e aproveitar essa proximidade.

Manter os dados eo código juntos é um dos melhores otimizações para MapReduce desempenho. Em essência, quanto mais próximo os elementos de processamento de hardware são um para o outro, a menos latência você terá que lidar com eles.

Video: Indexing 16: MapReduce

sincronização de dados grande

Como é ineficiente para conter todos os resultados de seu mapeamento dentro do nó, os mecanismos de sincronização copiar os resultados de mapeamento para os gânglios reduzindo imediatamente depois de terem concluído para que o processamento pode começar imediatamente. Todos os valores da mesma chave são enviados para o mesmo redutor, garantindo novamente maior desempenho e melhor eficiência.

Video: From MapReduce to Spark: An Ecosystem Evolves for New User Needs

As saídas de redução são escritos diretamente para o sistema de arquivos, por isso devem ser concebidos e sintonizado para obter melhores resultados.

sistema de arquivo de dados grande



Sua implementação MapReduce é apoiado por um sistema de arquivos distribuídos. A principal diferença entre os sistemas de arquivos locais e distribuídas é capacidade. Para lidar com as enormes quantidades de informação em um mundo de dados grande, sistemas de arquivos precisam ser distribuídos em várias máquinas ou nós em uma rede.

implementações MapReduce contar com um estilo de mestre-escravo de distribuição, onde o mestre nó armazena todos os metadados, de direitos de acesso, de mapeamento e localização de arquivos e blocos, e assim por diante. Os escravos são nós de onde os dados reais são armazenados. Todos os pedidos de ir para o mestre e, em seguida, são tratados pelo nó escravo apropriado. Como você contemplar o desenho do sistema de arquivos, você deve considerar o seguinte:

  • Mantê-lo aquecido: Como você poderia esperar, o nó mestre poderia ficar sobrecarregado, porque tudo começa aí. Além disso, se o nó mestre falhar, todo o sistema de arquivos é inacessível até que o mestre é restaurada. A otimização muito importante é a criação de um nó mestre “warm standby”, que pode saltar em serviço se ocorrer um problema com o mestre online.

  • Quanto maior melhor: tamanho do arquivo também é uma consideração importante. Lotes de arquivos pequenos (menos de 100 MB) devem ser evitados. sistemas de arquivos distribuídos de apoio motores MapReduce funcionam melhor quando são preenchidos com um número modesto de arquivos grandes.

  • A visão de longo prazo: Porque cargas de trabalho são geridos em lotes, largura de banda de rede altamente sustentado é mais importante do que os tempos de execução rápidos dos mapeadores ou redutores. A melhor abordagem é para o código para transmitir grandes quantidades de dados quando está lendo e novamente quando é hora de escrever para o sistema de arquivos.

    Video: Java-MapReduce

  • Mantê-la segura: Mas sem exagero. Adicionando camadas de segurança no sistema de arquivos distribuídos irá degradar o seu desempenho. As permissões de arquivo estão lá para proteger contra consequências não intencionais, comportamento não malicioso. A melhor abordagem é para garantir que somente usuários autorizados tenham acesso ao ambiente de centro de dados e para manter o sistema de arquivos distribuídos protegido do exterior.


Publicações relacionadas