1. Cloud Computing
Jose Emilio Labra Gayo
University of Oviedo, Spain
http://www.di.uniovi.es/~labra
2. Esquema de la presentación
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Motivación
Cloud Computing
MapReduce
3. Motivación
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
La era de los datos
Generación volúmenes de datos/día
En 2009, récord de crecimiento (60%)
Se estima en 800.000petabytes (1PB = 1millón GB)
Fuente: IDC The digital Universe Decade: Are you ready?
http://www.emc.com/collateral/demos/microsites/idc-digital-universe/iview.htm
4. Ejemplos de fuentes de datos
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Éxito de la web:
Mayor participación si cabe en la Web 2.0
Abaratamiento de dispositivos
Cámaras digitales, Teléfonos móviles, etc.
Youtube contiene unos 144 millones de vídeos*
Redes sociales
Facebook contenía 15 billones de fotos en 2009**
* http://beerpla.net/2008/08/14/how-to-find-out-the-number-of-videos-on-youtube/
** http://www.facebook.com/note.php?note_id=76191543919
5. Otras fuentes de datos
Aumento de Sensores y generadores
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Internet de las cosas
Cada vez más dispositivos estarán conectados
a Internet
Frigorífico con Internet
de datos
http://www.youtube.com/watch?v=sfEbMV295Kk&feature=player_embedded
6. Grandes Centros de Datos
Google, Yahoo!, Amazon, etc.
Centro de datos de Yahoo!
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
8. Cloud Computing
Cloud computing = Servicios de grandes
compañías (Google, Amazon,…) que
pueden ser alquilados por clientes
externos
Ejemplos de servicios:
Recursos computacionales (ciclos CPU)
Almacenamiento
Entornos de ejecución completos
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
9. Ventajas
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Precio
Amazon EC2 = Máquinas virtuales a 10¢/hora
Amazon S3 = Almacenamiento 15¢/mes/Gb
Algunos servicios = gratuitos!
Escalabilidad
Se paga en función del consumo
Acceso a potentes centros de datos
Facilidad de uso y mantenimiento
10. Ventajas
Independencia dispositivos y localización
Acceso desde cualquier navegador en
cualquier sitio
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Eficiencia:
Centralización de infraestructuras, ahorro de
energía, control compartido de carga
Fiabilidad:
Réplicas, recuperación de desastres
11. Tipos de Cloud Computing
No todas las nubes ofrecen todos los
servicios
Se podrían clasificar en:
SaaS: Software as a Service
PaaS: Platform as a Service
IaaS: Infraestructure as a Service IaaS
SaaS
PaaS
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
12. IaaS: Infraestructura
Se ofrecen recursos computacionales
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Capacidad de computación
Almacenamiento
Entorno virtualizado de máquinas
conectadas por red
Ejemplos:
Eucalyptus, Amazon EC2, Amazon S3
13. PaaS: Plataforma
Se ofrece una solución instalada y
configurada como servicio (plataforma)
Aplicaciones:
Hosting para aplicaciones Web
Entornos de desarrollo
Facilitan despliegue rápido y barato
Ejemplos:
Google App Engine, VMForce, AppScale
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
14. SaaS: Software
Aplicación software como servicio bajo
demanda
El usuario no tiene que instalar/configurar
aplicaciones
Reduce coste de adquisición de software
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejemplos:
Aplicaciones Google (Gmail, GDocs, etc)
15. Retos de Cloud Computing
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Legalidad
¿Almacenar datos en otros países?
¿Y si no se cumple el servicio?
Seguridad, privacidad
¿Es más seguro tener los datos en nuestra
máquina o en un data-center?
Dependencia: ¿Nuevos monopolios?
¿Interoperabilidad entre nubes?
Sostenibilidad: ¿Consumo energético?
17. MapReduce
Pensado para procesar grandes cantidades
de datos
Programador especifica computación
mediante 2 funciones: map y reduce
Adaptado a ejecución distribuida en
múltiples nodos
Control de nodos que fallan, balance de carga,
etc
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
18. MapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Desarrollado por Google
Publicado en 2004
Implementación interna propietaria
Hadoop: implementación open source
Versión inicial de Yahoo!
Actualmente Proyecto Apache
Adopción industrial
Facebook, last.fm, etc.
19. Características de MapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Computaciones distribuidas
Troceado de datos de entrada
Tolerancia a fallos de nodos
Portabilidad en nodos con hardware/software
heterogéneo
Procesado por lotes de grandes cantidades
de datos
Write-once. Read-many
20. Orígenes funcionales
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Programación funcional:
Modelo de programación basado en:
Ausencia de efectos laterales
Funciones de orden superior
Funciones similares a map y reduce llevan
utilizándose mucho tiempo en
programación funcional
21. Map en P. funcional
Aplica una función a todos los elementos de
una lista
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Lista de entrada
función
Lista de salida
En Haskell:
Calcular la longitud de todas las palabras de una lista
> map length [“esto”, “es”, “un”, “ejemplo”]
[4,2,2,7]
Dar la vuelta a todas las palabras de una lista
> map reverse ["esto","es","un","ejemplo"]
["otse","se","nu","olpmeje“]
22. Reduce en P. funcional
Transforma una lista en un valor
combinando los elementos entre sí
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Lista de entrada
Valor de salida
En Haskell (reduce fold)
Suma de los elementos de una lista
> foldr (+) 0 [1,2,3,4,5]
15
Producto de los elementos de una lista
> foldr (*) 1 [1,2,3,4,5]
120
23. MapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Inspirado en P. funcional:
2 componentes: mapper y reducer
Los datos se trocean para su procesamiento
Cada dato asociado a una clave
Transforma [(clave1,valor1)] en [(clave2,valor2)]
c1
Entrada:
[(Clave1,Valor1)]
v1
c1 v1
c1 v1
Salida:
[(Clave2,Valor2)]
c2 v2
c2 v2
c2 v2
c2 v2
MapReduce
24. Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Mapper
Para cada (clave1,valor1) devuelve una
lista de (clave2,valor2)
Tipo: (clave1, valor1) [(clave2,valor2)]
c1 vi1
c2 vi2
c3 vi3
k1 v1
k2 v2
k1 v3
k3 v4
k1 v5
k1 v6
k3 v7
mapper
mapper
mapper
25. Mezcla y ordenación de claves
El sistema se encarga de mezclar y ordenar
resultados intermedios en función de las
claves
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
k1 v1
k2 v2
k1 v3
k3 v4
k1 v5
k1 v6
k3 v7
k1 v1 v3 v5 v6
k2 v2
k3 v4 v7
Mezcla
y
ordena
26. Reducer
Para cada clave2, toma la lista de valores
asociada y los combina en uno solo
Tipo: (clave2, [valor2]) (clave2,valor2)
reducer vf1
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
k1 v1 v3 v5 v6
k2 v2
reducer
k3 v4 v7 reducer
vf2
vf3
k1
k2
k3
28. Ejemplo: Cuenta palabras
a 1 1 1 1 reducer
reducer
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
d1 a b
d2 a c a
d3 a c
4
1
2
a
b
c
a 1
b 1
a 1
c 1
a 1
a 1
c 1
mapper
mapper
mapper
reducer
b 1
c 1 1
Mezcla
y
ordena
MapReduce
// devuelve cada palabra con un 1
mapper(d,ps) {
for each p in ps:
emit (p, 1)
}
// suma la lista de números de cada palabra
reducer(p,ns) {
sum = 0
for each n in ns { sum += n; }
emit (p, sum)
}
29. Sistema MapReduce
El entorno de ejecución se encarga de
Planificación: Cada trabajo (job) se divide en
tareas (tasks)
Co-localización de datos/código
Cada nodo computacional contiene sus datos de
forma local (no existe un sistema central)
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Sincronización:
Tareas reduce deben esperar final de fase map
Gestión de errores y fallos
Alta tolerancia a fallos de los nodos
computacionales
30. Sistema de ficheros distribuido
Google desarrolló sistema distribuido GFS
Hadoop creó HDFS
Ficheros se dividen en bloques (chunks)
2 tipos de nodos:
Namenode (maestro), datanodes (servidores datos)
Datanodes almacenan diferentes bloques
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Replicación de bloques
Namenode contiene metadatos
En qué nodo está cada trozo
Comunicación directa entre clientes y datanodes
32. Ejercicio: Índice Inverso
Dada una serie de documentos, obtener la
lista de palabras asociando a cada
palabra el documento en el que aparece.
Ordenar los documentos según el mayor
número de apariciones
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Documento 1
En un lugar de la Mancha , de
cuyo nombre no quiero
acordarme no ha mucho tiempo
que vivía un hidalgo de los de
lanza en astillero, adarga
antigua, rocín flaco y galgo
corredor. Una olla de algo más…
Índice
inverso
lugar doc16, doc21, doc23, doc45
Mancha doc22, doc2, doc4, doc9, doc11
Quijote doc22, doc1, doc2, doc7
. . .
33. Índice inverso: buscadores
Esquema básico de un buscador
consulta
Búsqueda
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
P1
P1
DocuPm1 entos
en caché
Web
crawling
Web
Indexado
Índice
palabra1 doc1, doc23, doc4,…
palabra2 doc54,doc23
palabra3 doc1,doc7,d1oc9,doc5...
palabra4 doc7,doc9,doc10
…
34. Índice inverso
a d1 d2 d2 d3 reducer
reducer
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
d1 a b
d2 a c a
d3 a c
d2
d1
d2
a
b
c
a d1
b d1
a d2
c d2
a d2
a d3
c d3
mapper
mapper
mapper
reducer
b d1
c d2 d3
Mezcla
y
ordena
MapReduce
// devuelve cada palabra con su
// documento
mapper(d,ps) {
for each p in ps:
emit (p, d)
}
// ordena la lista de documentos por
// importancia
reducer(p,ds) {
ds1 = ordena(ds)
emit (p, ds1)
}
d1 d3
d3
35. Ejercicio: Canciones populares
A partir de los logs de los usuarios de un
servidor de música, obtener el número de
veces que se escucha cada canción
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Inspirado en last.fm
2/3/2010 9:41 Ana C1
2/3/2010 9:42 Dani C2
2/3/2010 9:44 Ana C2
2/3/2010 10:01 Luis C1
2/3/2010 10:10 Ana C3
2/3/2010 10:15 Ana C2
2/3/2010 10:20 Dani C2
2/3/2010 10:21 Luis C4
2/3/2010 10:24 Luis C2
2/3/2010 10:26 Luis C4
2/3/2010 10:27 Ana C4
Analizador
C1 2 oyentes, 2 escuchas
C2 3 oyentes, 5 escuchas
C3 2 oyentes, 2 escuchas
C4 2 oyentes, 3 escuchas
36. Ejercicio: canciones populares
reducer
reducer
reducer
reducer
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
9:41 A C1
MapReduce
C1 2
C2 3
C3 1
C4 2
9:42 D C2
9:44 A C2
10:01 L C1
10:10 A C3
10:15 A C2
10:20 D C2
10:21 L C4
10:24 L C2
10:26 L C4
2
5
3
10:27 A C4
mapper
mapper
mapper
mapper
C1 A
C2 D
C2 A
C1 L
C3 A
C2 A
C2 D
C4 L
C2 L
C4 L
C4 A
C1 A C
C2 D
C3 A
C4 L L
Mezcla
y
ordena
A A D L
A
37. Ejercicio: Amigos comunes
Encontrar la lista de amigos comunes
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Inspirado en Facebook
Ana Dani Juan Luis
Dani Ana Juan Luis Mar
Juan Ana Dani Luis Mar
Luis Ana Dani Juan Mar
Mar Dani Juan Luis
Dani
Juan
Ana
Luis
Mar
Si Ana visita la página de Juan, el sistema debería mostrar Dani, Luis
38. Ejercicio: Amigos comunes
reducer
reducer
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
A D J L
D A J L M
J A D L M
reducer
MapReduce
L A D J M
M D J L
A D D J L
A J D J L
A L D J L
A D A J L M
D J
D L
D M
mapper
mapper
mapper
mapper
A J L M
A J L M
A J L M
A J A D L M
D J
J L
J M
A D L M
A D L M
A D L M
A L A D J M
D L
J L
L M
A D J M
A D J M
A D J M
D M D J L
mapper J M D J L
L M D J L
reducer
reducer
reducer
reducer
reducer
reducer
A D J L
A J D L
A L D J
D J A L M
D L A J M
D M J L
J L A D M
J M D L
L M D J
A D D J L A J L M
A J D J L A D L M
A L D J L A D J M
D J A J L M A D L M
D L A J L M A D J M
D M A J L M D J L
J L A D L M A D J M
J M A D L M D J L
L M A D J M D J L
Mezcla
y
ordena
39. Ejercicio: Similaridad
A partir de los logs, encontrar número de
canciones en común entre 2 usuarios
Inspirado en Amazon (libros similares),
Facebook (posibles amigos), etc.
Habitualmente se realizan varios pasos
mapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
40. MapReduce2
Ejemplo: Similaridad
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
9:41 A C1
9:42 D C2
9:44 A C2
10:01 L C1
10:10 A C3
10:15 A C2
10:20 D C2
10:21 L C4
10:24 L C2
10:26 L C4
10:27 A C4
A C C1, 1
A D C2, 2
A L C2, 1
A L
mapper
mapper
C4, 2
A C C1, 1
A D C2, 2
A L C2 1 C4 2
Mezcla
y
ordena
reducer
reducer
reducer
A C 1
A D 2
A L 3
C1 A C
C2 D
C3 A
A A D L
C4 L L
A
MapReduce1
41. MapReduce en la práctica
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Múltiples aplicaciones:
Google en 2007, 20petabytes al día, en una
media de 100mil trabajos mapreduce/día
El algoritmo PageRank puede implementarse
mediante MapReduce
Casos de éxito:
Traducción automática, Similaridad entre ítems,
ordenamiento (Hadoop ordena 500GB/59sg (véase:
sortbenchmark.org)
Otras compañías: last.fm, facebook, Yahoo!,
twitter, etc.
42. Implementaciones MapReduce
Google (interna)
Hadoop (open source)
CloudMapReduce (basado en servicios de
Amazon)
Aster Data (SQL)
Greenplum (SQL)
Disco (Python/Erlang)
Holumbus (Haskell)
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
43. Librerías/lenguajes MapReduce
Hive (Hadoop): lenguaje de consulta
inspirado en SQL
Pig (Hadoop): lenguaje específico para
definir flujos de datos
Cascading: API para especificar flujos de
datos distribuidos
Flume Java (Google)
Dryad (Microsoft)
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
44. Agradecimientos
Parte del contenido de esta presentación ha
sido tomado de otras presentaciones
similares de:
Jimmy Lin
Jeff Dean
Jose Manuel Redondo
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra