google

Upload: paulfrancis

Post on 02-Mar-2016

2 views

Category:

Documents


0 download

TRANSCRIPT

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Diseo de Sistemas Distribuidos: Google

    Alejandro Alonso

    Dpto. Ing. de Sistemas Telemticos

    Sistemas Operativos Distribuidos

    !1

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Tabla de contenidos1. Introduccin al caso de estudio

    2. Arquitectura global y principios de diseo

    3. Paradigmas de comunicacin

    4. Servicios de almacenamiento de datos y coordinacin

    5. Servicios de computacin distribuida

    6. Resumen

    !2

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    1. Introduccin al caso de estudioPresentacin de la infraestructura de Google

    Es uno de los sistemas distribuidos ms complejos en uso Su infraestructura ha satisfecho requisitos exigentes: escalabilidad, rendimiento, fiabilidad y carcter abierto

    Objetivo: organizar la informacin global y hacerla til y accesible universalmente

    Funciones bsicas de google: Motor de bsqueda: dada una consulta, retorna una lista ordenadas de referencias Proveedor de servicios en la nube: Ofrece un conjunto de aplicaciones y servicios en la nube

    !3

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Motor de bsquedaDada una consulta, devuelve una lista ordenada de los resultados ms relevantes

    Aspectos: rastreo, indexacin, clasificacin y arquitectura

    Rastreo (crawling): localizar y obtener los contenidos de la web: Googlebot

    Lee recursivamente un pgina web, obteniendo los enlaces y planificando nuevas operaciones de rastreo La frecuencia de las visitas depende de cuanto cambia Actualmente emplea un sistema basado en una infraestructura (Percolator) que admite actualizacin incremental de grandes conjuntos de datos

    !4

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Motor de bsquedaIndexacin: produce un ndice invertido ordenado de los contenidos Web

    Relaciona palabras o recursos documentales con las posiciones donde se encuentran en las pginas Tambin mantiene un ndice de enlaces: qu pginas apuntan a una pgina web

    Clasificacin: Importancia relativa de las pginas (PageRank) Importancia: depende del nmero de enlaces que la apuntan Tambin considera:

    la importancia de los sitios que apuntan la posicin del enlace, el tamao de su letra o si est en

    maysculas proximidad de las palabras de la consulta

    !5

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Motor de bsqueda: arquitectura originalPara comparar con la arquitectura actual

    !6

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Servicios en la nubeComputacin en la nube

    Conjunto de aplicaciones y servicios de almacenamiento y cmputo, basados en Internet Suficientes para la muchos usuarios, que les evita disponer de almacenamiento o aplicaciones locales

    Aplicaciones Google como servicios Aplicaciones web: tratan de reemplazar al software tradicional Programas ofimticos, calendarios, herramientas de colaboracin, etc.

    Plataforma Google como un servicio: APIs de sistemas distribuidos, para desarrollo de aplicaciones Google AppEngine: Ofrece su infraestructura de sistemas distribuidos como un servicio en la nube.

    !7

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Ejemplos de aplicaciones de Google

    !8

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    2. Arquitectura global y principios de diseo: Modelo Fsico

    Principio bsico: usar un gran nmero de PCs comunes, para construir un entorno efectivo de cmputo y almacenamiento distribuido

    PC con 2 TB de disco y 16 GB de DRAM Versin adaptada del ncleo de Linux

    La arquitectura es tolerante a fallos El software es el origen de fallos. 20 mquinas en medias se re-arrancan diariamente por fallos de software El hardware produce 1/10 de los fallos. Alrededor del 3% fallan al ao. Normalmente, discos y DRAM

    !9

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura fsicaLos PCs se organizan en racks de entre 40-80

    Tiene un switch ethernet para conectividad interna y externa

    Los racks se organizan en clusters Son la unidad de gestin principal Contiene al menos 30 racks Dos switches para conectividad con el exterior: redundancia

    Los clusters estn en centros de datos de Google

    La capacidad total de almacenamiento: rack de 80 PCs, en un cluster de 30: 4,9 petabytes Alrededor de 200 clusters Cifras totales no divulgadas

    !10

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura fsica

    !11

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura fsica

    !12

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura fsica

    !13

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Principios de diseo: Requisitos fundamentales

    Escalabilidad Gestionar ms informacin Resolver ms consultas Obtener mejores resultados

    Fiabilidad Requisitos exigentes de disponibilidad Mecanismos de deteccin, redundancia y tolerancia a fallos

    Rendimiento Proporcionar respuesta rpida, aumenta las consultas Respuesta: depende de los tiempo entre extremos

    Apertura (Openness): Facilitar el desarrollo de nuevas aplicaciones

    !14

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Infraestructura de Google

    !15

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Infraestructura de Google

    !16

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Principios de diseoSimplicidad:

    El software hace una cosa y la hace bien APIs tan sencillas como sea posible

    Rendimiento Cada milisegundo cuenta Estimacin del rendimiento de un diseo:

    Tamao de mensajes, acceso a disco, acceso a mutex, etc.

    Pruebas Pruebas exhaustivas al software Trazas y bitcoras

    !17

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    3. Paradigmas de comunicacin: Invocacin remota

    Protocol buffers: Se usa para almacenamiento e invocacin Proporciona un mecanismo para especificar y serializar datos Neutral respecto al lenguaje y a la plataforma Simple y muy eficiente

    Los mensajes se describen mediante un lenguaje Conjuntos de campos enumerados con identificador nico Se indica el tipo de la informacin Etiquetas para caracterizar los campos:Requerido, opcional o repetido

    !18

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Invocacin remota

    !19

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Invocacin remotaLa especificacin se compila

    Se genera cdigo para manipular los mensajes: Funciones: getters, setters, borrado y comprobar existencia de campos, toString

    Para los campos repetidos: Son una especie de arrays Funciones: longitud, obtener valor, cambiar valor, aadir, aadir conjunto de valores, borrar.

    Formato ms sencillo que XML Adaptado a las necesidades de Google

    No considera interoperabilidad No es autodefinido: los mensajes no incluyen metadatos

    Ms rpido y conciso

    !20

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Invocacin remotaPermite expresar servicios remotos

    !

    !

    El compilador produce un interfaz abstractos y un suplente (stub) para hacer invocaciones remotas

    Agnstico respecto al protocolo de RPC subyacente Interfaz abstracto: RpcChannel y RpcController

    Slo un parmetro de entrada y uno de salida Facilita extensibilidad y evolucin del software Pone la complejidad en los datos, en lugar de en la interfaz

    service SearchService { rpc Search (RequestType) returns (ResponseType)}

    !21

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Editor/SuscriptorDiseminacin de eventos rpidamente y con garanta de fiabilidad un gran nmero de receptores

    El sistema est basado en temas Ms eficiente que si estuviera basado en contenidos, aunque tiene menos poder expresivo Un evento: cabecera, conjunto de palabras clave e informacin Suscripcin: indica un tema y un filtro sobre las palabras clave

    Canales Se proporcionan canales asociados a temas Flujos de datos estticos, con alta transferencia de eventos (1Mbps) Si un canal genera poco flujo, se incluye en otro

    !22

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Editor/SuscriptorSe implementa como un conjunto de rboles

    La raz es el tema Las hojas son los suscriptores Los filtros se aplican lo ms cerca de la raz posible

    Fiabilidad: se mantienen rboles redundantes: Al menos dos por tema

    Calidad de servicio: se fuerza un lmite por usuario y por tema.

    !23

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Resumen de decisiones de diseo

    !24

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Resumen de decisiones de diseo

    !25

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    4. Servicios de almacenamiento de datos y coordinacin

    Sistema de ficheros distribuido (GFS) Acceso a datos no estructurados Optimizados para el estilo de datos y accesos requeridos por Google

    Chubby: Cerrojos distribuidos para coordinacin distribuida Almacenamiento de pequeas cantidades de datos

    Bigtable: Acceso a datos estructurados, en forma de tablas, que pueden ser indexadas de varias formas, como por fila o columna Base de datos distribuida que no proporciona todos los operadores relacionales

    !26

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Sistema de ficheros Google: RequisitosEjecuta sobre la plataforma de Google

    Debe supervisar su funcionamiento y detectar, tolerar y recuperarse de fallos

    Optimizarse para el tipo de uso dentro de Google El nmero de ficheros no es muy grande. Lo es su tamao El acceso es normalmente secuencial:

    Lecturas secuenciales Escrituras secuenciales, que aaden informacin al final del fichero

    Acceso concurrente de lectura y escritura

    Requisitos de la infraestructura Google Es importante el ancho de banda, ms que la velocidad de respuesta

    !27

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Sistema de ficheros Google: InterfazInterfaz de un sistema de ficheros convencional

    Espacio de nombres jerrquico. Ficheros identificados por el camino donde se encuentran.

    Operaciones comunes: crear, borrar, abrir, cerrar, leer, escribir.

    Operaciones especiales: Snapshot: Mecanismo eficiente para copiar un fichero o una estructura de directorios Record Append : Mltiples clientes aaden informacin al final del fichero.

    !28

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de GFSAlmacenamiento en trozos (chunks) de 64MB

    GFS relaciona ficheros con trozos

    Cada grupo (cluster) de GFS tiene un maestro y varios servidores de trozos

    El maestro gestiona los metadatos de los ficheros: Espacio de nombres, control de acceso, los trozos que lo forman

    !29

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de GFSLos trozos estn replicados (por defecto, tres veces)

    El maestro gestiona las rplicas

    Los metadatos se almacenan en una bitcora para recuperacin de fallos

    No se guarda la localizacin de rplicas, se consultan los trozos

    El maestro es nico, pero la bitcora de operaciones se almacena en mquinas remotas

    El maestro centralizado tiene una visin global del sistema de ficheros y optimiza su funcionamiento

    El maestro informa del trozo (incluidas rplicas) donde estn los datos requeridos y el cliente accede a ellos:

    !30

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de GFSEl tamao de los trozos

    Reduce la necesidad de contactar con el maestro Reduce la cantidad de metadatos a gestionar

    Problemas; est en desarrollo un maestro distribuido El maestro se convierte en un cuello de botella El tamao de los metadatos de un maestro aumenta, y no es posible mantenerlos en memoria

    Cache en el cliente: limitada a los metadatos del trozo. Se reducen problemas de coherencia

    Cache en el servidor, slo la que realiza Linux

    Bitcora: Se almacenan gran cantidad de informacin, que se supervisa para detectar fallos

    !31

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia en GFS

    Necesaria consistencia entre rplicas: Se relaja la coherencia y aumenta el rendimiento

    Funcionamiento: Cuando recibe un peticin de un cliente, el maestro le indica un primario y las rplicas restantes El cliente manda datos a las rplicas, que los guardan en buffer Cuando las rplicas reconocen la recepcin de los datos, ordena al primario la escritura, impone el orden y lo aplica localmente Luego, ordena a las rplicas el mismo orden y mandan reconocimiento Si todos correctos, el primario informa del xito de la operacin. En caso contrario, se informa del fallo. Entonces se vuelve a realizar la operacin. Si persiste el fallo, puede haber incoherencias

    !32

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    ChubbyProporciona cerrojos distribuidos para sincronizar actividades en un entorno de gran escala y asncrono

    Proporciona un sistema de ficheros, con almacenamiento fiable de ficheros pequeos

    Seleccionar un primario entre un conjunto de rplicas

    Se usa como un servicio de nombres en Google

    El consenso distribuido es su funcionalidad ms importante

    Hincapi en fiabilidad y disponibilidad, frente a rendimiento

    !33

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    ChubbyCada entidad/objeto con datos es un fichero

    Espacio de nombres: /ls/chubby_cell/directorio/../fichero

    Una entidad combina un fichero y un cerrojo Se detect la utilidad de aadir informacin al cerrojo

    Las operaciones sobre ficheros Se transfiere el fichero completo Se realizan de forma atmica

    Los cerrojos son informativos El sistema no bloquea el acceso a los datos asociados Los programadores deben usarlos de forma adecuada

    !34

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Interfaz de Chubby

    !35

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Funciones de ChubbyEleccin de un primario: eleccin sobre consenso

    Los candidatos tratan de adquirir un cerrojo asociado a la eleccin El que tiene xito es el primero. Escribe en el fichero su identidad Seleccin de un primario, basada en servicio de consenso

    Proporciona un servicio sencillo de eventos Pueden ser cambios en un fichero, manejador invlido, etc. Se ejecuta una funcin asncronamente (callback)

    Otras caractersticas No permite mover un fichero, ni enlaces simblicos Mantiene pocos metadatos

    !36

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de ChubbyLos componentes fundamentales:

    Cliente, que emplea una biblioteca para llamadas Una clula Chubby Se comunican mediante RPC

    La clula Chubby Compuesta por cinco rplicas

    Al menos tres deben estar operativas

    Las rplicas se sitan en diferentes racks La clula suele estar en el mismo cluster Las rplicas mantienen copias de una BD sencilla

    Contienen entidades chubby: cerrojos/ficheros Slo el maestro inicia operaciones de lectura/escritura de la BD Se emplea un protocolo de consenso

    !37

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de Chubby

    !38

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de ChubbyLos clientes buscan al maestro y le envan peticiones

    Si el maestro cae, las rplicas eligen otro

    Se establece una sesin entre el cliente y el maestro Se mantiene mientras ambos estn operativos (KeepAlive) La biblioteca copia localmente los ficheros usados

    Consistencia: para hacer una mutacin de un fichero: Se bloquea la operacin, hasta invalidar todas las caches Las caches nunca se modifican directamente

    !39

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia entre las rplicasBasada en Paxos: familia de protocolos para consenso distribuido para sistemas asncronos

    No es posible garantizar consistencia Puede que no termine

    Caractersticas del entorno Las rplicas operan a diferente velocidad y pueden fallar Tienen acceso a almacenamiento estable y persistente, que sobrevive a los fallos Los mensajes, se pueden perder, reordenar o duplicar. Se envan sin corrupcin y se puede retrasar un tiempo arbitrario

    Acuerdo: rplicas guardan el mismo valor en bitcoras La mayora de las rplicas funcionan el tiempo suficiente y con suficiente estabilidad de la red

    !40

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia entre las rplicasPropiedades de vivacidad:

    Si hay una mayora estable de servidores, si uno del conjunto inicia una actualizacin, algunos miembros del mismo ejecutarn la operacin en algn momento Si un servidor s ejecuta una operacin y existe un conjunto de servidores con s y r, si no hay fallos, entonces r ejecutar la actualizacin

    Caractersticas del algoritmo: El algoritmo debe elegir un coordinador, que puede fallar Los mensajes llevan el nmero de secuencia del coordinador t En la eleccin, se enva un nmero nico mayor que el observado: s | s mod n = ir y s es el menor valor > t

    n: nmero de rplicas ir: identificador de la rplica, 0

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia entre las rplicas

    Caractersticas del algoritmo: Las rplicas responden: Prometen seguir a la rplica, pues no han observado un

    nmero mayor Ack negativo, no votan por este coordinador e indican el

    mayor nmero observado Coordinador: la rplica con ms promesas recibidas (quorum) El coordinador elige un valor y manda el valor al quorum Las rplicas aceptan el valor y mandan un ack Si la mayora de las rplicas aceptan, se enva confirma el valor Si no el coordinador abandona la propuesta y se inicia eleccin

    Es necesario acuerdo en una secuencia de valores Multi-Paxos: se elige un coordinador para un conjunto de valores

    !42

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia entre las rplicas

    !43

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia entre las rplicas

    !44

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Consistencia entre las rplicas

    !45

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    BigtableSistema de almacenamiento distribuido para grandes volmenes de datos estructurados

    Gestiona el almacenamiento tolerante a fallos, creacin, borrado y gestin de grandes tablas Google Analytics almacena informacin de enlaces visitados asociados con usuarios que visitan un sitio en una tabla (200TB) y resume la informacin analizada en otra (20TB)

    Las bases de datos relacionales no sirven No proporcionan buen rendimiento y escalabilidad

    Bigtable Sigue el modelo de tablas Con una interfaz muy sencilla, adaptada a las necesidades de Google

    !46

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Interfaz de BigtableAcceso indexado por fila, columna y marca de tiempo:

    Filas: Identificadas por una clave, que es una tira de caracteres de hasta

    64KB Ej. direccin de una web Ordenadas lexicogrficamente por la clave Filas relacionadas se almacenan juntas Los accesos a las filas son atmicos

    Columnas: Nombre de columna: Nombre de familia:calificador Enfoque: pocas familias y muchas columnas Ej. informacin de la direccin de web: enlaces, lenguajes, etc

    Marca de tiempo Una celda tiene varias versiones, indexadas con este parmetro Puede ser tiempo real o tiempo lgico

    !47

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Interfaz de Bigtable

    !48

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Interfaz de BigtableProporciona funciones, como

    Creacin y borrado de tablas Creacin y borrado de familias de columnas Acceso a datos de una fila Escritura y borrado de datos de las celdas Mutaciones atmicas en filas, como acceso, escritura y borrado de datos Iteracin sobre familias de columnas, incluyendo el uso de expresiones regulares Asociar metadatos con tablas y familias de columnas, como listas de acceso

    !49

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de BigtableSe divide en tabletas, que son un conjunto de filas

    Relaciona las tabletas con ficheros en GFS Garantiza equilibrado de la carga entre los servidores

    Cluster: una instancia de Bigtable Almacena y gestiona un conjunto de tabletas Arquitectura similar a GFS: biblioteca, maestro y servidores de tabletas

    !50

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Almacenamiento de datos en BigtableEl almacenamiento de tablas en GFS:

    La tabla se dividen en tabletas, por filas, con un tamao medio 100-200 MB Una tableta se representa mediante

    conjunto de ficheros que almacenan datos en formato SSTable otras estructuras de almacenamiento para las bitcoras

    Relacin entre tabletas y SSTables mediante ndice jerrquico

    SSTable: mapa ordenado e inmutable de pares (clave, valor) operaciones para acceso y gestin eficiente incluye un ndice, que se carga en memoria inicialmente los cambios se escriben en una bitcora en GFS las lecturas se hacen combinando los datos en SSTable y en la

    !51

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Almacenamiento de datos en Bigtable

    !52

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Almacenamiento de datos en BigtableLa relacin entre tabletas y ficheros en memoria se gestiona en una estructura en rbol, donde se almacenan metadatos y la situacin de los datos de las tabletas

    !53

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Supervisin del funcionamientoUso interesante de Chubby:

    Mantiene un directorio en Chubby con ficheros representado los servidores de tabletas Los servidores obtienen un cerrojo sobre el fichero Su existencia indica la correcta operacin del servidor Operacin del servidor de tableta

    Los servidores supervisan su cerrojo. Si se pierde, se paran Intentan adquirir el cerrojo. Si el fichero se borra, terminan Si el servidor debe terminar, libera el cerrojo

    Operacin del maestro El maestro consulta el valor del cerrojo peridicamente Si est liberado, entonces intenta adquirirlo Si tiene xito, el problema est en el servidor Borra el fichero y asigna la tableta a otro servidor

    !54

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Equilibrado de cargaEl maestro tiene una visin global del sistema

    Servidores existentes, asignacin de tabletas del cluster Asigna tabletas a servidores, segn su carga

    El maestro tiene otro cerrojo Si se pierde, el maestro se para El sistema sigue operando, aunque sin funciones de control Al crear un nuevo maestro:

    Se asegura de que es el nico Recupera informacin de estado de los servidores

    !55

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Resumen de decisiones de diseo

    !56

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    5. Servicios de computacin distribuida: MapReduce

    Modelo sencillo de programacin para el desarrollo de aplicaciones paralelas y distribuidas

    Fragmentacin de datos de entrada y anlisis y procesamiento de estos fragmentos en paralelo Oculta los detalles de este enfoque al programador

    Interfaz de MapReduce: Basado en el siguiente patrn de funcionamiento:

    Partir los datos de entrada en un conjunto de trozos (chunks) Procesamiento paralelo de los trozos y generacin de un resultado

    intermedio Combinacin de los resultados intermedios

    Expresin en forma de dos funciones: Map: Parte de un conjunto de pares (clave, valor) y genera un

    conjunto intermedio de pares del mismo tipo

    !57

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Ejemplos del uso de MapReduce

    !58

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Arquitectura de MapReduceBiblioteca que permite al programador centrarse en las funciones Map y Reduce

    Se crean un conjunto de trabajadores Un maestro para supervisar

    !59

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Tolerancia de FallosGarantiza el determinismo de las operaciones

    El maestro comprueba si los trabajadores funcionan. Si fallo: Map: Se reprograma la operacin. Los resultados no estarn

    disponibles, pues se escriben en almacenamiento local Reduce: Se comprueba si se complet. Entonces, se usan los datos

    que estarn en GFS. En caso contrario, se vuelve a realizar

    Las salidas de los trabajadores se escriben atmicamente

    Gestin de trabajadores lentos Ocurre con cierta frecuencia (a veces problemas hardware) Cuanto se est completando una operacin, lanza trabajadores nuevos como respaldo a los lentos

    !60

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    SawzallLenguaje de programacin interpretado para realizar anlisis de datos paralelos sobre grandes conjuntos de datos en entornos altamente distribuidos

    Tamao de programas, menor que con MapReduce Esquema de cmputo dado y supone:

    La ejecucin de filtros y agregadores es conmutativa respecto a los registros. Se pueden ejecutar en cualquier orden

    Las operaciones de agregacin son asociativas

    !61

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    SawzallSe proporcionan un conjunto de agregadores por defecto:

    sumar, crear una coleccin, valor ms comn, etc

    Ejemplo

    count: table sum of int;total: table sum of float;!x: float = input;emit count

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    Resumen de decisiones de diseo

    !63

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    6. ResumenGoogle proporciona un motor de bsqueda, aplicaciones y una plataforma de cmputo en la nube

    Infraestructura Google Conjunto de componentes y modelo fsico para el desarrollo de aplicaciones en sistemas masivamente distribuidos Priman soluciones adaptadas a las necesidades de Google. Requisitos: escalabilidad, rendimiento, fiabilidad, apertura Entorno en continua evolucin

    !64

  • (Diciembre 2013) DIT/UPM Diseo de sistemas distribuidos: Google

    BibliografaCoulouris, Dollimore, Kindberg and Blair, Distributed Systems: Concepts and Design, Edicin 5, Addison-Wesley 2012, captulo 21

    Este captulo incluye referencias artculos originales de los desarrolladores de Google

    !65