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

Tan lejos como yo lo entiendo, MPI me da mucho más control sobre cómo exactamente los diferentes nodos en el clúster de comunicarse.

En MapReduce/Hadoop, cada nodo hace algunos cálculos, el intercambio de datos con otros nodos y, a continuación, se intercala su partición de los resultados. Parece simple, pero ya que usted puede repetir el proceso, incluso algoritmos como K-means o PageRank de ajuste del modelo bastante bien. En un sistema de archivos distribuido con la localidad de programación, el rendimiento es aparentemente buena. En comparación, MPI me da el control explícito sobre cómo nodos enviar mensajes el uno al otro.

Puede alguien describir un clúster de programación escenario donde el más general MPI modelo es una evidente ventaja sobre el más sencillo modelo MapReduce?

5 Kommentare

  1. 26

    Casi cualquier código científico — diferencias finitas, elementos finitos, etc. Que tipo de conduce a la circular de respuesta, que cualquier programa distribuido que no asignar fácilmente a MapReduce sería mejor implementado con un carácter más general MPI modelo. No seguro que es de mucha ayuda, voy a downvote esta respuesta de la derecha después de que los publique.

    • Oh, yo no puedo downvote mis propias respuestas, podría alguien más que para mí.
    • Gracias, Mark (no es necesario downvote). ¿Quiere usted decir que los algoritmos iterativos son más eficientes en MPI, ya que en MapReduce que tiene que ser implementado con una secuencia de puestos de trabajo? Al parecer, MapReduce tiene un rendimiento aceptable, al menos para algunos algoritmos iterativos.
    • De verdad que no. Yo estaba pensando en cálculos como el de las diferencias finitas solucionadores de problemas, en la que los procesos individuales (en los procesadores individuales) equipo sobre una parte del total de dominio, a continuación, el intercambio de halo información, a continuación, llevar a la informática. Me es difícil ver cómo esto podría mapa de MapReduce.
    • En MapReduce, es implementado por varios trabajos. Cada trabajo MapReduce es de la forma: calcular resultados, a continuación, el intercambio de ellos. Varios puestos de trabajo puede implementar múltiples «intercambios». Con la localidad de la programación, la próxima iteración de puestos de trabajo está programada de manera que cada tarea lee los datos que se escriben en el nodo local por una tarea en el trabajo anterior, por lo que el costo de múltiples rondas de puestos de trabajo es reducido.
    • Hmmm, me voy a tener que buscar un poco más de cerca en MapReduce. Sin embargo, una fuente de reducción del rendimiento con MapReduce puede ser la estricta secuencia de cálculo con la comunicación; con MPI tratamos muy duro (por lo general sin mucho éxito) a la superposición de ellos.
    • Los algoritmos iterativos son finas con un marco de MapReduce, por ejemplo, «este trabajo se ejecute en el trabajo anterior de los resultados hasta que se cumpla una condición o nos decidimos a dar para arriba». Hay trabajo de esquemas de control para Hadoop que resumen este lejos detrás de un lenguaje de consulta. Lo que el mapa-reducir el paradigma no es la comunicación entre nodos – no «empieza a disminuir cuando se han encontrado resultados entre todos los miembros de la comunidad». Así que sí, no hay superposición o saltarse una necesaria de las naciones unidas mapper porque otra encontrado lo que necesitaba.
    • La superposición de comunicación con el cálculo es sobre todo un mito. Caro redes pueden hacerlo (que uso DMA), pero normalmente la CPU está involucrado con el embalaje de los buffers. Aún no tenemos desbloqueo de los colectivos (a pesar de que esto podría ir en MPI-3), que es el caso de uso donde hay un montón de cálculo podría ser significativamente a cabo. MPI es mucho más general y de mayor rendimiento del modelo, MapReduce, ofrece una buena abstracción con mejor tolerancia a fallos para los casos de uso, donde el «paralelo» de parte del algoritmo es casi trivial.

  2. 22

    Aunque, esta pregunta ha sido respondida, 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 hace más grande (petabytes, ¿alguien?), y hay poca comunicación entre procesos, MPI se convierte en un dolor. Esto es así porque los procesos se va a pasar todo el tiempo de envío de datos a cada uno de los otros (ancho de banda se convierte en un factor limitante) y su Cpu permanecerá inactivo. Quizás el mayor problema es la lectura de todos los datos.

    Esta es la razón fundamental detrás de tener algo como Hadoop. Los Datos también tiene que ser distribuido Hadoop Distributed File System!

    Decir todo esto en el corto, MPI es bueno para el paralelismo de tareas y Hadoop es bueno para el Paralelismo de Datos.

    • Esto es algo inexacto. Un enfoque principal de MPI es de dominio de la descomposición de los algoritmos, altamente datos en paralelo de dominio, pero con algún tipo de comunicación entre los subdominios. Los datos pueden ser almacenados localmente con MPI así. MPI es bueno cuando el patrón de comunicación tiene algunos localidad y en cualquier momento que usted necesita de baja latencia de las reducciones. MapReduce/Hadoop es buena cuando la tolerancia a fallos es más importante que el rendimiento absoluto.
  3. 1

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

    1. Para tareas cortas en lugar de procesamiento por lotes. Por ejemplo, MapReduce no puede ser utilizada para responder a las consultas individuales – cada trabajo se espera tener minutos. Creo que en MPI, usted puede construir un sistema de respuesta a consultas donde las máquinas enviar mensajes el uno al otro a la ruta de la consulta y generar la respuesta.

    2. Para trabajos de nodos de la necesidad de comunicar más de lo que reiteró trabajos de MapReduce de apoyo, pero no demasiado para que la comunicación de los gastos generales realizar el cálculo práctico. No estoy seguro de cuántas veces estos casos ocurren en la práctica, sin embargo.

    • mapa de reducir las tareas pueden tomar milisegundos demasiado, no hay ningún requisito para decirles que deben tener minutos
  4. 1

    Espero que MPI beats MapReduce fácilmente cuando la tarea es iterar sobre un conjunto de datos cuyo tamaño es comparable con la caché del procesador, y cuando la comunicación con otras tareas con frecuencia es necesario. Un montón de científicos de dominio-descomposición de paralelización de los enfoques se ajustan a este patrón. Si MapReduce requiere un procesamiento secuencial y la comunicación, o el fin de los procesos, entonces el rendimiento de cálculo de beneficios de tratar con un caché problema de tamaño se pierde.

  5. 1

    Cuando el cálculo y datos que está utilizando tiene comportamientos irregulares que en su mayoría se traduce a muchos de mensaje muertes entre los objetos, o cuando se necesita de hardware de bajo nivel nivel de accesos por ejemplo, RDMA, a continuación, MPI es mejor. En algunas de las respuestas que usted ve aquí la latencia de las tareas o modelo de consistencia de memoria se menciona, marcos de trabajo como Chispa o Actor Modelos como el AKKA han demostrado que pueden competir con MPI. Finalmente se debe considerar que el MPI tiene la ventaja de ser durante años, la principal base para el desarrollo de las bibliotecas necesarias para cálculos científicos (Esto son los más importantes que faltan partes que faltan a partir de nuevos marcos utilizando DAG/MapReduce Modelos).

    Con todo, creo que los beneficios que MapReduce/DAG modelos están trayendo a la mesa como la dinámica de los administradores de recursos, y la tolerancia a errores de cálculo hará hacerlas viables para la computación científica de los grupos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea