cloud computing y mapreduce
TRANSCRIPT
Cloud Computing
Jose Emilio Labra Gayo
University of Oviedo, Spainhttp://www.di.uniovi.es/~labra
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Esquema de la presentación
Motivación
Cloud Computing
MapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Motivación
La era de los datosGeneració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
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejemplos de fuentes de datos
Éxito de la web:Mayor participación si cabe en la Web 2.0
Abaratamiento de dispositivosCámaras digitales, Teléfonos móviles, etc.
Youtube contiene unos 144 millones de vídeos*
Redes socialesFacebook 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
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Otras fuentes de datos
Internet de las cosasCada vez más dispositivos estarán conectados
a Internet
Frigorífico con Internet
http://www.youtube.com/watch?v=sfEbMV295Kk&feature=player_embedded
Aumento de Sensores y generadores de datos
Acelerador de partículas LHC producirá 15
petabytes de datos al añohttp://public.web.cern.ch/public/en/lhc/Computing-en.html
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Grandes Centros de Datos
Google, Yahoo!, Amazon, etc.
Centro de datos de Yahoo!
Cloud Computing
Pegatina creada por Brian Fitzpatrick para Google Code Hosting en 2006
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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
Ventajas
PrecioAmazon EC2 = Máquinas virtuales a 10¢/hora
Amazon S3 = Almacenamiento 15¢/mes/Gb
Algunos servicios = gratuitos!
EscalabilidadSe paga en función del consumo
Acceso a potentes centros de datos
Facilidad de uso y mantenimiento
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ventajas
Independencia dispositivos y localizaciónAcceso desde cualquier navegador en
cualquier sitio
Eficiencia: Centralización de infraestructuras, ahorro de
energía, control compartido de carga
Fiabilidad: Réplicas, recuperación de desastres
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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
PaaS
SaaS
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
IaaS: Infraestructura
Se ofrecen recursos computacionalesCapacidad de computación
Almacenamiento
Entorno virtualizado de máquinas conectadas por redEjemplos:
Eucalyptus, Amazon EC2, Amazon S3
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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
SaaS: Software
Aplicación software como servicio bajo demandaEl usuario no tiene que instalar/configurar
aplicaciones
Reduce coste de adquisición de software
Ejemplos: Aplicaciones Google (Gmail, GDocs, etc)
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Retos de Cloud Computing
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?
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
MapReduceProgramando en la nube
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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 nodosControl de nodos que fallan, balance de carga,
etc
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
MapReduce
Desarrollado por GooglePublicado en 2004
Implementación interna propietaria
Hadoop: implementación open sourceVersión inicial de Yahoo!
Actualmente Proyecto Apache
Adopción industrialFacebook, last.fm, etc.
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Características de MapReduce
Computaciones distribuidasTroceado de datos de entrada
Tolerancia a fallos de nodos
Portabilidad en nodos con hardware/software heterogéneo
Procesado por lotes de grandes cantidades de datosWrite-once. Read-many
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Orígenes funcionales
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
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Map en P. funcional
Lista de entrada
Lista de salida
Aplica una función a todos los elementos de una lista
función
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“]
En Haskell:
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Reduce en P. funcional
Lista de entrada
Valor de salida
Transforma una lista en un valor combinando los elementos entre sí
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
En Haskell (reduce fold)
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
MapReduce
Inspirado en P. funcional: 2 componentes: mapper y reducer
Los datos se trocean para su procesamiento
Cada dato asociado a una claveTransforma [(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
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 v7mapper
mapper
mapper
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Mezcla y ordenación de claves
El sistema se encarga de mezclar y ordenar resultados intermedios en función de las claves
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
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Reducer
Para cada clave2, toma la lista de valores asociada y los combina en uno solo
Tipo: (clave2, [valor2]) (clave2,valor2)
k1 v1 v3 v5 v6
k2 v2
k3 v4 v7 reducer
reducer
reducer vf1
vf2
vf3
k1
k2
k3
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Esquema general
c1 vi1
c1 vi1
c1 vi1 mapperreducer
reducer
reducer vf1
vf2
vf3
k1
k2
k3
mapper
mapper
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
MapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejemplo: Cuenta palabras
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 1mapper
mapper
mapper
reducer
reducer
reducera 1 1 1 1
b 1
c 1 1
Mezcla y
ordena
MapReduce
// devuelve cada palabra con un 1mapper(d,ps) { for each p in ps: emit (p, 1)}
// suma la lista de números de cada palabrareducer(p,ns) { sum = 0 for each n in ns { sum += n; } emit (p, sum)}
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Sistema MapReduce
El entorno de ejecución se encarga dePlanificación: Cada trabajo (job) se divide en
tareas (tasks)
Co-localización de datos/códigoCada nodo computacional contiene sus datos de
forma local (no existe un sistema central)
Sincronización: Tareas reduce deben esperar final de fase map
Gestión de errores y fallosAlta tolerancia a fallos de los nodos
computacionales
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Sistema de ficheros distribuido
Google desarrolló sistema distribuido GFS
Hadoop creó HDFSFicheros se dividen en bloques (chunks)
2 tipos de nodos: Namenode (maestro), datanodes (servidores datos)
Datanodes almacenan diferentes bloquesReplicación de bloques
Namenode contiene metadatosEn qué nodo está cada trozo
Comunicación directa entre clientes y datanodes
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Sistema de ficheros distribuido
Namenode
fichero1: (B1 – N1 N2, B2 – N1 N2 N3)fichero2: (B3 – N2 N3, B4 – N1 N2)fichero3: (B5 – N1 N3)
B1 B1
B4
B4
B5
B5
B3 B3
Cliente1
Cliente2
N1 N2 N3
DatanodesB2
B2 B2
Datos publicados por Google (2007)
200+ clusters
Muchos clusters de 1000+ máquinas
Pools de miles de clientes
4+ PB
Tolerancia fallos de HW/SW
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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
Documento 1En 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, doc45Mancha doc22, doc2, doc4, doc9, doc11Quijote doc22, doc1, doc2, doc7
. . .
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Índice inverso: buscadores
Esquema básico de un buscador
P1P1
P1Documentosen caché
Web crawling
WebIndexado
Índice
palabra1 doc1, doc23, doc4,…palabra2 doc54,doc23palabra3 doc1,doc7,d1oc9,doc5...palabra4 doc7,doc9,doc10…
consulta
Búsqueda
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Índice inverso
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 d3mapper
mapper
mapper
reducer
reducer
reducera d1 d2 d2 d3
b d1
c d2 d3
Mezcla y
ordena
MapReduce
// devuelve cada palabra con su // documentomapper(d,ps) { for each p in ps: emit (p, d)}
// ordena la lista de documentos por // importanciareducer(p,ds) { ds1 = ordena(ds) emit (p, ds1)}
d1 d3
d3
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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ónInspirado en last.fm
2/3/2010 9:41 Ana C12/3/2010 9:42 Dani C22/3/2010 9:44 Ana C22/3/2010 10:01 Luis C12/3/2010 10:10 Ana C32/3/2010 10:15 Ana C22/3/2010 10:20 Dani C22/3/2010 10:21 Luis C42/3/2010 10:24 Luis C22/3/2010 10:26 Luis C42/3/2010 10:27 Ana C4
Analizador
C1 2 oyentes, 2 escuchasC2 3 oyentes, 5 escuchasC3 2 oyentes, 2 escuchasC4 2 oyentes, 3 escuchas
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejercicio: canciones populares9:41 A C1
MapReduce
reducer
reducer
reducer
reducer
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
ordenaA A D L
A
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejercicio: Amigos comunes
Encontrar la lista de amigos comunesInspirado en Facebook
Ana Dani Juan LuisDani Ana Juan Luis MarJuan Ana Dani Luis MarLuis Ana Dani Juan MarMar Dani Juan Luis
Si Ana visita la página de Juan, el sistema debería mostrar Dani, Luis
Dani
Juan
Luis
Mar
Ana
A D J L
D A J L M
J A D L M
L A D J M
M D J L
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejercicio: Amigos comunesA D J L
D A J L M
J A D L M
reducer
reducer
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
D M D J L
J M D J Lmapper
A J A D L M
D J
J L
J M
L M D J L
A L A D J M
D L
J L
L M
A J L M
A J L M
A J L M
A D L M
A D L M
A D L M
A D J M
A D J M
A D J M
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
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
Ejercicio: Similaridad
A partir de los logs, encontrar número de canciones en común entre 2 usuariosInspirado en Amazon (libros similares),
Facebook (posibles amigos), etc.
Habitualmente se realizan varios pasos mapReduce
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
MapReduce2
Ejemplo: Similaridad9: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
mapperC4, 2
A CC1, 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
C4 L L
A A D L
A
MapReduce1
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
MapReduce en la práctica
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.
Jose Emilio Labra Gayo, http://www.di.uniovi.es/~labra
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
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
Agradecimientos
Parte del contenido de esta presentación ha sido tomado de otras presentaciones similares de:
Jimmy Lin
Jeff Dean
Jose Manuel Redondo