MapReduce: paralelismo en Google

22 enero 2008

De vez en cuando en la revista “Communications of the ACM” se publican artículos muy interesantes en los que se explica desde dentro la dinámica de empresas muy conocidas, y su forma de abordar problemas técnicos que se complican con la excepcional envergadura de esas organizaciones.
Recuerdo bastante bien el que dedicaron a finales de los 90 a Yahoo! y el sistema de gestión de ficheros que habían desarrollado para compartir la misma información entre el gran número -para la época- de servidores con que contaban; o el estricto sistema de control de calidad (y no es una broma) de Microsoft, con una metodología que dedicaba tanto tiempo a pruebas y revisión del código generado, como a la propia programación en sí.
En el reciente número de enero, se publica el artículo “Google’s parallel programming model” a cargo de dos miembros del equipo técnico de Google. Muy interesante para quien se interese por la escalabilidad, una de dimensiones básicas de la Web 2.0, y paralelismo en la programación.
MapReduce (flujo de operaciones en la siguiente figura) es un de los elementos estructurales de Google, y se encarga de simplificar el trabajo con los enormes conjuntos de datos que manejan a diario sus servicios (20 Petabytes). Este modelo de programación se basa en una estructura muy simple de trabajos que “mapean”, y trabajos que “reducen”, de forma que los primeros buscan la información en forma de pares clave/valor, y los segundos la unen, simplifican y procesan.
Los programadores invocan a esta función con los parámetros apropiados y MapReduce se encarga de paralelizar las tareas, controlar los trabajos, la comunicación entre ellos, y controlar errores.

Flujo de operaciones en MapReduce de Google

Son muchas las utilidades que usan MapReduce en Google, como la traducción estadística, el procesado de imágenes de satélite, el aprendizaje automático, o el análisis de páginas. En conjunto, MapReduce supone unos 11.000 años/máquina en un mes, lo que supone el trabajo de unos 130.000 PCs convencionales.
Mejor que este resumen es acercarse al artículo original para ver un ejemplo de cómo lidian en Google con problemas de escalabilidad de dimensiones excepcionales.

Por cierto, la versión íntegra del artículo puede encontrarse en Internet [PDF, 417KB].

Citando a:

Deja un comentario

Tu dirección de correo electrónico no será publicada.