Microsoft Research está desarrollando una nueva plataforma para el proceso de datos en paralelo llamada Naiad, el cual es un ambiente de programación que utiliza un nuevo enfoque: el correr los programas en grandes conjuntos de datos. La meta es hallar la manera más rápida de analizar bloques masivos de información. Naiad se describe como una plataforma incremental, iterativa, e interactiva de computación de datos en paralelo, que está siendo desarrollada por los laboratorios de investigación de Microsoft en el valle del silicio.
Este proyecto nace a partir de la experiencia entre los investigadores de Dryad y DryadLINQ, que son dos proyectos de Microsoft Research que se usan para procesar grandes cantidades de datos en C# en máquinas que están en clusters. Dryad corre programas de forma secuencial en paralelo, con la computación en paralelo organizada como una gráfica acícilica con los programas en ejecución formando los vértices de la gráfica, mientras los ejes son los canales de comunicación entre dichos programas. DryadLINQ es el compilador que traduce los programas LINQ para computación distribuida que puede correr en clusters de PCs.
La experiencia con este par de proyectos mostró que muchos algoritmos de procesamiento masivo de datos contienen loops y que estos ciclos son dependientes de los datos, que iteratúan hasta que la respuesta se vuelve fija. Sin embargo, una vez que la respuesta se estabiliza, mucho del trabajo de la iteración es redundante con el trabajo previo en la iteración anterior, ya que mucho de los datos no cambian simplemente. Si la iteración última pudiese hacerse sobre datos que cambian en lugar de hacerlo sobre todo el conjunto de información sería posible lograr un incremento significativo en la velocidad de cómputo. El resultado de esto es Naiad.
La forma en que trabaja Naiad significa que puede extender los modelos estándar de procesamiento en paralelo (en batch) como MapReduce, Hadoop y Dryad/DryadLINQ. Con Naiad se pueden tener actualizaciones incrementales eficientes a las entradas, pues Naiad actúa como un sistema de procesamiento en stream.
El reporte técnico de Naiad “Composable Incremental and Iterative Data-Parallel Computation with Naiad” muestra al sistema siendo usado en un rango interesante de problemas típicos: algoritmos gráficos, entre otros. Pero lo mejor es quizás ver primero el siguiente video. Frank McSherry introduce Naiad y discute su potencial importancia, con algunas demostraciones en el camino
Referencias: