sábado, 23 de mayo de 2009

Procesamiento Masivo y Escalable de Datos (con MapReduce (Hadoop) ) CLASE 1

Entre los temas:

Introducción a la programación en paralelo

La computación en paralelo es el uso simultáneo de recursos del computador para resolver un problema, existen algunos modelos para hacer programación en paralelo, entre los más comunes; memoria compartida, hilos, paso de mensajes.

Parallel vs. Distributed
La diferencia entre paralelo y distribuido es una pieza importante a la hora de diseñar sistemas, los conceptos son significativamente diferentes, la confusión, si es que existiese es porque lo paralelo y lo distribuido tienen algo en común - la división de un problema en multiples tareas que pueden ser ejecutadas independientemente.

Cual es la diferencia, que es lo que hace a lo distribuido distribuido y a lo paralelo paralelo, los dos incluyen hacer multiples tareas en multiples CPUs separados, pero la diferencia clave es donde residen esos CPUs (tomando CPU y core como sinónimos)

Paralelo: las tareas son divididas entre CPUs dentro del mismo host.
Distribuido: las tareas son divididas entre CPUs en host separados.

Parallelization & Synchronization
La comunicación y la sincronización entre diferentes subtareas es uno de los grandes obstaculos en el rendimiento de los estos programas, pues la memoria no puede ser compartida por estas subtareas por ello existen los semáforos, barreras y otros metodos de sincronización muy conocidos.

Prelude to MapReduce
MapReduce es un framework introducido por Google para dar soporte a la computación paralela, la idea general es esconder toda la complejidad de hacer programas distribuidos, olvidandonos de así de los problemas de sincronización.