El advenimiento de grandes volúmenes de datos (o Big Data1) esta generando una necesidad de productos que sirvan
para la manipulación y resumen de los mismos. Big Data puede considerarse de manera mas o menos precisa (no es
mas que un numero comercial) como una cantidad de información tal que no puede procesarse ni almacenarse en un
único ordenador.
Las dificultades más habituales vinculadas a la gestión de estas cantidades de datos se centran en la captura, el alma-
cenamiento,2 búsqueda, compartición, análisis y visualización. La tendencia a manipular ingentes cantidades de datos
se debe a la necesidad en muchos casos de incluir los diferentes conjuntos de datos relacionados.
La tendencia actual es el almacenamiento y el procesamiento a través de nodos distribuidos en una red de la manera
mas transparente posible para el programador, haciéndolo parecer que esta ejecutando todo localmente; despegándose
un poco del modelo propuesto por el ya tradicional modelo distribuido de MPI2 (del inglés Interfaz de Paso de Mensaje)
de hacer evidente la no localidad del computo.
Por el dado del análisis de datos; en la presencia de una cantidad ingente de información como la que planteamos
hace necesario el disponer de mecanismos automáticos para el procesamiento de estos volúmenes. Es en este campo
donde una herramienta como el aprendizaje automático3 (o ML) obtiene un valor de piedra angular. El aprendizaje
automático es una rama de la de la Inteligencia Artificial4 que consiste en crear programas que buscan de manera
autónoma patrones en la información a partir de ejemplos.
En el siguiente trabajo analiza la implementación del modelo mas popular de los últimos años para el computo dis-
tribuido: Map-Reduce5 así como un sistema distribuido de almacenamiento de archivos utilizando como sistema de
transporte de información el modelo de colas de mensajes AMQP6 y utilizando como lenguaje de programación Pyt-
hon7 y su librería de aprendizaje automático Scikit-Learn8.
El trabajo resultante se hizo publico bajo una licencia laxa bajo del nombre de Poopy9 en la siguiente dirección web
http://poopy.jbcabral.org.
Las fuentes de este trabajo pueden encontrarse en: https://bitbucket.org/leliel12/bigdata_famaf
Implementación de un sistema de cómputo distribudo Map-Reduce sobre AMQP
2
Capítulo 1.
Introducción
CAPÍTULO 2
Antecedentes
A distributed system is one in which the failure of a computer you didn’t even know existed can render
your own computer unusable.
—Leslie Lamport, Premio Turing Award 2014 por sus contribuciones al cómputo distribuido
En la actualidad la herramienta mas popular de computo distribuido es sin dudas Hadoop1. Hadoop es una implemen-
tación del algoritmo MapReduce realizada íntegramente en Java2, que ha servido de inspiración y guía a lo en todo
este trabajo.
Con el objeto de entender mejor el trabajo realizado, a largo de este capitulo analizaremos algunos implicancias del
computo distribuido (teorema CAP), dos modelos de computo distribuido (AMQP y MapReduce) y cerraremos con el
análisis de una herramienta construida con el objeto de hacer aprendizaje automático sobre grandes en un cluster de
computadoras.
2.1 Implicancias del Computo Distribuido
Un sistema distribuido se define como una colección de computadoras separadas físicamente y conectadas entre sí por
una red de comunicaciones; cada máquina posee sus componentes de hardware y software.
2.1.1 Teorema CAP
El teorema CAP surge de una conjetura muy sencilla:
No se puede garantizar consistencia, disponibilidad (Availability en inglés) y ser tolerante a las particiones
en un sistema de cómputo distribuido.
Esta conjetura fue realizada por Eric Bewer3 en la Universidad de California Berkley4 y demostrada debidamente por
Gilber y Lynch5 en el MIT6.
Según satisfagan estos criterios podemos clasificar varios sistemas como por ejemplo
Disponibilidad y tolerancia a las particiones: Cassandra7 y CouchDB8.
Implementación de un sistema de cómputo distribudo Map-Reduce sobre AMQP
Consistencia y tolerancia a las particiones: HBase9 y Paxos.
Consistencia y Disponibilidad: RDBMS10.
2.2 Modelos Computo distribuido
Existen varios modelos de computo distribuido de los cuales analizaremos 2 que tienen relevancia para el proyecto:
AMQP11 y MapReduce
2.2.1 AMQP
AMQP12 (del ingles Advanced Message Queuing Protocol - Protocolo avanzado de colas de mensajes) es un estandar
en el nivel de aplicación13 para middlewares oriantados a mensajes. Sus características principales son:
Orientación a mensajes
Colas
Enrutamientos (punto a punto y publicador-suscripción)
Exactitud y seguridad
AMQP estipula a nivel binario el comportamiento tanto del servidor que provee los mensajes como del cliente de la
mensajería hasta el punto de que las implementaciones en diferentes lenguajes son totalmente inter operables; de la
misma forma que lo lograron SMPT14, HTTP15 y SFTP16.
La infraestructura de AMQP es la siguiente:
El corredor de mensajes (o Broker): un servidor al que los clientes AMQP se conectan usando el protocolo
AMQP.
Usuario (o cliente): un usuario es una entidad que, mediante la presentación de credenciales tales como una
contraseña, puede ser autorizado (o puede no ser autorizado) a conectarse a un corredor.
Conexión: una conexión física usando por ejemplo TCP/IP o SCTP. Una conexión está ligada a un usuario.
Canal: una conexión lógica que está unida a una conexión. Así pues, la comunicación a través de un canal
posee un estado. Aquellos clientes que realicen operaciones concurrentes mediante una misma conexión deben
mantener un canal distinto para cada una de ellas.
Implementaciones populares de AMQP son rabbitMQ17, y Apache ActiveMQ18
Si usamos extenciones para distribuirs brokers AMQP, segun el Teorema CAP, puede ser AP (si usamos Federation19
/ Shovel20) y CA Si usamos AMQP Clustering21
Implementación de un sistema de cómputo distribudo Map-Reduce sobre AMQP
2.2.2 MapReduce
MapReduce es un modelo de cómputo que simplifica el uso de clusters22; el cual computa una función que recibe
como parámetros un conjunto de elementos llave-valor, y lo convierte en un nuevo conjunto el cual cada elemento es
una llave y una lista de valores.
Links de descarga
http://lwp-l.com/pdf8967
Comentarios de: Implementación de un sistema de cómputo distribuido Map-Reduce sobre AMQP (0)
Comentarios de: Implementación de un sistema de cómputo distribuido Map-Reduce sobre AMQP (0)
No hay comentarios