BigData y MapReduce

2,229 views

Published on

Introducción general al problema del BigData y al modelo de programación MapReduce

Published in: Software
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,229
On SlideShare
0
From Embeds
0
Number of Embeds
216
Actions
Shares
0
Downloads
106
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

BigData y MapReduce

  1. 1. Big Data y MapReduce Tomás Fernández Pena Máster en Computación de Altas Prestaciones Universidade de Santiago de Compostela Computación en Sistemas Distribuidos Material bajo licencia Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) citius.usc.es
  2. 2. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  3. 3. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  4. 4. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Qué es Big Data? Wikipedia In information technology, big data is a collection of data sets so large and complex that it becomes difficult to process using on-hand database management tools or traditional data processing applications. The challenges include capture, curation, storage, search, sharing, analysis, and visualization. Big Data y MapReduce, CSD 1/38
  5. 5. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características del Big Data Las 5 Vs del BigData Volume enorme cantidad de datos generados Velocity rapidez con la que se generan y mueven esos datos Variety datos de múltiples tipos, estructurados y no-estructurados: texto, datos de sensores, audio, vídeo, click streams, ficheros de log, etc. Veracity datos correctos o incorrectos Value capacidad de extraer valor de los datos Big Data y MapReduce, CSD 2/38
  6. 6. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Aluvión de datos El mundo está creando más bits que nunca: en 2013, se había unos 4,4 Zettabytes (4, 4 1021), y se estiman unos 44 ZB en 2020 La cantidad de datos se dobla cada dos años Big Data y MapReduce, CSD 3/38
  7. 7. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Fuentes de datos Origen de los datos: Redes sociales Redes de sensores Datos de GPS Datos científicos . . . Big Data y MapReduce, CSD 4/38
  8. 8. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Data gap Big Data y MapReduce, CSD 5/38
  9. 9. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Retos tecnológicos (I) Búsqueda y refinamiento (Lucene, Solr, Elasticsearch, OpenRefine, ScraperWiki, BloomReach) Serialización (JSON, BSON, Apache Thrift, Apache Avro, Google Protocol Buffers) Sistemas de almacenamiento (HDFS, GFS, Lustre, Amazon S3) Servidores (Amazon EC2, Google Cloud Platform, HP Cloud, Heroku, AWS Elastic Beanstalk, OpenShift, Azure, pivotal, Whirr, Ambari) Procesamiento (Hadoop, Hive, Pig, Spark, Tez, Cascading, Azkaban, Oozie, mrjob, Twister, Apache Flume, Storm, S4, Falcon, Cloudera, MapR, Hortonworks, Platfora) Big Data y MapReduce, CSD 6/38
  10. 10. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Retos tecnológicos (II) Bases de datos (HBase, Cassandra, Accumulo, MongoDB, CouchDB, Hypertable, Riak, Amazon DynamoDB, Google BigTable, Sqoop) Análisis (R, Yahoo Pipes, IBM BigSheets, Greenplum, Datameer, Continuuity, WibiData) Lenguaje natural (Natural Language Toolkit, Apache OpenNLP, Boilerpipe, Calais) Machine learning (aprendizaje automático) (Weka, Apache Mahout, scikit-learn, Skytree) Visualización (R, Graphviz, Processing, Protovis, Tableau, Google Fusion Tables) Big Data y MapReduce, CSD 7/38
  11. 11. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones BigData OpenSource Big Data y MapReduce, CSD 8/38
  12. 12. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  13. 13. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Qué es MapReduce? Modelo de programación data-parallel diseñado para escalabilidad y tolerancia a fallos en grandes sistemas de commodity hardware Basado en la combinación de operaciones Map y Reduce Diseñado originalmente por Google (2004) Usado en múltiples operaciones Manejo de varios petabytes diarios Popularizado por la implementación open source Apache Hadoop Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, Last.fm, eBay, LinkedIn, Rackspace, Yahoo!, AWS, etc. Big Data y MapReduce, CSD 9/38
  14. 14. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Qué es MapReduce? Modelo de programación data-parallel diseñado para escalabilidad y tolerancia a fallos en grandes sistemas de commodity hardware Basado en la combinación de operaciones Map y Reduce Diseñado originalmente por Google (2004) Usado en múltiples operaciones Manejo de varios petabytes diarios Popularizado por la implementación open source Apache Hadoop Usado por múltiples organizaciones como Facebook, Twitter, Tuenti, Last.fm, eBay, LinkedIn, Rackspace, Yahoo!, AWS, etc. Big Data y MapReduce, CSD 9/38
  15. 15. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones ¿Para qué se usa? En Google: . Construcción de índices para el buscador (pagerank) . Clustering de artículos en Google News . Búsqueda de rutas en Google Maps . Traducción estadística En Facebook: . Minería de datos . Optimización de ads . Detección de spam . Gestión de logs En investigación: . Análisis astronómico, bioinformática, física de partículas, simulación climática, procesamiento del lenguaje natural, . . . Big Data y MapReduce, CSD 10/38
  16. 16. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Modelo de programación Inspirado en la programación funcional Operación Map: square n = n * n map op [ ] = [ ] map op (x: xs ) = op x : map op xs map (square) [1. .5] = [1,4,9,16,25] Operación Reduce: reduce op (x : [ ] ) = x reduce op (x: xs ) = (op x ( reduce op xs ) ) reduce (+) (map (square) [1. .5] ) = 55 Big Data y MapReduce, CSD 11/38
  17. 17. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Modelo de programación Entrada y salida: listas de pares clave/valor El programador especifica las funciones map y reduce Función Map: genera claves/valores intermedios map(K1, V1) ! list(K2, V2) . Para cada K1 y V1 se obtiene una lista intermedia . (K2, V2) es un par clave/valor intermedio Funcion Reduce: combina los valores intermedios para cada clave particular reduce(K2, list(V2)) ! (K3, list(V3)) . Para cada clave de salida K3 se genera una lista de valores - list(V3) suele tener un único valor - A menudo, K3 = K2 Big Data y MapReduce, CSD 12/38
  18. 18. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Automatización del proceso Entradas: (Ki 1,Vi 1) Entradas: (Kj 1,Vj 1) Entradas: (Kk 1,Vk 1) map map map (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) (Ki 2,Vi 2) Sistema de ficheros distribuido Barajado y ordenación por valores de claves (Ka 2,list(Va 2)) (Kb 2,list(Vb 2)) (Kc 2,list(Vc 2)) (Kd reduce reduce 2,list(Vd 2)) (Ka 3,Va 3) (Kb 3,Vb 3) (Kc 3,Vc 3) (Kd 3,Vd 3) Big Data y MapReduce, CSD 13/38
  19. 19. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  20. 20. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Cuenta las ocurrencias de cada palabra en ficheros de texto Entrada: K1 = Æ, V1 = línea Salida: pares (palabra, nº de ocurrencias) Pseudocódigo del Map map(key, value): // key: nada, value: línea de texto for each word w in value emit(w, 1) Pseudocódigo del Reduce reduce(key, values): // key: palabra; values: un iterador sobre los 1s emit(key, sum(values)) Big Data y MapReduce, CSD 14/38
  21. 21. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Cuenta las ocurrencias de cada palabra en ficheros de texto Entrada: K1 = Æ, V1 = línea Salida: pares (palabra, nº de ocurrencias) Pseudocódigo del Map map(key, value): // key: nada, value: línea de texto for each word w in value emit(w, 1) Pseudocódigo del Reduce reduce(key, values): // key: palabra; values: un iterador sobre los 1s emit(key, sum(values)) Big Data y MapReduce, CSD 14/38
  22. 22. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce en,1 la,1 mancha,1 vale,1 la,1 pena,1 un,1 lugar,1 de,1 más,1 Big Data y MapReduce, CSD 15/38
  23. 23. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce en,1 rostro,1 la,1 mancha,1 en,1 el,1 que,1 Big Data y MapReduce, CSD 15/38
  24. 24. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce corazón,1 amor,1 deseo,1 el,1 el,1 es,1 de,1 belleza,1 Big Data y MapReduce, CSD 15/38
  25. 25. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: WordCount Entrada Map Shuffle Sort Reduce Salida map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza amor, 1 corazón, 1 deseo, 1 en, 3 la, 3 mancha, 2 pena, 1 rostro, 1 vale, 1 belleza, 1 de, 2 el, 3 es, 1 lugar, 1 más, 1 que, 1 un, 1 map map reduce reduce amor,1 corazón,1 deseo,1 en,1,1,1 la,1,1,1 mancha,1,1 pena,1 rostro,1 vale,1 belleza,1 de,1,1 el,1,1,1 es,1 lugar,1 más,1 que,1 un,1 Big Data y MapReduce, CSD 15/38
  26. 26. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: Grep distribuido Entrada: Ficheros de texto Salida: Líneas que incluyen el patrón de búsqueda Pseudocódigo del Map map(key, value): // key: numero de línea; value: línea de texto if match(value,pattern) emit(value, 1) Reduce: Función identidad . Alternativa: no usar reduce (map-only job) Big Data y MapReduce, CSD 16/38
  27. 27. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: Sort distribuido Entrada: Pares (id, valor) Salida: Pares ordenados por id Map: Función identidad Reduce: Función identidad Función de particionado P: k1 k2 ) P(k1) P(k2) map map map reduce oveja [A-M] reduce avispa, hormiga cerdo vaca abeja, elefante pato, ñu abeja avispa cerdo elefante hormiga [N-Z] ñu oveja pato vaca Big Data y MapReduce, CSD 17/38
  28. 28. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: índice inverso Entrada: Pares (nombre_fichero, línea_de_texto) Salida: Pares (palabra, [ficheros_conteniendo_palabra]) Pseudocódigo del Map map(key, value): // key: nombre del fichero; value: línea de texto for each word w in value emit(w, key) Pseudocódigo del Reduce reduce(key, values): // key: palabra; value: nombres de ficheros emit(key, sort(values)) Big Data y MapReduce, CSD 18/38
  29. 29. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: índice inverso quij.txt en un lugar de la mancha, de cuyo chej.txt en su lugar yo no iría (cuyo, [quij.txt]) (de, [quij.txt]) (en, [chej.txt, quij.txt]) (iría, [chej.txt]) (la, [quij.txt]) (lugar, [chej.txt, quij.txt]) (mancha, [quij.txt]) (no, [chej.txt]) (su, [chej.txt]) (un, [quij.txt]) (yo, [chej.txt]) (en, [quij.txt]) (un, [quij.txt]) (lugar, [quij.txt]) (de, [quij.txt]) (la, [quij.txt]) (mancha, [quij.txt]) (cuyo, [quij.txt]) (en, [chej.txt]) (su, [chej.txt]) (lugar, [chej.txt]) (yo, [chej.txt]) (no, [chej.txt]) (iría, [chej.txt]) Mejora: eliminar duplicados en el map Big Data y MapReduce, CSD 19/38
  30. 30. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: palabras más frecuentes Entrada: Pares (nombre_fichero, línea_de_texto) Salida: Lista de las palabras que aparecen en más ficheros Solución con dos fases Map-Reduce . Fase 1: ejemplo indice inverso - (palabra, [ficheros_conteniendo_palabra]) . Fase 2: - Map(palabra, [ficheros])!(ocurrencias, palabra) - Resultados ordenados por ocurrencias (como en sort distribuido) Big Data y MapReduce, CSD 20/38
  31. 31. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: palabras más frecuentes (cuyo, [quij.txt]) (de, [quij.txt]) (en, [chej.txt, quij.txt]) (iría, [chej.txt]) (la, [quij.txt]) (lugar, [chej.txt, quij.txt]) (mancha, [quij.txt]) (no, [chej.txt]) (su, [chej.txt]) (un, [quij.txt]) (yo, [chej.txt]) (1, cuyo) (1, de) (2, en) (1, iría) (1, la) (2, lugar) (1, mancha) (1, no) (1, su) (1, yo) (2, en) (2, lugar) (1, cuyo) (1, de) (1, iría) (1, la) (1, mancha) (1, no) (1, su) (1, yo) Big Data y MapReduce, CSD 21/38
  32. 32. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: integración numérica Entrada: Pares (inicio, final) para los intervalos de integración Salida: integral de f (x) en un intervalo dado Pseudocódigo del Map map(key, value): // key: inicio del rango; value: final del rango sum=0 for(x = key; x value; x += step) sum += f(x) * step emit(, sum) Pseudocódigo del Reduce reduce(key, values): // key: no usado; values: resultados parciales emit(key, sum(values)) Big Data y MapReduce, CSD 22/38
  33. 33. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejemplo: integración numérica 1 2 3 4 5 0.6 0.5 (1, 0.5) (2, 0.58) (3, 0.6) (4, 0.59) (5, 0.57) Map Reduce 1.68 1.16 2.84 Map 1 (1, 4) Map 2 (4, 6) Big Data y MapReduce, CSD 23/38
  34. 34. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  35. 35. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Ejecución Diseñado para Escalabilidad con grandes volúmenes de datos . 1000’s de máquinas . 10,000’s de discos Coste reducido Equipos de bajo coste . baratos, pero no fiables Redes de bajo coste . elevadas latencias Facilidad de programación Tolerancia a fallos automática Big Data y MapReduce, CSD 24/38
  36. 36. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Problemas en la ejecución Los nodos baratos fallan, sobre todo si hay muchos . Tiempo medio entre fallos para 1 nodo = 3 años . Tiempo medio entre fallos para 1000 nodos = 1 día . Solución: implementar tolerancia a fallos en el sistema Red de bajo coste = elevada latencia . Solución: llevar la computación a los datos - Minimizar el movimiento de los datos Dificultad de programación . Solución: un modelo de programación paralelo intensivo en datos - Los usuarios escriben funciones map/reduce - El sistema distribuye el trabajo y maneja los fallos Big Data y MapReduce, CSD 25/38
  37. 37. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Problemas en la ejecución Los nodos baratos fallan, sobre todo si hay muchos . Tiempo medio entre fallos para 1 nodo = 3 años . Tiempo medio entre fallos para 1000 nodos = 1 día . Solución: implementar tolerancia a fallos en el sistema Red de bajo coste = elevada latencia . Solución: llevar la computación a los datos - Minimizar el movimiento de los datos Dificultad de programación . Solución: un modelo de programación paralelo intensivo en datos - Los usuarios escriben funciones map/reduce - El sistema distribuye el trabajo y maneja los fallos Big Data y MapReduce, CSD 25/38
  38. 38. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Problemas en la ejecución Los nodos baratos fallan, sobre todo si hay muchos . Tiempo medio entre fallos para 1 nodo = 3 años . Tiempo medio entre fallos para 1000 nodos = 1 día . Solución: implementar tolerancia a fallos en el sistema Red de bajo coste = elevada latencia . Solución: llevar la computación a los datos - Minimizar el movimiento de los datos Dificultad de programación . Solución: un modelo de programación paralelo intensivo en datos - Los usuarios escriben funciones map/reduce - El sistema distribuye el trabajo y maneja los fallos Big Data y MapReduce, CSD 25/38
  39. 39. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características de la ejecución Sistema de ficheros distribuido para gestionar los datos . GFS (Google File System), HDFS (Hadoop Distributed FS) . Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB en HDFS), con replicación Arquitectura master-worker Los map workers se inician en el mismo nodo o rack que sus datos de entrada . Minimiza el uso de la red Los map workers graban su salida en el disco local antes de servirla a los reduce workers . Permite recuperar una tarea reduce en caso de fallo Los reduce workers graban su salida en el sistema distribuido . Replicación en los resultados . Un fichero de salida por cada reduce Big Data y MapReduce, CSD 26/38
  40. 40. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características de la ejecución Sistema de ficheros distribuido para gestionar los datos . GFS (Google File System), HDFS (Hadoop Distributed FS) . Ficheros divididos en bloques (chunks o splits) grandes (64-128 MB en HDFS), con replicación Arquitectura master-worker Los map workers se inician en el mismo nodo o rack que sus datos de entrada . Minimiza el uso de la red Los map workers graban su salida en el disco local antes de servirla a los reduce workers . Permite recuperar una tarea reduce en caso de fallo Los reduce workers graban su salida en el sistema distribuido . Replicación en los resultados . Un fichero de salida por cada reduce Big Data y MapReduce, CSD 26/38
  41. 41. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Características de la ejecución Programa de usuario master worker worker worker worker Local write Write worker split 0 split 1 split 2 fichero de salida 0 fichero de salida 1 fork fork fork asigna maps asigna reduces Read Remote read, sort shuffle DFS Local DFS Big Data y MapReduce, CSD 27/38
  42. 42. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Número de Maps y Reduces M tareas map y R tareas reduce Hacer M+R mucho mayor que el número de PEs disponibles . Mejora la utilización del cluster Habitualmente, M igual al número de splits de entrada . Mejora el balance de carga dinámico y acelera la recuperación cuando falla un worker R menor que M . Salida repartida en R ficheros . Valor ajustable por el usuario . Función del tipo de problema y los recursos disponibles (memoria, nº cores,. . . ) Big Data y MapReduce, CSD 28/38
  43. 43. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Número de Maps y Reduces M tareas map y R tareas reduce Hacer M+R mucho mayor que el número de PEs disponibles . Mejora la utilización del cluster Habitualmente, M igual al número de splits de entrada . Mejora el balance de carga dinámico y acelera la recuperación cuando falla un worker R menor que M . Salida repartida en R ficheros . Valor ajustable por el usuario . Función del tipo de problema y los recursos disponibles (memoria, nº cores,. . . ) Big Data y MapReduce, CSD 28/38
  44. 44. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Número de Maps y Reduces M tareas map y R tareas reduce Hacer M+R mucho mayor que el número de PEs disponibles . Mejora la utilización del cluster Habitualmente, M igual al número de splits de entrada . Mejora el balance de carga dinámico y acelera la recuperación cuando falla un worker R menor que M . Salida repartida en R ficheros . Valor ajustable por el usuario . Función del tipo de problema y los recursos disponibles (memoria, nº cores,. . . ) Big Data y MapReduce, CSD 28/38
  45. 45. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Coordinación de las tareas El Master se encarga de coordinar las diferentes tareas . Estado de cada tarea: idle, in-progress, completed . Las tareas idle se planifican a medida que van quedando workers libres Cuando una tarea map acaba, le envía al Master la localización y tamaño de sus R ficheros intermedios, uno por tarea reduce El Master envía esta información a las tareas reduce Big Data y MapReduce, CSD 29/38
  46. 46. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Solapamiento de tareas La fase de reduce no puede comenzar hasta que se complete la de map Se puede simultanear la ordenación/mezcla con la ejecución del map . Mejora el balance de carga dinámico Proceso Programa Master Worker 1 Worker 2 Worker 3 Worker 4 MapReduce() Asigna tareas a workers Map 1 Map 3 Map 2 Read 1.1 Read 3.1 Read 1.2 Reduce 1 Read 2.1 Read 2.2 Read 3.2 Reduce 2 Tiempo Big Data y MapReduce, CSD 30/38
  47. 47. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Mediante heartbeats, el Master detecta fallos en los workers Si falla una tarea map o reduce . La tarea se reintenta en otro nodo - Correcto para los maps porque no tienen dependencias - Correcto para los reduces porque las salidas de los maps están en disco - Necesario que las tareas no tengas efectos colaterales . Si la misma tarea falla repetidamente, el trabajo MapReduce se aborta y se notifica al usuario (ajustable) Si falla un nodo completo . Relanzar sus tareas en curso en otros nodos . Reejecutar cualquier map que se hubiera ejecutado en el nodo - Necesario pues las salidas de los maps se perdieron Big Data y MapReduce, CSD 31/38
  48. 48. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Mediante heartbeats, el Master detecta fallos en los workers Si falla una tarea map o reduce . La tarea se reintenta en otro nodo - Correcto para los maps porque no tienen dependencias - Correcto para los reduces porque las salidas de los maps están en disco - Necesario que las tareas no tengas efectos colaterales . Si la misma tarea falla repetidamente, el trabajo MapReduce se aborta y se notifica al usuario (ajustable) Si falla un nodo completo . Relanzar sus tareas en curso en otros nodos . Reejecutar cualquier map que se hubiera ejecutado en el nodo - Necesario pues las salidas de los maps se perdieron Big Data y MapReduce, CSD 31/38
  49. 49. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Mediante heartbeats, el Master detecta fallos en los workers Si falla una tarea map o reduce . La tarea se reintenta en otro nodo - Correcto para los maps porque no tienen dependencias - Correcto para los reduces porque las salidas de los maps están en disco - Necesario que las tareas no tengas efectos colaterales . Si la misma tarea falla repetidamente, el trabajo MapReduce se aborta y se notifica al usuario (ajustable) Si falla un nodo completo . Relanzar sus tareas en curso en otros nodos . Reejecutar cualquier map que se hubiera ejecutado en el nodo - Necesario pues las salidas de los maps se perdieron Big Data y MapReduce, CSD 31/38
  50. 50. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Si una tarea no progresa (straggler o rezagada) . Se lanza una segunda copia de la tarea en otro nodo (ejecución especulativa) . Se toma la salida de la tarea que acabe antes, y se mata a la otra . Situación bastante común en clusters grandes - Debidos a errores hardware, bugs software, fallos de configuración, etc. - Una tarea rezagada puede enlentecer de forma importante un trabajo Si falla el Master . Se intenta relanzar de nuevo - Las tareas en proceso o acabadas durante el reinicio, se relanzan . Si continua fallando, el trabajo se aborta y se le notifica al usuario Big Data y MapReduce, CSD 32/38
  51. 51. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Tolerancia a fallos Si una tarea no progresa (straggler o rezagada) . Se lanza una segunda copia de la tarea en otro nodo (ejecución especulativa) . Se toma la salida de la tarea que acabe antes, y se mata a la otra . Situación bastante común en clusters grandes - Debidos a errores hardware, bugs software, fallos de configuración, etc. - Una tarea rezagada puede enlentecer de forma importante un trabajo Si falla el Master . Se intenta relanzar de nuevo - Las tareas en proceso o acabadas durante el reinicio, se relanzan . Si continua fallando, el trabajo se aborta y se le notifica al usuario Big Data y MapReduce, CSD 32/38
  52. 52. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  53. 53. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Combinador Un combinador (Combiner) es una función de agregación local para las claves repetidas de cada map Puede ahorrar ancho de banda al reducir el tamaño de los datos intermedios del map combiner(Km 2 )) ! (Km 3 , list(Vm 2 , list(Vm 3 )) Habitualmente, misma función que el reducer Se ejecuta en el mismo nodo que el map Solo puede utilizarse si la función reduce es commutativa y asociativa Big Data y MapReduce, CSD 33/38
  54. 54. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Combinador map En un lugar de la Mancha Más vale la pena en el rostro que la mancha en el corazón El amor es deseo de belleza map map reduce reduce Entrada Map Shuffle Sort Reduce Salida en,1 el,1 rostro,1 que,1 la,1 mancha,1 en,1 el,1 que,1 combiner combiner combiner en,2 rostro,1 la,1 mancha,1 Combiner Big Data y MapReduce, CSD 34/38
  55. 55. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Particionador El particionador (shuffler) por defecto es un hash de las claves: . hash(K) mod R Garantiza: . Claves iguales van al mismo reducer . Carga de los reducers relativamente bien balanceada (en muchos casos) Hay situaciones en las que puede interesar cambiarlo: . Ejemplo: hash(hostame(URL)) mod R . Todas las URLs de cada host se juntan en el mismo fichero de salida Big Data y MapReduce, CSD 35/38
  56. 56. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  57. 57. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Implementaciones Dos implementaciones más populares: Hadoop: Implementación open source de MapReduce Amazon Elastic MapReduce: ejecución de trabajos MapReduce en el cloud de AWS Big Data y MapReduce, CSD 36/38
  58. 58. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Amazon Elastic MapReduce Proporciona una interfaz web y herramientas CLI para ejecutar trabajos MapReduce en Amazon EC2 . Utiliza trabajos Hadoop Características principales . Los datos de entrada y salida se almacenan en Amazon S3 . Las ejecuciones se realizan en máquinas EC2 . Monitoriza los trabajos y “apaga” las máquinas despues de usarlas . Su uso añade un pequeño coste a la tarifa EC2 Big Data y MapReduce, CSD 37/38
  59. 59. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Índice 1 Big Data 2 Introducción a MapReduce 3 Ejemplos de uso 4 Ejecución 5 Optimizaciones 6 Implementaciones 7 Conclusiones Big Data y MapReduce, CSD
  60. 60. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones Conclusiones El modelo de programación MapReduce oculta la complejidad de la distribución del trabajo y la tolerancia a fallos Principales aspectos de diseño: . Altamente escalable, maneja los fallos hardware . Reduce los costes del hardware, programación y administración No es adecuado para todos los problemas, pero cuando funciona puede ahorrar mucho tiempo Muy apropiado para la ejecución en la nube Big Data y MapReduce, CSD 38/38

×