• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cloud Computing y MapReduce
 

Cloud Computing y MapReduce

on

  • 3,174 views

Trasparencias de un curso de verano sobre CloudComputing y MapReduce

Trasparencias de un curso de verano sobre CloudComputing y MapReduce

Statistics

Views

Total Views
3,174
Views on SlideShare
2,949
Embed Views
225

Actions

Likes
4
Downloads
65
Comments
1

8 Embeds 225

http://jelabra.blogspot.com 166
http://jelabra.blogspot.com.es 46
http://jelabra.blogspot.com.ar 8
http://static.slidesharecdn.com 1
http://www.jelabra.blogspot.com 1
http://jelabra.blogspot.be 1
http://jelabra.blogspot.mx 1
http://jelabra.blogspot.nl 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Bienn! :D
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cloud Computing y MapReduce Cloud Computing y MapReduce Presentation Transcript

    • Cloud Computing
      Jose Emilio Labra Gayo
      University of Oviedo, Spain
      http://www.di.uniovi.es/~labra
    • Esquema de la presentación
      Motivación
      Cloud Computing
      MapReduce
    • 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
    • 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
    • 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
    • Grandes Centros de Datos
      Google, Yahoo!, Amazon, etc.
      Centro de datos de Yahoo!
    • Cloud Computing
      Pegatina creada por Brian Fitzpatrick para
      Google CodeHosting en 2006
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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)
    • 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?
    • MapReduceProgramando en la nube
    • 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
    • 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.
    • 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
    • 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
    • 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“]
    • 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
    • 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
    • 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
    • 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
    • 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
    • Esquema general
      Mezcla y ordena
      v1
      k1
      reducer
      vf1
      k1
      mapper
      v1
      v3
      v5
      v6
      k1
      vi1
      c1
      v2
      k2
      v3
      k1
      reducer
      mapper
      vi1
      c1
      vf2
      k2
      v4
      v2
      k3
      k2
      v5
      k1
      v6
      reducer
      vf3
      k3
      k1
      v4
      k3
      v7
      mapper
      vi1
      c1
      v7
      k3
      MapReduce
    • 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)
      }
    • 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
    • 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
    • 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
    • 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…
    • Í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é
    • Í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)
      }
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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.
    • Implementaciones MapReduce
      Google (interna)
      Hadoop (open source)
      CloudMapReduce (basado en servicios de Amazon)
      Aster Data (SQL)
      Greenplum (SQL)
      Disco (Python/Erlang)
      Holumbus(Haskell)
    • 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)
    • Agradecimientos
      Parte del contenido de esta presentación ha sido tomado de otras presentaciones similares de:
      Jimmy Lin
      Jeff Dean
      Jose Manuel Redondo