modelo de programación mapreduce -...
TRANSCRIPT
Fernando Pérez Costoya
Sistemas Distribuidos
Modelo de programación
MapReduce
Modelo de programación
MapReduce
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 ...
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?
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
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)
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
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, ...
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
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
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
MapReduce11
Fernando Pérez Costoya
Contando palabras con MR-Hadoop
Data-Intensive Text Processing with MapReduce
Jimmy Lin and Chris Dyer. University of Maryland
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
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)
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
MapReduce15
Fernando Pérez Costoya
Visión lógica completa de ejecución MR
Data-Intensive Text Processing with MapReduce. Lin & Dyer.
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
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
MapReduce18
Fernando Pérez Costoya
Ejemplo 1
MapReduce19
Fernando Pérez Costoya
Ejemplo 2a
MapReduce20
Fernando Pérez Costoya
Ejemplo 2b
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
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”
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................................
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), ................................
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
MapReduce26
Fernando Pérez Costoya
Visión física de ejecución Google-MR
MapReduce27
Fernando Pérez Costoya
Sincronización implícita en MR
Extraído presentación Jeff Dean (Google)
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
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