Mostrando entradas con la etiqueta mapreduce. Mostrar todas las entradas
Mostrando entradas con la etiqueta mapreduce. Mostrar todas las entradas

sábado, noviembre 06, 2010

Yahoo lanza S4

sábado, noviembre 06, 2010 por Martín


Con un dominio muy molón Yahoo acaba de lanzar hace nada S4. Se trata de una "Distributed Stream Computer Platform" o para que nos entendamos, una librería/plataforma para procesar grandes cantidades de datos que van llegando continuamente en tiempo real.

Hace nada acaban de publicar una entrada en su blog presentando el proyecto. Se trata de llevar la filosofía que MapReduce y Hadoop han popularizado para el procesado de trabajos en batch al procesado de datos que fluyen en tiempo real. Ellos ponen el ejemplo del análisis mediante técnicas de aprendizaje por computador de miles de búsquedas por segundo realizadas por millones de usuarios diariamente en el buscador de Yahoo.

Todo esto de manera que sea distribuido, es decir que haya múltiples nodos que se dividan el procesado de ese flujo de datos; que sea escalable, es decir que para soportar el procesado de más información sólo sea necesario introducir más máquinas; y que sea tolerante a fallos, es decir que si algún nodo se cae, haya otro que sea capaz de procesar esos datos.

La plataforma es Open Source, la han liberado bajo la licencia Apache y está desarrollada completamente en Java.

domingo, enero 20, 2008

¿Es MapReduce un paso atrás?

domingo, enero 20, 2008 por Martín

La gripe que inevitablemente estoy incubando sumado a que llevo unos días un poco desconectado debido al esfuerzo de arrancar algo del que probablemente pronto tengáis noticia y que me tiene muy ilusionado, me ha hecho mantenerme un poco apartado del blog estos días y también de las noticias blogosféricas. Y claro, hoy al ir repasando mis feeds me he encontrado con el tremendo lio que se ha montado debido al último artículo de Michael Stonebraker: MapReduce: A major step backwards.

StoneBraker es una referencia dentro del mundo de la base de datos. Recientemente, uno de sus artículos tubo enorme aceptación al cuestionarse si las bases de datos relacionales habían quedado obsoletas en un mundo en el que las bases de datos especializadas tenían cada vez más éxito. Sin embargo, parece que ahora ha dado con un hueso muy duro de roer con la comunidad de la computación distribuida.

StoneBraker afirma en su artículo que MapReduce es un enorme paso atrás en la computación distribuida, en base a los siguientes argumentos:
  • Representación de datos anticuada. No aprovecha los conocimientos adquiridos en los últimos años y las ventajas de utilizar esquemas y lenguajes de acceso a datos de alto nivel.
  • Una aproximación menos que óptima basada en fuerza bruta.
  • Nada nuevo, ya existía hace 25 años.
  • Adolece de la falta de la mayor parte de funcionalidades disponibles dentro de las bases de datos relacionales.
  • Es incompatible con todas las herramientas disponibles para bases de datos, es decir generadores de informes, herramientas de BI, data mining, data warehousing, etc.


Prácticamente todos los medios de noticias y bloggers están de acuerdo en que StoneBraker ha cometido un error muy básico, que es comparar peras con naranjas, bases de datos con algoritmos de computación distribuida.

Hay quien trata de exponer todos los errores del artículo y opina que los autores (David J. DeWitt es coautor) es que los autores se han despistado y que si en lugar de hablar de MapReduce hubiesen hablado de Amazon SimpleDB el artículo hubiera tenido sentido. Hay también es más drástico y opina que StoneBraker ya no es una referencia para él.

Hay quien también apunta que el propio Google es consciente que el algoritmo no es lo mejor que podría ser pero que cumple su objetivo perfectamente. Otras comunidades y blogs como High Scalability, InfoQ o YComb se han hecho también eco del tema.

Lo cierto es que a mi también me ha chocado bastante la comparación entre MapReduce y una base de datos. Leyendo el artículo, la verdad es que uno sigue el hilo y hasta puede estar de acuerdo en algún punto de los puntos uno, y dos; pero es en los siguientes puntos, tres, cuatro y cinco, donde el artículo pierde definitivamente el norte.

A mi me da la impresión de como si durante estos años un montón de gente hubiese acudido a estas personas con preguntas del estilo "¿Por qué necesito una base de datos si Google no la usa?", "¿Tienen alguna base de datos como BigTable?", "¿Por qué va Google tan rápido sin base de datos y la que ústedes nos han recomendado va tan lenta?", y se hayan querido despachar a gusto. Realmente me suena a esto. A un "estamos hartos de tantos emails sobre BigTable y vamos a dejar las cosas claras".

En fin, la verdad es que los que nos manejamos a niveles muchísimo más modestos, pues por lo menos podemos intentar aprovechar estos lios para pillar un poco de aquí y otro poco de allá en los comentarios y aprender los entresijos de algunas tecnologías. Que al final es lo que vamos a sacar en limpio :-)

viernes, enero 11, 2008

Más sobre MapReduce

viernes, enero 11, 2008 por Martín

Dándole un repaso a los blogs de escalabilidad que hay en inglés parece que estos días le han estado dando una vuelta de tuerca más al tema de MapReduce. Todo se debe a la publicación en ACM Computing de una nueva versión del artículo sobre MapReduce publicado en el 2004 por Jeffrey Dean y Sanjay Ghemawat. El artículo es de pago pero hay quien lo publica en su blog.

El artículo es muy similar a la versión original. Prácticamente un clon pero mejor formateado y más legible. A mayores incluye nuevas estadísticas sobre el uso de MapReduce en Google durante estos últimos años, que es lo realmente interesante si ya habíais leido el artículo original.



Según se puede leer en el artículo la primera versión estable de MapReduce se publicó en Febrero del 2003 aunque fue ampliamente mejorada en Agosto también del 2003. A día de hoy los autores comentan que se han implementado unos 10.000 programas distintos (aunque en las estadísticas sólo dan unos 6000 sumando implementaciones de map y reduce). Se ejecutan unos 100.000 trabajos de media utilizando este framework que procesan unos 20 petabytes al día. Muy impresionante, desde luego.

Entre las aplicaciones que usan MapReduce, están las que ya comentaron en su momento: problemas de machine learning, froogle y Google News, Google zeitgeist, y alguna otra. Han añadido a mayores Google Trends, el procesado de imágenes por satélite (asumo Google Earth y Google Maps), y el procesado de modelos de lenguaje para traducción (Google Translator?).

Lo más jugoso es la tabla resumen que muestran en el artículo:



Si queréis ampliar conocimientos sobre MapReduce y toda la infraestructura de computación de Google, probablemente el mejor recurso es el curso sobre sistemas distribuidos que se puede encontrar en Google Code, donde hay mucho material interesante.

También puede que sea interesante (no lo he visto) el video sobre MapReduce en sistemas multicore que publicaron en Febrero del año pasado y del que también está disponible la publicación original.

domingo, enero 06, 2008

Granjas, fábricas y nubes, el futuro de la computación

domingo, enero 06, 2008 por Martín

Según Julio Guijarro y Steve Loughan ambos miembros del grupo de investigación que tiene HP en Bristol ese es el futuro de la computación distribuida. Julio y Steve han publicado el pasado Diciembre una presentación muy interesante en la que hablan de como los modelos de servidor único y de un cluster de servidores han quedado obsoletos en favor de un modelo de granja con cientos de servidores donde el sistema de ficheros es distribuido y el almacenamiento y la CPU se alquila. Se trata de una infraestructura ágil, como ellos la denominan, y que tenderá en el futuro a una gran fábrica de grids con decenas de miles de servidores



Esta evolución se sustenta en la base de que las arquitecturas actuales han anulado ciertas asunciones que en el pasado eran verdaderas pero que Julio y Steve afirman que ya no lo son. Pongo la lista a continuación ya que aunque es posible que no se esté de acuerdo de todo me parece un buen resumen sobre las consecuencias arquitectónicas que tienen algunas tendencias actuales.

Arquitectura: Virtualización. Asunciones que ya no son ciertas:

  • Los sistemas permanecen activos por enormes espacios de tiempo.

  • Crear un nuevo sistema es caro y lento.

  • Duplicar un sistema existente es algo muy caro.

  • Los sistemas deben controlarse manualmente.

  • Los relojes están sincronizados.

  • La RAM nunca se "swappea".

  • Las máquinas que están en ejecución no pueden ser movidas y/o clonadas.


Arquitectura: Granjas de servidores. Asunciones que ya no son ciertas:

  • El fallo en un sistema es un evento inusual.

  • El 100% de disponibilidad se puede conseguir.

  • Los datos siempre están cerca del servidor.

  • Se necesita acceso físico al servidor.

  • Las bases de datos son la mejor forma de almacenamiento.

  • Necesitas tener millones de euros para ser un competidor en tu rama.


Arquitectura: Map/Reduce. Asunciones que ya no son ciertas:

  • Es difícil trabajar con terabytes de datos.

  • El código se ejecuta siempre en una única máquina.

  • El código ejecutado secuencialmente es mejor que el código ejecutado en paralelo.

  • La mejor forma para almacenar los datos es con sistemas RAID.

  • Las bases de datos son mejores que los sistemas de ficheros.


Arquitectura: Sharding. Asunciones que ya no son ciertas:

  • Una única granja puede escalar hasta el infinito.

  • Necesitas proporcionar 100% de disponibilidad al 100% de tus usuarios.

  • Cambios en la aplicación cambian la totalidad del esquema de base de datos.


El análisis realizado me ha parecido muy interesante. El argumento central de la presentación es que la computación poco a poco se está conviertiendo en una commodity, como las granjas que nos preparan la comida o las fábricas que nos hacen la ropa.

Sistemas sobre los que he estado hablando continuamente en los últimos meses, como S3, EC2, la nueva SimpleDB o Hadoop han cambiado la forma de entender la computación distribuida y, concretando en el caso de Amazon, proponen un modelo de renting muy atractivo que permite a pequeñas startups ponerse a la altura de grandes corporaciones.

Por cierto, que no lo había comentado, Julio Guijarro es el líder del proyecto SmartFrog, que personalmente no conocía y que tiene como objetivo el proporcionar una tecnología que describa sistemas de software distribuidos como colecciones de componentes manejables y activables. Por la descripción se me antoja como algo similar a Dryad de Microsoft. Eso sí, éste está liberado bajo licencia LGPL.

martes, noviembre 13, 2007

Dryad, la alternativa a MapReduce de Microsoft

martes, noviembre 13, 2007 por Martín

En un comentario a la entrada anterior sobre GigaSpaces, Diego apunta que las arquitecturas existentes para trabajo en grid son todavía insuficientes por ser demasiado explícitas obligando a las compañías a invertir mucho tiempo en gestionar algoritmos de computación distribuida.

Parece que lo mismo pensaron en Microsoft cuando estaban diseñando Dryad, una abstracción creada sobre los fundamentos del álgebra relacional y el algoritmo Map and Reduce de Google y que permite la ejecución distribuida de grafos de trabajos en clusters. Ellos explican mejor lo que hace:


Dryad is quite expressive. It completely subsumes other computation frameworks, such as Google's map-reduce, or the relational algebra. Moreover, Dryad handles job creation and management, resource management, job monitoring and visualization, fault tolerance, re-execution, scheduling, and accounting.


La idea del framework es que el programador se dedique simplemente a preparar el grafo de trabajos y que el cluster Dryad haga el resto. Lo interesantes de Dryad son las abstracciones que ofrece. Parece que es capaz por ejemplo de ejecutar el mismo trabajo en varios nodos y quedarse con la salida del que acaba más rápido, o reejecutar un trabajo si se produce algún error, etc. Uno de los ejemplos que ponen es como integraron Dryad con SQLServer para ejecutar los planes de las queries de manera distribuida en un cluster Dryad.

Michael Isard de Microsoft Research dio una charla en Google bastante interesante y en la que explica como funciona el framework. Por cierto, no deja de ser curioso esto de que los ingenieros de Microsoft den charlas en Google :)

Si os interesa entrar en más detalle también tienen esta publicación: Dryad: Distributed Data-Parallel Programs from Sequential Building Blocks