¿Cuáles son algunos escenarios para los que MPI es un mejor ajuste que MapReduce?


Por lo que entiendo, MPI me da mucho más control sobre cómo exactamente se comunicarán los diferentes nodos en el clúster.

En MapReduce/Hadoop, cada nodo hace algún cálculo, intercambia datos con otros nodos y luego recopila su partición de resultados. Parece simple, pero ya que puede iterar el proceso, incluso algoritmos como K-means o PageRank encajan bastante bien en el modelo. En un sistema de archivos distribuido con localidad de programación, el rendimiento es aparentemente bueno. En comparación, MPI me da un control explícito sobre cómo los nodos se envían mensajes entre sí.

¿Puede alguien describir un escenario de programación de clústeres donde el modelo MPI más general es una ventaja obvia sobre el modelo MapReduce más simple?

Author: Igor ostrovsky, 2009-10-07

5 answers

Casi cualquier código científico differences diferencias finitas, elementos finitos, etc. Lo que lleva a la respuesta circular, que cualquier programa distribuido que no se mapee fácilmente a MapReduce se implementaría mejor con un modelo MPI más general. No estoy seguro de que eso sea de mucha ayuda para ti, votaré en contra de esta respuesta justo después de publicarla.

 24
Author: High Performance Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-17 09:03:33

Aunque esta pregunta ha sido contestada, me gustaría añadir/reiterar un punto muy importante.

MPI es el más adecuado para problemas que requieren una gran cantidad de comunicación entre procesos.

Cuando los datos se vuelven grandes (petabytes, ¿alguien?), y hay poca comunicación interproceso, MPI se convierte en un dolor. Esto es así porque los procesos pasarán todo el tiempo enviándose datos entre sí (el ancho de banda se convierte en un factor limitante) y sus CPU permanecerán inactivas. Tal vez un par el mayor problema es leer todos esos datos.

Esta es la razón fundamental detrás de tener algo como Hadoop. Los Datos también tienen que ser distribuidos - Sistema de Archivos Distribuido Hadoop!

Para decir todo esto en breve, MPI es bueno para el paralelismo de tareas y Hadoop es bueno para el Paralelismo de datos.

 19
Author: Gitmo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-06 15:32:36

La mejor respuesta que se me ocurrió es que MPI es mejor que MapReduce en dos casos:

  1. Para tareas cortas en lugar de procesamiento por lotes. Por ejemplo, MapReduce no se puede usar para responder a consultas individuales: se espera que cada trabajo tome minutos. Creo que en MPI, puede construir un sistema de respuesta de consultas donde las máquinas se envían mensajes entre sí para enrutar la consulta y generar la respuesta.

  2. Para trabajos los nodos necesitan comunicarse más de lo que soportan los trabajos MapReduce iterados, pero no demasiado para que los gastos generales de comunicación hagan que el cálculo sea poco práctico. Sin embargo, no estoy seguro de la frecuencia con que ocurren estos casos en la práctica.

 1
Author: Igor ostrovsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-11 23:51:26

Cuando el cálculo y los datos que está utilizando tienen comportamientos irregulares que se traducen principalmente en muchos mensajes entre objetos, o cuando necesita accesos a nivel de hardware de bajo nivel, por ejemplo, RDMA, entonces MPI es mejor. En algunas respuestas que se ven aquí se menciona la latencia de las tareas o el modelo de consistencia de memoria, frameworks como Spark o Modelos de Actores como AKKA han demostrado que pueden competir con MPI. Finalmente uno debe considerar que MPI tiene la ventaja de ser durante años el principal base para el desarrollo de las bibliotecas necesarias para los cálculos científicos (Estas son las partes faltantes más importantes que faltan en los nuevos marcos de trabajo que utilizan modelos DAG/MapReduce).

Con todo, creo que los beneficios que los modelos MapReduce/DAG están trayendo a la mesa como los administradores de recursos dinámicos, y la computación de tolerancia a fallas harán que sean factibles para los grupos de computación científica.

 1
Author: M.Rez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-16 17:32:03

Espero que MPI venza a MapReduce fácilmente cuando la tarea está iterando sobre un conjunto de datos cuyo tamaño es comparable con la caché del procesador, y cuando la comunicación con otras tareas es frecuentemente requerida. Muchos enfoques de paralelización de descomposición de dominio científico se ajustan a este patrón. Si MapReduce requiere procesamiento secuencial y comunicación, o finalización de procesos, entonces el beneficio de rendimiento computacional de lidiar con un problema del tamaño de la caché se pierde.

 0
Author: mabraham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-30 07:14:31