Este documento proporciona una introducción a Big Data y MapReduce. Explica conceptos clave como las 5 V del Big Data, fuentes comunes de datos masivos, y los retos tecnológicos asociados con el procesamiento de grandes cantidades de datos. También describe el modelo de programación MapReduce, incluyendo ejemplos como WordCount y Grep distribuido.
Esta presentación le pertenece a Edisson Fernando Sigua Loja
En la vida real existen muchos problemas relacionados a conexiones entre dos o más entes (ejemplo: comunicación telefónica, circuitos eléctricos, comunicación entre calles, etc.). Este tipo de problemas se pueden modelar usando un tipo de representación simbólica llamada grafos.
¿Qué son los grafos?
Los grafos son un conjunto de nodos y aristas conectadas entre sí.
En el ámbito de las ciencias de la computación es un tipo abstracto de datos (TAD), que consiste en un conjunto de nodos (también llamados vértices) y un conjunto de arcos (aristas) que establecen relaciones entre los nodos.
La recursividad o recursión es una técnica de programación que consiste en expresar una solución en términos de sí misma. Se dice que los algoritmos recursivos aplican una técnica de "divide y vencerás", para reducir un problema complejo en subproblemas más pequeños y fáciles de resolver.
Esta presentación le pertenece a Edisson Fernando Sigua Loja
En la vida real existen muchos problemas relacionados a conexiones entre dos o más entes (ejemplo: comunicación telefónica, circuitos eléctricos, comunicación entre calles, etc.). Este tipo de problemas se pueden modelar usando un tipo de representación simbólica llamada grafos.
¿Qué son los grafos?
Los grafos son un conjunto de nodos y aristas conectadas entre sí.
En el ámbito de las ciencias de la computación es un tipo abstracto de datos (TAD), que consiste en un conjunto de nodos (también llamados vértices) y un conjunto de arcos (aristas) que establecen relaciones entre los nodos.
La recursividad o recursión es una técnica de programación que consiste en expresar una solución en términos de sí misma. Se dice que los algoritmos recursivos aplican una técnica de "divide y vencerás", para reducir un problema complejo en subproblemas más pequeños y fáciles de resolver.
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
Una estructura de datos es una clase de datos que se puede caracterizar por su organización y operaciones definidas sobre ella. Algunas veces a estas estructuras se les llama tipos de datos.
en ellas encontramos las siguientes:
ESTRUCTURAS LÓGICAS DE DATOS:
ESTRUCTURAS PRIMITIVAS Y SIMPLES: ESTRUCTURAS LINEALES Y NO LINEALES:
Tutorial de JFLAP en español que explica paso a paso todas las funcionalidades de la herramienta y al final contiene varias prácticas que van de un nivel de dificultad bajo hacia uno más alto.
Cuadro sinóptico estructuras de datos y su clasificaciónAlex Uhu Colli
Una estructura de datos es una clase de datos que se puede caracterizar por su organización y operaciones definidas sobre ella. Algunas veces a estas estructuras se les llama tipos de datos.
en ellas encontramos las siguientes:
ESTRUCTURAS LÓGICAS DE DATOS:
ESTRUCTURAS PRIMITIVAS Y SIMPLES: ESTRUCTURAS LINEALES Y NO LINEALES:
Tutorial de JFLAP en español que explica paso a paso todas las funcionalidades de la herramienta y al final contiene varias prácticas que van de un nivel de dificultad bajo hacia uno más alto.
Operational Data Graph: Un enfoque innovador para optimizar las operaciones d...Neo4j
Josep Taruella, Cof-Founder, Graph Everywhere
Las áreas de IT cada vez deben gestionar entornos más complejos. Más datos, más aplicaciones, más entornos, más canales de interacción con los clientes, … y la irrupción del Cloud no ha hecho más que generar aún más elementos a gestionar mientras que los recursos con los que contamos no crecen a este mismo ritmo.
La tecnología de grafos proporciona una gran ayuda en múltiples ámbitos de la gestión de IT. Desde minimizar los tiempos de despliegue de aplicaciones, minimizar el downtime de los servicios, optimizar los procesos de gestión y movimiento de datos, generar entornos para simulación de análisis de impacto de cambios e incluso predecir las necesidades de mantenimiento de servicios/aplicaciones/servidores… usando técnicas de Graph Native Machine Learning.
En este slot os enseñaremos una demo de cómo el ODG ayuda a optimizar una malla de ejecución de procesos.
Información estadística e información geográfica en las nuevas tecnologías de...andalucialab
Presentación realizada por Francisco Romero, ingeniero de proyectos en Andalucía Lab para la Universidad Internacional Menéndez Pelayo durante el encuentro: "El turismo en Andalucía y su aproximación estadística desde una perspectiva territorial"
Taller: Limpieza y preparación de datos con Optimus y Apache SparkSoftware Guru
En este taller, impartido por uno de los desarrolladores de Optimus, aprenderás a realizar limpieza y preparación de datos utilizando Optimus en conjunto con Apache Spark y Python (PySpark).
Por Favio Vázquez
La computación distribuída es un nuevo modelo de computación que surgió con el objetivo de resolver problemas de computación masiva donde diferentes máquinas trabajan en paralelo formando un clúster de computación.
En los últimos años han surgido diferentes frameworks como Apache Hadoop, Apache Spark y Apache Flink que permiten resolver este tipo de problemas donde tenemos datos masivos desde diferentes fuentes de datos.
Dentro del ecosistema de Python podemos destacar las librerías de Pyspark y Dask de código abierto que permiten la ejecución de tareas de forma paralela y distribuida en Python.
Entre los puntos a tratar podemos destacar:
Introducción a la computación distribuida
Comparando tecnologías de computación distribuida
Frameworks y módulos en Python para computación distribuida
Casos de uso en proyectos Big Data
¿Eres desarrollador y emprendedor? En este ebook se recopilan tres análisis en profundidad con las mejores herramientas y las más populares entre los científicos de datos. Más información en http://bbva.info/2t1NEv7
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
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. 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. 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. 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. 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. 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. 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. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones
Data gap
Big Data y MapReduce, CSD 5/38
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. 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. Big Data Introducción a MapReduce Ejemplos de uso Ejecución Optimizaciones Implementaciones Conclusiones
BigData OpenSource
Big Data y MapReduce, CSD 8/38
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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