2. Computacion
Paralela
Recursos
computacionales
-Multiplesprocesadores
- Computadorasunidad
por una red
-Combinacion de ambos
Problema computacional
-Ser particionadoenpartes discretas de
trabajoque puedenserresultas
simultáneamente
-Ejecutarmúltiples instrucciones delprograma
en cualquier instante de tiempo
-Serresueltoenun menortiempo
Por que usar computacion paralela
-Ahorro en tiempo
-Resolver Problemas grandes
Aplicaciones que la requieren
o Base de datos paralelas, minería de datos
o Exploraciónde crudo
o Servicios de negocios basados enla WEB
o Diagnósticoasistidoporcomputador
o Computacióngráfica
-Tomar ventaja de recursos no locales
usar recursos computacionales
disponibles en una red.
-Ahorro en costos
-Usar la memoria de múltiples
computadores
un conjuntode elementos de
procesoque se comunican y
cooperanpara resolver
rápidamente grandesproblemas
3. APLICACIÓN DE COMPUTACIÓN PARALELA
Google reside en: realizar búsquedas sobre internet lo más rápido posible, y ofrecer publicidad acorde al contenido de la
búsqueda.
Para ejecutar ambas tareas, se necesita un gran poder de cómputo, considerando la gran cantidad de información
disponible en la red de redes y su exponencial crecimiento, tanto de información como de usuarios y dispositivos que se
conectan a Internet, desde servidores, PCs, smartphones, cámaras, sensores, etc.
Hacia comienzos del año 2000 Google comenzó a ver que su negocio no sería sostenible en el tiempo si, para realizar
estas tareas, tenía que invertir en grandes computadores (high end), más las licencias de software correspondientes.
Comenzó a trabajar en sus laboratorios sobre un desarrollo que aprovechara el poder de cómputo de máquinas
económicas (clones de PC).
De esta manera, en el año 2004 Google patentó un framework de programación llamado "MapReduce", que permite
procesar en forma paralela grandes conjuntos de datos usando un gran número de computadoras o nodos.
MapReduce se basa en dos pasos:
Map: dada una tarea o problema a resolver, un computador o nodo principal la evalúa y la divide en subtareas que asigna
a otros nodos llamados "operarios". A su vez, estos nodos pueden hacer lo mismo generando una estructura de árbol de
multi-niveles. Cada nodo operario procesa la tarea más pequeña, la almacena en su disco local, y pasa la respuesta a su
nodo maestro.
Reduce: luego los nodos maestros toman las respuestas de todas las subtareas y las combinan para generar una salida,
esto es la respuesta al problema que originalmente se intentaba resolver.