Índice:
- Grande hardware de dados / topologia de rede
- Grande sincronização de dados
- Sistema de arquivos de dados grandes
Vídeo: Combiners - Intro to Hadoop and MapReduce 2024
Além de otimizar o código de aplicativo real com o MapReduce para grandes projetos de dados, você pode usar alguns técnicas de otimização para melhorar a confiabilidade e o desempenho. Eles se dividem em três categorias: topologia de hardware / rede, sincronização e sistema de arquivos.
Grande hardware de dados / topologia de rede
Independente da aplicação, o hardware e as redes mais rápidos provavelmente renderão os tempos de execução mais rápidos para o seu software. Uma vantagem distinta do MapReduce é a capacidade de funcionar em clusters baratos de hardware de commodities e redes padrão. Se você não prestar atenção para onde seus servidores estão fisicamente organizados, você não obterá o melhor desempenho e o alto grau de tolerância de falhas necessário para suportar grandes tarefas de dados.
O hardware da mercadoria geralmente é armazenado em racks no data center. A proximidade do hardware dentro do rack oferece uma vantagem de desempenho ao invés de mover dados e / ou código de rack para rack. Durante a implementação, você pode configurar o seu motor MapReduce para estar ciente e aproveitar essa proximidade.
Mantendo os dados eo código juntos é uma das melhores otimizações para o desempenho do MapReduce. Em essência, quanto mais próximos forem os elementos de processamento de hardware, menos latência você terá que lidar.
Grande sincronização de dados
Como é ineficiente manter todos os resultados do seu mapeamento dentro do nó, os mecanismos de sincronização copiar os resultados de mapeamento para os nós redutores imediatamente após terem concluído para que o 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.
As saídas de redução são escritas diretamente no sistema de arquivos, portanto, elas devem ser projetadas e sintonizadas para obter melhores resultados.
Sistema de arquivos de dados grandes
Sua implementação MapReduce é suportada por um sistema de arquivos distribuídos. A principal diferença entre os sistemas de arquivos locais e distribuídos é a capacidade. Para lidar com a enorme quantidade de informações em um grande mundo de dados, os sistemas de arquivos precisam ser distribuídos em várias máquinas ou nós em uma rede.
As implementações MapReduce dependem de um estilo de distribuição mestre-escravo, onde o nó mestre armazena todos os metadados, direitos de acesso, mapeamento e localização de arquivos e blocos, e assim por diante. Os escravos são nós onde os dados reais são armazenados. Todos os pedidos vão para o mestre e, em seguida, são manipulados pelo nó escravo apropriado.À medida que você contempla o design do sistema de arquivos, você deve considerar o seguinte:
-
Mantenha-o quente: Como você poderia esperar, o nó mestre poderia ser sobrecarregado porque tudo começa lá. Além disso, se o nó mestre falhar, todo o sistema de arquivos é inacessível até o mestre ser restaurado. Uma otimização muito importante é criar um nó mestre de "hot standby" que possa entrar no serviço se ocorrer um problema com o mestre online.
-
Quanto maior, melhor: O tamanho do arquivo também é uma consideração importante. Muitos pacotes pequenos (menos de 100 MB) devem ser evitados. Os sistemas de arquivos distribuídos que suportam os mecanismos MapReduce funcionam melhor quando são preenchidos com um número modesto de arquivos grandes.
-
A visão longa: Como as cargas de trabalho são gerenciadas em lotes, a largura de banda de rede altamente sustentada é mais importante do que os tempos de execução rápida dos mapeadores ou redutores. A abordagem ideal é que o código transmite muitos dados quando ele está lendo e novamente quando é hora de escrever no sistema de arquivos.
-
Mantenha-o seguro: Mas não excessivamente. A adição de camadas de segurança no sistema de arquivos distribuídos irá degradar seu desempenho. As permissões de arquivo estão lá para proteger contra consequências não intencionais, e não com comportamentos maliciosos. A melhor abordagem é assegurar que apenas usuários autorizados tenham acesso ao ambiente do centro de dados e manter o sistema de arquivos distribuídos protegido do lado de fora.