3. Sistemas Distribuidos
Es una colección de computadoras independientes
que aparecen ante los usuarios del sistema como
una única computadora” (tanenbaum, 1995)
4. Sistemas Distribuidos
“Se compone de un grupo de computadores
autónomos, enlazados mediante una red y
equipados con un software de sistemas
distribuidos. … Los usuarios de un sistema
distribuido bien diseñado deberían percibir un
sistema de computación único e integrado” (c,d,k,
1998)
Video
https://www.youtube.com/watch?v=ozSf8esfOFA
5. Sistemas Distribuidos -
Transparencia
Un sistema distribuido es transparente si, es
capaz de presentarse ante los usuarios y las
aplicaciones como si se tratara de una sola
computadora
6. Tipos de transparencia
Transparencia Descripción
Acceso Oculta diferencias en la representación de los datos y la
forma en que un recurso accede a estos
Ubicación Oculta la localización de los datos o recursos
Migración Oculta que un dato o recurso puede moverse a otra
ubicación
Replicación Oculta el número de copias del dato o recurso
Concurrencia Oculta que un recurso puede ser compartido por varios
usuarios que compiten por el
Falla Oculta la falla y recuperación de un recurso
Reubicación Oculta que un dato o recurso puede moverse a otra
ubicación mientras está en uso
7. Nivel de transparencia
Lograr completamente la transparencia de distribución
es imposible o muy costoso, se debe considerar temas
como el rendimiento.
8. Sistemas Distribuidos –
Arquitecturas Físicas
P P P P P P
BUS
Memory
M
P
M
P
M
P
M
P
M
P
M
P
Network
Memoria Compartida – Un espacio
simple de direccionamiento. Todos los
procesadores tienen acceso a un pool
de memoria compartida.
Memoria Distribuida – cada
procesador tiene su propia
memoria local. Se debe hacer paso
de mensaje para intercambiar
datos entre procesadores.
9. Sistemas Distribuidos –
Arquitecturas
Basados en el modelo cliente-servidor:
Muchos servicios de Internet siguen este modelo: Web,
e-mail, Bases de datos
Proceso que
implementa
un servicio
Proceso que
solicita un
servicio al
servidor
10. Sistemas Distribuidos -
Arquitectura
P2P (Peer to Peer) P2P (Peer to Peer) Todos los procesos
desempeñan tareas semejantes, interactuando
cooperativamente como iguales para realizar una actividad
distribuida o cómputo sin distinción entre clientes y
servidores.
Ejemplos:
- Napster (El primero)
- Bit Torrent, emule
- Skype
- Friend-to-Friend (F2F)
- Redes Sociales: Facebook, MySpace, Linked-In
11. Sistemas Distribuidos - Tipos
Cluster es una agrupación de computadoras
intercomunicadas entre sí a través de un nodo central y
cuyo objetivo es realizar una tarea específica.
Los componentes,
llamados nodos son por
lo general servidores y
están conectados
mediante una red de
alta velocidad o una
LAN
12. Sistemas Distribuidos - Clúster
Clasificación:
Según el objetivo de su aplicación
◦ Alto rendimiento y alta disponibilidad
Según el uso de los nodos
◦ Dedicados o no dedicados
Según el SO de los nodos
Según la configuración de los nodos
◦ Homogéneos o Heterogéneos
13. Sistemas Distribuidos - Cluster
Beowulf
◦ Ideados en 1994 por Donald Becker y Thomas Sterling en
la NASA.
◦ 16 PC procesadores Intel DX4 de 100 MHz con monitor y
teclado
◦ Red Ethernet a 10 Mbps.
◦ SO Linux
◦ La supercomputadora de los pobres
http://hipertextual.com/2011/11/historia-de-
la-tecnologia-cluster-beowulf-la-
supercomputadora-de-los-pobres
14. Sistemas Distribuidos - Clúster
Google (1998) de 80 servidores a mas de 2 millones
(computadores personales)
• Racks en varias
ciudades del mundo
• 2009 Instalación
ecológica
15. Sistemas Distribuidos - Clúster
Otros Clústeres
◦ Amazon
◦ Red española de
supercomputación
◦ Microsoft
data centersize # of server racks # of blade servers
US East (Virginia) 5,030 321,920
US West (Oregon) 41 2,624
US West (N.
California)
630 40,320
EU West (Ireland) 814 52,096
AP Northeast
(Japan)
314 20,096
AP Southeast
(Singapore)
246 15,744
SA East (Sao Paulo) 25 1,600
Total 7,100 454,400
Tamaño del centro de datos de Amazon (2012)
17. Sistemas Distribuidos - Nube
La empresa Amazon fue pionera del Cloud
Computing, al darse cuenta que tenía sub-utilizada
parte de su infraestructura física
A esto le siguieron Google, Microsoft, Yahoo y
goDaddy
21. Distribución de datos
Replicación: Es el proceso de copiar y mantener
actualizados los datos en varios nodos de la BD.
◦ Los lectores pueden leer de cualquier copia.
◦ Una escritura debe ser replicada en todas sus copias
Fragmentación: Dividir los datos de manera que no se
solapen (particiones) para distribuirlos en diferentes
nodos.
22. Replicación
Beneficios
◦ Mejora la disponibilidad de los datos:
◦ Si n copias accesibles fallan aún puedo acceder a la copia n+1 (si la hay)
◦ Mejora el rendimiento si hay mas lecturas que escritura
◦ Los tiempos de respuesta disminuyen
◦ Recuperación de fallos
◦ Al recuperarse un nodo puede leer los datos de alguna réplica
◦ Reducción de la carga
◦ Las operaciones sobre los datos se pueden repartir entre las diferentes réplicas.
23. Replicación
Problemas
◦ Costo: Requiere mayores recursos de almacenamiento
◦ Consistencia: Modificar una copia la hace diferente del resto
◦ Overhead:
◦ Se deben mantener todas las copias actualizadas
◦ Requiere manejo de concurrencia entre las réplicas
◦ Fiabilidad: Se debe garantizar la seguridad de todas las copias
24. Replicación - Tipos
Según la cantidad de datos replicados
◦ Replicación total: La base de datos completa
◦ Replicación parcial: Se replican algunos fragmentos y otros no.
Según el momento
◦ Síncrona: Las copias se actualizan inmediatamente en el
momento de actualizar los datos de origen (consistencia
estricta)
◦ Asíncrona: Las copias se actualizan después de que los datos
de origen hayan sido modificados. (Consistencia eventual)
25. Replicación - Tipos
Según el modelo de replicación
◦ Maestro/esclavo
Punto único de
fallo único (single-
point-of-failure)
en caso de
escrituras
26. Replicación - Tipos
Múltiples maestros
◦ Hay mas de un nodo responsable
de las actualizaciones
◦ Se elimina el Punto único de fallo
◦ Introduce la colisión de datos si
se ingresan dos registros distintos
con la misma clave en diferentes
copias
27. Fragmentación
Objetivos
Dividir la base de datos en fragmentos mas pequeños
de manera que la aplicación haga uso solo de algún
fragmento.
Ventajas
◦ Mayor concurrencia
◦ Paralelización de consultas
◦ Distribución de la carga
28. Replicación y consistencia
La replicación de datos genera problemas de
consistencia que no pueden resolverse eficientemente
de forma general
Solo si se relaja la consistencia se pueden encontrar
soluciones eficientes.
29. Niveles de consistencia
Esctricta: se manejan todas las réplicas de manera
atómica para actualización
Secuencial: El resultado de cualquier ejecución de
operaciones de lectura y escritura de todos los
procesos sobre las réplicas, es el mismo que si se
hubieran ejecutado de manera secuencial sobre las
réplicas es secuencial.
Es más débil que la anterior.
30. Niveles de consistencia
Causal: Es una debilidad del secuencial ya que
diferencia a los eventos causados por otros de los que
no lo están.
Se debe establecer una relación de causalidad entre los
eventos para lo cual hay diferentes técnicas
33. Fragmentación - Tipos
Vertical – Clustering:
◦ Implica dividir (split) la base de datos en múltiples trozos o
grupos, cada uno de los cuales contiene un subconjunto de
todas las tablas
34. Paradigma MapReduce
Manipular grandes volúmenes de datos distribuidos
requiere herramientas y métodos para procesarlos de
manera paralela con la menor cantidad de intersección
entre ellos.
El procesamiento distribuido paralelo requiere además
llevar la transferencia de data al mínimo. Mantener los
datos locales es de gran importancia.
A lo largo del tiempo se han desarrollado muchos
métodos (Tiwari, 2011)
35. Paradigma MapReduce
A pesar de la variedad de soluciones, ninguna llegó tan
lejos como mantener los datos locales para minimizar el
uso del ancho de banda.
MapReduce es un algoritmo inspirado en la
programación funcional, desarrollado para la
computación distribuida y patentado por Google. (Dean
& Ghemawat, 2004)
Se ha convertido en la forma mas popular de procesar
grandes volúmenes de datos de manera eficiente y
confiable. (Tiwari, 2011)
36. Paradigma MapReduce
Map: map(list[], oper) aplica la operacion oper a la lista list,
retornando una nueva lista cuyos elementos han sido operados,
individualmente, por oper.
◦ Por ejemplo, si disponemos de la lista list[1,2,3] y de la operación suma x =
x+1y realizamos la operación map(list, suma) el resultado de la misma
será [2,3,4].
Reduce(list[], oper) aplica la operación oper a la lista list,
retornando un elemento producto de la operación de los
elementos de list entre sí.
◦ Por ejemplo, si disponemos de la lista list[1,2,3] y de la operación suma
(x:xs) = x+suma(xs) y realizamos la operación fold(lista, suma), el resultado
de la misma será 6.
39. Paradigma MapReduce
Este framework es muy útil en BD NoSQL
◦ Map Toma como parámetros entrantes una lista de tuplas de
tipo (clave, valor) y devuelve una lista de valores.
◦ Esta lista es filtrada o procesada por Reduce.
◦ Por ejempl MongoDB hace uso de MapReduce para realizar
operaciones sobre los resultados devueltos por una
consulta, por ejemplo de contaje de repeticiones.
40. Próxima Clase
◦ Modelos de datos
◦ Estructurados
◦ Semiestructurados: XML, Json
◦ No estructurados
◦ Características de las BD NoSQL
◦ Taxonomía
◦ Arquitectura