Estoy desarrollando una mejora en el marco Spark (http://www.spark-project.org/). Spark es un proyecto de UC Berkeley que hace MapReduce rápidamente en RAM. Spark está construido en Scala.¿Cuál sería una buena aplicación para una versión mejorada de MapReduce que comparte información entre Mappers?
La mejora que estoy construyendo permite que algunos datos se compartan entre los mapeadores mientras están computando. Esto puede ser útil, por ejemplo, si cada uno de los mapeadores está buscando una solución óptima, y todos quieren compartir la mejor solución actual (para eliminar las malas soluciones de manera temprana). La solución puede estar un poco desactualizada a medida que se propaga, pero esto debería acelerar la solución. En general, esto se denomina enfoque de ramificación y límite.
Podemos compartir cantidades cada vez mayores, pero también podemos compartir matrices y diccionarios.
También estamos buscando aplicaciones de aprendizaje automático donde los cartógrafos describen la información del gradiente natural local, y luego se comparte una nueva mejor solución óptima actual entre todos los nodos.
¿Cuáles son algunas otras buenas aplicaciones reales de este tipo de mejora? Qué tipos de aplicaciones reales y útiles pueden beneficiarse de un Mapa Reduzca el cálculo con solo un poco de intercambio de información entre los creadores de mapas. ¿Qué aplicaciones usan MapReduce o Hadoop en este momento, pero son un poco lentas debido a la restricción de independencia de la fase del mapa?
El beneficio puede ser acelerar la fase del mapa o mejorar la solución.
He usado zookeeper para esto antes. –
Hay un documento de investigación reciente llamado "Adaptive MapReduce usando Situation-Aware Mappers" ([PDF] (http://www.edbt.org/Proceedings/2012-Berlin/papers/edbt/a45-vernica.pdf); [slides ] (https://www.ics.uci.edu/~rares/pub/edbt12-vernica-slides.pdf)) que describe un sistema donde los mapeadores se pueden comunicar entre sí a través de un almacén de metadatos distribuido (ZooKeeper). Esto se usa para implementar varias optimizaciones adaptativas de tiempo de ejecución. –