Frameworks de procesamiento distribuido I

BI Geek / Big Data  / Frameworks de procesamiento distribuido I
background-computer-technology-screensavers-wallpaper

Frameworks de procesamiento distribuido I

En esta serie de posts se hablará de los frameworks actuales más importantes para el procesamiento distribuido. El objetivo es tener las bases necesarias para comprender como funcionan y sus diferencias.

En esta primera parte se analizará la historia de estos frameworks, el porqué de su irrupción en el mercado  y su modelo de programación.

Un poco de historia…

El nacimiento de la programación distribuida aplicada en Big Data nace de la mano de Google.

Google

El conocido buscador se encontró con la problemática de que le era imposible indexar la web al nivel de exigencia del mercado. Para ello, desarrollaron un sistema que permitía que un gran conjunto de pequeños ordenadores, trabajando de forma independiente, diesen solución a un problema. Tras este descubrimiento, Google publicó dos papers muy conocidos: el Google File System paper en Octubre de 2003 y el MapReduce paper en Diciembre de 2004.

Nutch

En 2005, Apache Nutch entra en la incubadora de Apache como un motor de búsqueda basado en Lucene, que haciendo uso de los papers publicados por google fue capaz de hacer uso de la programación distribuida mediante el uso del sistema denominado Hadoop, creado por Doug Cutting.

En febrero de 2006, Hadoop se separa de Nutch y forma su propia compañía. Meses más tarde, Yahoo lanza Search WebMap, un buscador que hace uso esta tecnología. Desde entonces, Yahoo se convierte en uno de los principales partners de Hadoop.

En 2009, la universidad de Berkeley se encontraba realizando desarrollos en Machine Learning basados en Hadoop. Los desarrollos en Machine Learning conllevan la ejecución de un código que itera sobre el mismo conjunto de datos. Esto suponía que hadoop tuviese que acceder al disco duro en cada iteración para obtener los datos. Estos investigadores se dieron cuenta y empezaron el desarrollo de Apache Spark, un software basado en Hadoop que trabaja sobre la memoria RAM para mejorar la velocidad en el acceso a la lecutra y escritura de información.

En 2013, Apache Spark pasa a ser un proyecto Apache rivalizando en los últimos años contra Hadoop.

En solo 13 años, desde la publicación de los primeros papers de Google, han aparecido diversas tecnologías open source que han contribuido de forma directa o indirecta al desarrollo de herramientas big data que ofrecen a los desarrolladores la oportunidad de poner en práctica sus ideas.

MapReduce

MapReduce es un modelo de programación que implementa Hadoop que permite realizar cómputo distribuido.

Bajo este modelo existen dos fases muy diferenciadas: una fase map y una fase reduce.

  • Fase map: La función map es la encargada del mapeo de la información siendo ésta procesada en paralelo. Este mapeo consiste en la aplicación de una o varias reglas sobre los datos (cálculos, transformaciones, filtros, etc.)
  • Fase reduce: Fase de agregación o resumen. Con la función reduce, todos los registros han de ser procesados juntos por una única unidad. La función Reduce recibe como entrada un par clave-lista_de_valores, y su salida es un único par clave valor.

Arquitectura – MapReduce

La arquitectura de MapReduce se basa en el modelo Maestro-Esclavo.

  • El Nodo maestro (JobTracker): es el encargado de registrar los trabajos pendientes, asignar tareas a los nodos y mantener los trabajos cerca de los nodos. Si el JobTracker falla, los trabajos pendientes de ejecución se pierden.
  • Los nodos esclavos (TaskTracker): atienden a tareas de MapReduce y controlan las tareas de ejecución, además de encargarse de la replicación de la información a otros nodos. También se encargan de notificar al JobTracker acerca del estado del nodo y de las tareas. Si un TaskTracker falla o se produce un TimeOut, esa tarea se replanifica.

En el siguiente post, se verán los distintos frameworks así como ejemplos que ayuden a entender este paradigma de programación.

Consultor Business Intelligence y Big Data.