Os algoritmos de redução de mapa criados para o MongoDB podem ser portados para o Hadoop posteriormente?

11

Em nossa empresa, temos um banco de dados MongoDB contendo muitos dados não estruturados, nos quais precisamos executar algoritmos de redução de mapa para gerar relatórios e outras análises. Temos duas abordagens para selecionar para implementar as análises necessárias:

  1. Uma abordagem é extrair os dados do MongoDB para um cluster Hadoop e fazer a análise completamente na plataforma Hadoop. No entanto, isso requer um investimento considerável na preparação da plataforma (software e hardware) e na educação da equipe para trabalhar com o Hadoop e gravar tarefas de redução de mapa.

  2. Outra abordagem é apenas colocar nosso esforço no projeto dos algoritmos de redução de mapa e executar os algoritmos nas funcionalidades de redução de mapa do MongoDB. Dessa forma, podemos criar um protótipo inicial do sistema final que pode gerar os relatórios. Eu sei que as funcionalidades de redução de mapa do MongoDB são muito mais lentas em comparação com o Hadoop, mas atualmente os dados não são tão grandes que o tornam um gargalo ainda, pelo menos não nos próximos seis meses.

A questão é que, usando a segunda abordagem e escrevendo os algoritmos para o MongoDB, eles podem ser posteriormente transportados para o Hadoop com poucas modificações necessárias e novo design de algoritmos? O MongoDB suporta apenas JavaScript, mas as diferenças na linguagem de programação são fáceis de lidar. No entanto, existem diferenças fundamentais no modelo de redução de mapa do MongoDB e Hadoop que podem nos forçar a redesenhar algoritmos substancialmente para portar para o Hadoop?

Amir Ali Akbari
fonte

Respostas:

4

Definitivamente, haverá uma tarefa de tradução no final se você criar um protótipo usando apenas o mongo.

Quando você executa uma tarefa MapReduce no mongodb, ela possui a fonte e a estrutura de dados incorporadas. Quando você eventualmente se converte no hadoop, suas estruturas de dados podem não ter a mesma aparência. Você pode aproveitar o conector mongodb-hadoop para acessar dados do mongo diretamente do hadoop, mas isso não será tão simples quanto você imagina. O tempo para descobrir como exatamente fazer a conversão da melhor maneira possível será mais fácil de justificar quando você tiver um protótipo em prática, o IMO.

Embora você precise converter funções de mapreduce, o pseudocódigo básico deve se aplicar bem aos dois sistemas. Você não encontrará nada que possa ser feito no MongoDB que não possa ser feito usando Java ou que seja significativamente mais complexo que o Java.

Steve Kallestad
fonte
5

Você pode usar algoritmos de redução de mapa no Hadoop sem programá-los em Java. É chamado de streaming e funciona como uma tubulação Linux. Se você acredita que pode portar suas funções para ler e gravar no terminal, deve funcionar bem. Aqui está um post de blog que mostra como usar as funções de redução de mapa escritas em Python no Hadoop.

Damian Melniczuk
fonte
1
Isso ainda teria o mongo fazendo o processamento, que eu acredito que a questão deve ser evitada na solução final. De qualquer forma, dando a você um voto positivo por trazer uma parte importante de conhecimento.
Steve Kallestad
4

Você também pode criar uma conexão MongoDB-Hadoop .

phyrox
fonte
Obrigado por sua postagem, mas você pode incluir aqui uma descrição geral da solução vinculada? O link pode ter a resposta para a pergunta, mas as respostas somente do link são desencorajadas.
Rubens