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:
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.
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?