1. Cloud Computing Jose Emilio Labra Gayo University of Oviedo, Spain http://www.di.uniovi.es/~labra
2. Esquema de la presentación Motivación Cloud Computing MapReduce
3. Motivación 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 UniverseDecade: Are youready? http://www.emc.com/collateral/demos/microsites/idc-digital-universe/iview.htm
4. Ejemplos de fuentes de datos É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 Internet de las cosas Cada vez más dispositivos estarán conectados a Internet Aumento de Sensores y generadores de datos Acelerador de partículas LHC producirá 15 petabytes de datos al año http://public.web.cern.ch/public/en/lhc/Computing-en.html Frigorífico con Internet http://www.youtube.com/watch?v=sfEbMV295Kk&feature=player_embedded
6. Grandes Centros de Datos Google, Yahoo!, Amazon, etc. Centro de datos de Yahoo!
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
9. Ventajas 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 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 SaaS PaaS IaaS
12. IaaS: Infraestructura Se ofrecen recursos computacionales 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 AppEngine, VMForce, AppScale
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 Ejemplos: Aplicaciones Google (Gmail, GDocs, etc)
15. 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?
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
18. MapReduce 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 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 Programación funcional: Modelo de programación basado en: Ausencia de efectos laterales Funciones de orden superior Funciones similares a mapy 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 Lista de entrada función Lista de salida En Haskell: Calcular la longitud de todas las palabras de una lista > maplength [“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í 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 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)] v2 c2 MapReduce v1 c1 Entrada: [(Clave1,Valor1)] v2 c2 Salida: [(Clave2,Valor2)] v1 c1 v2 c2 v1 c1 v2 c2
24. Mapper Para cada (clave1,valor1) devuelve una lista de (clave2,valor2) Tipo: (clave1, valor1) [(clave2,valor2)] v1 k1 mapper vi1 c1 v2 k2 v3 k1 mapper vi2 c2 v4 k3 v5 k1 v6 k1 mapper vi3 c3 v7 k3
25. Mezcla y ordenación de claves El sistema se encarga de mezclar y ordenar resultados intermedios en función de las claves Mezcla y ordena v1 k1 v1 v3 v5 v6 k1 v2 k2 v3 k1 v4 v2 k3 k2 v5 k1 v6 k1 v4 k3 v7 v7 k3
26. Reducer Para cada clave2, toma la lista de valores asociada y los combina en uno solo Tipo: (clave2, [valor2]) (clave2,valor2) reducer v1 v3 v5 v6 vf1 k1 k1 reducer v2 vf2 k2 k2 reducer vf3 k3 v4 k3 v7
28. Ejemplo: Cuenta palabras Mezcla y ordena 1 a reducer 4 a mapper 1 1 1 1 a a b d1 1 b 1 a mapper reducer a c a d2 1 b 1 1 c b 1 a 1 2 c a reducer 1 c 1 mapper a c d3 1 c MapReduce // suma la lista de números de cada palabra reducer(p,ns) { sum = 0 for each nin ns { sum += n; } emit (p, sum) } // devuelve cada palabra con un 1 mapper(d,ps) { for eachp inps: emit (p, 1) }
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) 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 Replicación de bloques Namenodecontiene metadatos En qué nodo está cada trozo Comunicación directa entre clientes y datanodes
31. Sistema de ficheros distribuido Namenode fichero1: (B1 – N1 N2, B2 – N1 N2 N3) fichero2: (B3 – N2 N3, B4 – N1 N2) fichero3: (B5 – N1 N3) Cliente1 Cliente2 B1 B1 B4 B5 B2 Datanodes B4 B5 B3 B3 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 N1 N2 N3
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 Índice inverso lugar doc16, doc21, doc23, doc45 Manchadoc22, doc2, doc4, doc9, doc11 Quijotedoc22, doc1, doc2, doc7 . . . 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…
33. Índice inverso: buscadores Esquema básico de un buscador consulta Web Búsqueda P1 P1 P1 Web crawling Indexado Índice palabra1 doc1, doc23, doc4,… palabra2 doc54,doc23 palabra3 doc1,doc7,d1oc9,doc5... palabra4 doc7,doc9,doc10 … Documentos en caché
34. Índice inverso Mezcla y ordena d1 a d2 a reducer d1 d3 a b mapper d1 d2 d2 d3 d1 a d1 b d2 a a c a d2 d1 b mapper reducer d2 d1 c b d2 a d2 c d3 d3 a reducer d2 c d3 a c mapper d3 d3 c MapReduce // ordena la lista de documentos por // importancia reducer(p,ds) { ds1 = ordena(ds) emit (p, ds1) } // devuelve cada palabra con su // documento mapper(d,ps) { for eachp inps: emit (p, d) }
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 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 C1 2 oyentes, 2 escuchas C2 3 oyentes, 5 escuchas C3 2 oyentes, 2 escuchas C4 2 oyentes, 3 escuchas Analizador
36. Ejercicio: canciones populares Mezcla y ordena A A C1 C1 9:41 mapper D C2 D 9:42 C2 A C2 A 9:44 C2 reducer 2 2 mapper C1 L L C1 C1 10:01 A C C1 A C3 A reducer 3 10:10 5 C3 C2 C2 D A A D L A C2 10:15 A C2 reducer 1 C3 mapper A C3 D C2 D 10:20 C2 reducer 2 3 C4 L C4 10:21 L L L A C4 C4 L L C2 C2 10:24 mapper L C4 10:26 L C4 MapReduce A C4 10:27 A C4
37. Ejercicio: Amigos comunes Encontrar la lista de amigos comunes 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 Ana Dani Mar A D J L D A J L M J A D L M L A D J M M D J L Juan Luis Si Ana visita la página de Juan, el sistema debería mostrar Dani, Luis
38. Ejercicio: Amigos comunes A D D J L A J D J L mapper Mezcla y ordena D J L A reducer A L D J L J L D J L A J L M A D A D D L reducer A D A J L M A J A J D J L A D L M D J A J L M mapper D A J L M reducer D J A L D J L A D J M A L D L A J L M D M A J L M reducer A L M D J A J L M A D L M D J A J A D L M reducer A J M D L A J L M A D J M D L D J A D L M mapper J A D L M reducer J L D M J L A D L M A J L M D J L D M J M A D L M reducer A D M J L A D L M A D J M J L A L A D J M reducer D L A D L M D J L J M J M D L A D J M mapper L A D J M J L A D J M reducer D J A D J M D J L L M L M L M A D J M D J L D M MapReduce M D J L mapper D J L J M D J L L M
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
40. Ejemplo: Similaridad A C1 9:41 D C2 9:42 A C2 9:44 Mezcla y ordena A C C1, 1 reducer mapper C1, 1 1 A C A C L C1 A C 10:01 C1 A D C2, 2 reducer A D A D A C3 10:10 C2, 2 2 C2 D A A D L A L C2, 1 MapReduce1 A C2 10:15 reducer A L C4, 2 C2 1 C4 2 3 A L A L A mapper C3 D C2 10:20 L L A C4 L C4 10:21 MapReduce2 L C2 10:24 L C4 10:26 A C4 10:27
41. 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.
42. Implementaciones MapReduce Google (interna) Hadoop (open source) CloudMapReduce (basado en servicios de Amazon) Aster Data (SQL) Greenplum (SQL) Disco (Python/Erlang) Holumbus(Haskell)
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)
44. Agradecimientos Parte del contenido de esta presentación ha sido tomado de otras presentaciones similares de: Jimmy Lin Jeff Dean Jose Manuel Redondo