modelo de programación mapreduce -...

29
Fernando Pérez Costoya Sistemas Distribuidos Modelo de programación MapReduce Modelo de programación MapReduce

Upload: hoangdiep

Post on 01-Feb-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

Fernando Pérez Costoya

Sistemas Distribuidos

Modelo de programación

MapReduce

Modelo de programación

MapReduce

Page 2: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce2

Fernando Pérez Costoya

Tecnologías procesado masivo de datos

Serv. genéricos

Alm. lógico

Alm. físico

Modelo de programación

Serv. genéricos

BigTable

GFS

MapReducePregel ...

Page 3: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce3

Fernando Pérez Costoya

Vamos a contar palabras

• Entrada:– Conjunto de ficheros de texto– Cada fichero: colección de registros– Cada registro representa un documento:

• ID_documento y Contenido de documento• Salida

– Secuencia ordenada de parejas: (palabra, nº apariciones)• ¿Cómo lo programarías en un entorno distribuido?

– Maestro-trabajador:• Maestro particiona entrada: nº particiones >> nº trabajadores • Maestro va asignando particiones a trabajadores• Trabajador procesa partición extrayendo cada palabra• ¿Cómo se realiza el recuento? ¿Quién lo hace?

Page 4: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce4

Fernando Pérez Costoya

Contando...

DocID X

Hola Mundo...

DocID Y

Adiós Mundo Cruel...

DocID 1

El País, El Mundo, ABC

DocID 2

Hola Y Adiós

Fichero1

Fichero2

ABC 1

Adiós 2

Cruel 1

El 2

Hola 2

Mundo 3

País 1

Y 1

Page 5: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce5

Fernando Pérez Costoya

Posible solución

• 2 tipos de trabajadores (futuros Map y Reduce):– Extractor: Obtiene palabras de su partición– Acumulador: Recuento de apariciones de un subconjunto de palabras

• Modo de operación:– Maestro despliega extractores y acumuladores– Extractor obtiene palabras y las envía a acumulador correspondiente

• Función hash: palabra → nº acumulador– Acumulador recibe palabras que le corresponden

• Las va ordenando• Realiza el recuento generando el resultado

• Optimización:– Extractor con acumulación parcial de su partición (futuro Combiner)

• Envía a acumulador correspondiente parejas: (palabra, cuenta parcial)

Page 6: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce6

Fernando Pérez Costoya

Trabajo sucio

• Programador tiene que ocuparse de aspectos tales como:– Partición de datos de entrada– Despliegue de maestro y trabajadores– Esquema de asignación de trabajos a trabajadores– Comunicación y sincronización entre procesos– Tratamiento de caídas de procesos

• Además, parte de ese trabajo se repite en problemas afines• ¿Se podría automatizar ese trabajo dejando que el

programador se ocupará sólo de la funcionalidad deseada?• Eso pretende el modelo de programación MapReduce (MR)

– Otra solución de Google basada en especialización– Nuevamente con éxito: numerosos clones de libre distribución

Page 7: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce7

Fernando Pérez Costoya

Modelo de programación MapReduce

• Basado en funciones Map y Reduce– Map: (k1,v1) → list(k2,v2)– Reduce: (k2,list(v2)) → list(v2)

• Programador sólo desarrolla funciones Map y Reduce– Entorno de ejecución se encarga de todo lo demás

• Inspirado en ops. map y fold de programación funcional• Salida de un MR puede ser entrada de otro MR (pipeline)

– 2003: MR con 8 etapas para indexación en servicio de búsqueda• Programa externo repite operación MR hasta convergencia

– P.e. en algoritmo PageRank• Además de modelo prog., MR se refiere a una implementación

– MR Google, MR Hadoop, ...

Page 8: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce8

Fernando Pérez Costoya

Map y Fold

Data-Intensive Text Processing with MapReduce

Jimmy Lin and Chris Dyer. University of Maryland

• Map/Fold sin efectos laterales • ¿Map/Reduce?: a discreción del programador

Page 9: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce9

Fernando Pérez Costoya

Visión lógica de ejecución de MR

Data-Intensive Text Processing with MapReduce

Jimmy Lin and Chris Dyer. University of Maryland

Page 10: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce10

Fernando Pérez Costoya

Contando palabras con MapReduce

– Map: (docID, contenido) → list(palabra, “1”)– Reduce: (palabra, list(“1”, ...)) → nº apariciones de palabra

MapReduce: Simplified data processing on large clusters

Jeff Dean y Sanjay Ghemawat; OSDI ’04

Page 11: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce11

Fernando Pérez Costoya

Contando palabras con MR-Hadoop

Data-Intensive Text Processing with MapReduce

Jimmy Lin and Chris Dyer. University of Maryland

Page 12: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce12

Fernando Pérez Costoya

(Des)ventajas de m. programación MR

• Ventajas– Automatiza aspectos de paralelismo y tolerancia a fallos– Permite que programador se ocupe sólo de funcionalidad requerida– Factorización de código

• Mejora biblioteca MR beneficia automáticamente a todas aplicaciones• Desventajas

– Modelo forzado para cierto tipo de aplicaciones que obliga a• Crear etapas adicionales MR para ajustar aplicación a modelo• Emitir valores intermedios extraños• Crear funciones Map y/o Reduce de tipo identidad (sort paralelo)

– Sólo adecuado para operaciones de tipo batch• MR vs. BB.DD. paralelas: MR “a major step backwards”

– http://databasecolumn.vertica.com/database-innovation/mapreduce-a-majorstep-backwards/– Réplica de creadores de MR– MapReduce: A flexible Data Processing Tool. J. Dean y S. Ghemawat. CACM, enero 2010

Page 13: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce13

Fernando Pérez Costoya

Combiners

• Optimización: agregación local antes de shuffle & sort– Operación de agregación debe ser conmutativa y asociativa

• Combiner ≈ Mini-Reducer: Map »»» Combine »»» Reduce– Map: (k1,v1) → list(k2,v2)– Combine:(k2,list(v2)) → list(k2,v2)– Reduce: (k2,list(v2)) → list(v2)

class COMBINERmethod COMBINE(term t; counts [c1; c2; : : :])

sum ← 0for all count c ∈ counts [c1; c2; : : :] do

sum ← sum + cEMIT(term t, count sum)

Page 14: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce14

Fernando Pérez Costoya

Control de particiones

• Por defecto reparto de valores intermedios entre reducers:– reducer = hash(key2) mod nº total de reducers

• Programador puede especificar función de partición alternativa– Puede usarse para mejorar equilibrado de carga en reducers

• Cada reducer recibe valores que le corresponden ordenados– Programador puede definir orden alternativo

• P.ej. que tenga en cuenta sólo cierta parte de la clave

Page 15: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce15

Fernando Pérez Costoya

Visión lógica completa de ejecución MR

Data-Intensive Text Processing with MapReduce. Lin & Dyer.

Page 16: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce16

Fernando Pérez Costoya

Formato y soporte de E/S

• Programador especifica formato registros entrada y salida– En Google MR usa Protocol Buffers

• Formato binario eficiente• Programador puede usar diversos soportes de entrada y salida

– GFS– BigTable– Base de datos SQL, ...– Programador puede desarrollar sus propios Reader y Writer

Page 17: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce17

Fernando Pérez Costoya

Ejemplos adicionales

1. Entrada: (término, número); Calcular media/término2. Cálculo matriz de aparición conjunta de palabras M

– Mij: nº veces que palabra i aparece en mismo contexto que palabra j• Frase, párrafo, documento o en ventana de K palabras

a) Solución basada en “pares”b) Solución basada en “tiras”• 2 consideraciones sobres estas soluciones:

• Ambas pueden usar combiners; más efectivos para solución de tiras• Potencial problema de escalabilidad en solución de tiras

• IMPORTANTE:• Map/combine/reduce puede guardar datos en memoria antes emitir

• Mejora eficiencia pero potencial problema de escalabilidad• Extraídos de Data-Intensive Text Processing with

MapReduce de Jimmy Lin and Chris Dyer

Page 18: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce18

Fernando Pérez Costoya

Ejemplo 1

Page 19: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce19

Fernando Pérez Costoya

Ejemplo 2a

Page 20: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce20

Fernando Pérez Costoya

Ejemplo 2b

Page 21: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce21

Fernando Pérez Costoya

Más ejemplos (OSDI’ 04)

• Recuento de accesos a páginas web– Entrada: colección de logs con URLs

• Obtención de grafo web inverso (qué URLs apuntan a otra)– Entrada: páginas web

• Obtención de vector con recuento de palabras por host– Entrada: colección de documentos con URL como ID del documento– Salida: (host, vector con frecuencia de cada término)

• NOTA: De URL se extrae el host• Índice invertido de términos

– Entrada: colección de documentos– Salida: en qué documentos aparece cada término

Page 22: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce22

Fernando Pérez Costoya

Un punto débil de MR: Join

• Hasta ahora un único conjunto de datos de entrada• Join implica múltiples conjuntos que hay que cruzar

– No encaja bien con naturaleza de MR• Ejemplo con relación 1-N:

– Cjto. 1: datos de usuarios• UID, edad, profesión, estado civil, ...

– Cjto. 2: datos de compras• OPID, ID_usuario, fecha, precio, ...

– Objetivo: Precio medio de compras/profesión– Supuesto: Mapper único que puede conocer a qué cjto. ∈ sus datos

• Alternativa: especificar un Mapper para cada tipo de cjto. de entrada– Solución basada en 2 etapas MR

• 2 versiones de la 1ª etapa para analizar problemas de escalabilidad• 2ª etapa igual que “Ejemplo 1”

Page 23: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce23

Fernando Pérez Costoya

1ª versión de 1ª etapa de Join

• M1 recibe una especie de union (rg. usuario | rg. compra) – Si entrada rg. usuario → Emite(UID, profesión)– Si entrada rg. compra → Emite(UID, precio)

• R1 recibe (UID, [profesión | precio]) ordenados por UID– Debe emitir(profesión, precio) por cada compra– Pero no puede hacerlo hasta que llegue profesión – Mientras debe guardar compras de ese UID– Potencial problema de escalabilidadUID101 101UID101 57UID101 72UID101 enfermero → Emite(enfermero, 101), Emite(enfermero, 57), Emite(enfermero, 72) UID101 111 → Emite(enfermero, 111) UID222 543................................

Page 24: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce24

Fernando Pérez Costoya

2ª versión de 1ª etapa de Join

• M1 recibe (rg. usuario | rg. compra) – Si entrada rg. usuario → Emite([UID, tipo1], profesión)– Si entrada rg. compra → Emite([UID, tipo2], precio)

• Partición1: Usar sólo UID de la clave• Orden1: Usar UID y tipo

– Reducer recibirá primero la profesión y luego las compras • R1 recibe (UID, [profesión | precio]) ordenados por UID y tipo

– Si tipo1 → aux = profesión– Si tipo2 → Emite(aux, precio) UID101 tipo1 enfermero → aux = enfermeroUID101 tipo2 101 → Emite(aux, 101)UID101 tipo2 57 → Emite(aux, 57), ................................

Page 25: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce25

Fernando Pérez Costoya

Ejecución MR-Google

• Maestro-trabajador con nº trabajadores T configurable• Entrada dividida en M partes: M tareas Map

– Tamaño de partición TP configurable: típico 64MB (no sorprende...)• Resultados Map divididos en R particiones: R tareas Reduce

– Valor configurable por programa• Maestro reparte tareas M y R entre trabajadores

– (M + R) >> T– Ejemplo: TP = 64MB, M = 200.000; R = 5.000, T = 2.000

• Aspecto clave en el rendimiento de MR sobre GFS– Tarea M → trabajador en nodo que contiene réplica de datos

• Si no posible, lo más cercano posible

Page 26: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce26

Fernando Pérez Costoya

Visión física de ejecución Google-MR

Page 27: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce27

Fernando Pérez Costoya

Sincronización implícita en MR

Extraído presentación Jeff Dean (Google)

Page 28: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce28

Fernando Pérez Costoya

Tolerancia a fallos en MR-Google

• Caída de un trabajador– Se vuelven a ejecutar en otros nodos las tareas no completadas– También las tareas Map completadas por ese trabajador

• Sus resultados no están accesibles por almacenarse en disco local• Caída de maestro

– Versión original: abortar computación– Alternativa: log de ejecución del maestro en GFS

• Tareas de reserva: ejecución especulativa– (NOTA: aspecto relacionado con rendimiento no t. a fallos)– Máquina lenta puede arruinar eficiencia de ejecución (straggler)– Cuando op. MR cerca de final se activan tareas de reserva

• Misma tarea ejecutada en otro nodo• Se usa resultado de primera que termina

Page 29: Modelo de programación MapReduce - laurel.datsi.fi.upm.eslaurel.datsi.fi.upm.es/_media/docencia/asignaturas/sd/mapreduce-1... · • Extraídos de Data-Intensive Text Processing

MapReduce29

Fernando Pérez Costoya

Percolator

• Requisitos de Google Caffeine no factibles con MapReduce– Su motor de búsqueda requiere actualización “continua” de índices– Requiere modelo incremental de procesar repositorio de datos

• Frente a modelo batch de MapReduce• Percolator: Nueva infraestructura de procesamiento masivo

– GFS + BigTable + Concepto de “observador”• Observador: código ejecutado ante cambios en datos• Puede causar una ejecución en cadena de otros observadores

Large-scale Incremental Processing Using Distributed Transactions and Notifications. D. Peng, F. Dabek, OSDI’ 10