¿Cuáles son algunas buenas implementaciones de MapReduce para gráficos, lo que significa un marco de gráficos de código abierto altamente distribuido y de uso general, y qué tan bien funcionaron para usted en la práctica?

Antes de mirar implementaciones individuales, es útil limitar la búsqueda identificando algunas características esenciales de los marcos de procesamiento de gráficos distribuidos. Aquí hay tres importantes:

  • Eficiente cálculo iterativo. Los algoritmos gráficos tienden a involucrar múltiples iteraciones sobre los mismos datos. Es posible expresarlos como una serie de trabajos de MapReduce, pero la única forma de comunicarse entre dos iteraciones sucesivas es escribir el estado del gráfico en un almacenamiento estable, como HDFS. Esto incurre en gastos generales de E / S de disco y serialización. Un marco gráfico no debería tener que pagar esta penalidad.
  • Tolerancia a fallos. Las aplicaciones a gran escala deben ser tolerantes a fallas, pero los marcos que incluyen Parallel BGL y CGMgraph (y GraphLab) no manejan las fallas automáticamente. La forma estándar de implementar la tolerancia a fallas es verificar periódicamente el estado mutable del punto de control, y la mayoría de los marcos siguientes utilizan esta técnica.
  • Modelo de programación orientada a gráficos. Hay muchos marcos de uso general para la informática distribuida, pero escribir algoritmos gráficos en ellos introduce una complejidad innecesaria. Los marcos de gráficos deben ofrecer abstracciones específicas que faciliten el trabajo con gráficos.

A continuación, presentamos algunos marcos de procesamiento de gráficos de código abierto que ofrecen estas características. La mayoría de ellos siguen el modelo paralelo sincrónico masivo, donde los vértices se envían mensajes entre sí en una serie de iteraciones llamadas superpasos.

  • Giraph [1], una implementación de Java BSP que se ejecuta en clústeres Hadoop existentes y proporciona tolerancia a fallas tanto para los trabajadores como para el maestro que usa ZooKeeper. Giraph salió de Yahoo! y ahora es un proyecto de Apache Incubator.
  • GraphLab [2, 3], un modelo de programación asíncrono en C ++ de Carnegie Mellon.
  • Phoebus [4], una implementación de Erlang BSP que puede usar HDFS para el almacenamiento.
  • Golden Orb [5], otra implementación de Java BSP en Hadoop.
  • Signal / Collect [6], una implementación de Scala BSP de la Universidad de Zurich. Signal / Collect también admite extensiones, incluido un modo asíncrono.
  • Actualización: GraphX [16] es un nuevo marco de procesamiento de gráficos integrado en Spark que permite ver los mismos datos como un gráfico y como tablas. Viene incluido con Spark 0.9. (Estoy en el equipo GraphX).

Finalmente, aquí hay algunos sistemas de propósito general que podrían ser una buena opción para el procesamiento de gráficos:

  • Spark [7], un marco Scala de UC Berkeley que tiene como objetivo equilibrar la eficiencia y la tolerancia a fallas al proporcionar colecciones inmutables, distribuidas y en memoria que recuerdan cómo se crearon y pueden repararse automáticamente. Bagel [8] fue una implementación temprana de BSP además de Spark, y GraphX ​​[16] ahora es la forma canónica de hacer procesamiento gráfico en Spark.
  • Piccolo [9], un sistema C ++ de NYU que proporciona una tabla compartida en memoria con puntos de verificación para tolerancia a fallas y acumulación para concurrencia. Hay un ejemplo de implementación de PageRank en Piccolo [10].
  • HaLoop [11], una versión de Hadoop de la Universidad de Washington que se ha modificado y optimizado para admitir la iteración. Aquí está el PageRank en HaLoop [12].
  • Twister [13], otro tiempo de ejecución iterativo de MapReduce de la Universidad de Indiana. Aquí está el PageRank en Twister [14].
  • Ciel [15], un sistema Python que, junto con el lenguaje Skywriting, proporciona una variedad de operadores de flujo de datos y maneja la tolerancia a fallas de manera similar a como lo hace Spark, aunque sin la ventaja de rendimiento de mantener los datos en la memoria en todos los trabajos.

[1] Giraph: http://incubator.apache.org/giraph/
[2] GraphLab: http://graphlab.org/
[3] Modelo de programación GraphLab: http://graphlab.org/abstractiono…
[4] Febo: https://github.com/xslogic/phoebus
[5] Golden Orb: http://www.goldenorbos.org/
[6] Señal / Recopilar: http://code.google.com/p/signal-…
[7] Spark: http://spark-project.org/
[8] Bagel (BSP en Spark): https://github.com/mesos/spark/w…
[9] Piccolo: http://piccolo.news.cs.nyu.edu/
[10] PageRank en Piccolo: http://kermit.news.cs.nyu.edu/br…
[11] HaLoop: http://code.google.com/p/haloop/
[12] PageRank en HaLoop: http://code.google.com/p/haloop/…
[13] Twister: http://www.iterativemapreduce.org/
[14] PageRank en Twister: http: //www.iterativemapreduce.or…
[15] Ciel: http://www.cl.cam.ac.uk/research…
[16] GraphX: Guía de programación GraphX

Creo que este método evita el uso de MapReduce, por razones que explican. Sin embargo, es un método de hacer cálculos en gráficos de manera distribuida: Pregel , de Google. http://portal.acm.org/citation.c

Actualización: hay un tema de Pregel en Quora.

Sonal, Ankur y otros han proporcionado excelentes respuestas hasta ahora. Recomiendo humildemente la siguiente adición singular:

https://www.cs.purdue.edu/homes/

Esta referencia describe un solucionador QR alto y delgado (TSQR) en mapreduce.

Dado el papel fundamental que tiene la teoría espectral de la matriz de Laplacia e Incidencia en la caracterización de los gráficos, http://www.cs.yale.edu/homes/spi …, la capacidad de factorizarlos en forma de Cholesky, a escala, es una contribución importante.

Tenga en cuenta que el código de reducción de mapas TSQR anterior no es tanto un “marco de código abierto” sino simplemente una herramienta más en el carcaj ……

More Interesting

¿Cuál fue el impacto económico total de la investigación en Xerox parc en la década de 1970?

¿Es importante tener experiencia en investigación específica de CS para admisiones a escuelas de posgrado de CS?

¿Cuáles son las tareas diarias de un investigador de inteligencia artificial?

¿Puedo tomarme un mes para escribir una encuesta de investigación en ciencias de la computación?

En el problema del embalaje del contenedor (BPP), ¿por qué el primer ajuste decreciente (FFD) es más eficiente que el primer ajuste creciente (FFI)?

¿Qué computadoras portátiles usan los grupos de investigación en visión artificial / AR? MacBooks o Alienwares? ¿Cuáles son las especificaciones?

Tengo interés en la programación de computadoras, algoritmos y estructuras de datos. ¿Puedo publicar algún trabajo de investigación en estas áreas? En caso afirmativo, ¿qué debo hacer?

¿Por qué es una red neuronal, y en general una red profunda, no convexa?

¿Cómo es trabajar en un laboratorio de investigación de primer nivel?

¿Cuáles son algunos trabajos de investigación de lectura obligatoria sobre teoría de juegos?

¿Qué han estado haciendo los millones de informáticos e ingenieros durante el período de 1996 a 2015? ¿Qué han logrado?

¿Cuáles son algunos lenguajes dinámicos de grado de investigación?

¿Cuáles son algunos otros temas de investigación en inteligencia artificial además de la máquina / aprendizaje profundo?

¿Cuáles son algunas de las lecturas obligatorias (libros, trabajos de investigación, blogs) para sistemas operativos?

¿Cuáles son algunos de los problemas de investigación más interesantes en el campo de los sistemas de información?