¿Pueden los algoritmos de reducción de mapas escritos para MongoDB ser portados a Hadoop más tarde?

11

En nuestra empresa, tenemos una base de datos MongoDB que contiene una gran cantidad de datos no estructurados, en los que necesitamos ejecutar algoritmos de reducción de mapas para generar informes y otros análisis. Tenemos dos enfoques para seleccionar para implementar los análisis requeridos:

  1. Un enfoque es extraer los datos de MongoDB a un clúster Hadoop y hacer el análisis completamente en la plataforma Hadoop. Sin embargo, esto requiere una inversión considerable para preparar la plataforma (software y hardware) y educar al equipo para trabajar con Hadoop y escribir tareas de reducción de mapas para ella.

  2. Otro enfoque es simplemente poner nuestro esfuerzo en diseñar los algoritmos de reducción de mapas y ejecutar los algoritmos en las funcionalidades de reducción de mapas de MongoDB. De esta manera, podemos crear un prototipo inicial del sistema final que puede generar los informes. Sé que las funcionalidades de reducción de mapas de MongoDB son mucho más lentas en comparación con Hadoop, pero actualmente los datos no son tan grandes que lo convierten en un cuello de botella, al menos no durante los próximos seis meses.

La pregunta es, utilizando el segundo enfoque y escribiendo los algoritmos para MongoDB, ¿pueden ser luego trasladados a Hadoop con poca modificación y rediseño de algoritmos? MongoDB solo admite JavaScript, pero las diferencias de lenguaje de programación son fáciles de manejar. Sin embargo, ¿hay alguna diferencia fundamental en el modelo de reducción de mapas de MongoDB y Hadoop que pueda obligarnos a rediseñar algoritmos sustancialmente para portarlos a Hadoop?

Amir Ali Akbari
fuente

Respuestas:

4

Definitivamente habrá una tarea de traducción al final si realiza un prototipo utilizando solo mongo.

Cuando ejecuta una tarea MapReduce en mongodb, tiene la fuente de datos y la estructura incorporada. Cuando eventualmente convierte a hadoop, sus estructuras de datos pueden no verse iguales. Puede aprovechar el conector mongodb-hadoop para acceder a los datos de mongo directamente desde hadoop, pero eso no será tan sencillo como podría pensar. El tiempo para descubrir cómo hacer la conversión de manera más óptima será más fácil de justificar una vez que tenga un prototipo, IMO.

Si bien deberá traducir las funciones de mapreduce, el pseudocódigo básico debería aplicarse bien a ambos sistemas. No encontrará nada que se pueda hacer en MongoDB que no se pueda hacer usando Java o que sea significativamente más complejo de hacer con Java.

Steve Kallestad
fuente
5

Puede usar algoritmos de reducción de mapas en Hadoop sin programarlos en Java. Se llama streaming y funciona como tubería de Linux. Si cree que puede portar sus funciones para leer y escribir en la terminal, debería funcionar bien. Aquí hay una publicación de blog de ejemplo que muestra cómo usar las funciones de reducción de mapas escritas en Python en Hadoop.

Damian Melniczuk
fuente
1
Eso todavía tendría a Mongo haciendo el procesamiento, lo que creo que la pregunta debe evitarse en la solución final. Dándote un voto positivo de todos modos por traer un conocimiento importante.
Steve Kallestad
4

También puede crear una conexión MongoDB-Hadoop .

phyrox
fuente
Gracias por tu publicación, pero ¿puedes incluir aquí una descripción general de la solución vinculada? El enlace puede tener la respuesta a la pregunta, pero se desaconsejan las respuestas de solo enlace.
Rubens