Tecnología
big data
Dr. Jose María Alvarez-Rodríguez
josemaria.alvarez@uc3m.es
www.josemalvarez.es
Contenidos
- Introducción
- Conceptos clave
-
Arquitectura y Tecnología
- Web de datos
-
Ejemplos prácticos
- FAQ
- Conclusiones
INTRODUCCIÓN
¿Seguro?
Según Forbes...
Según ongridventures...
Según Ux Sears...
Predicción de gartner
CONCEPTOS CLAVE
¿qUÉ ES BIG DATA?
3 v's
o
6 V'S
volumen
VOLUMEN
-
Cantidad de datos que se han de procesar
-
Crecimiento continuo
¿Tamaño para ser considerado big data?
- Al menos 1 TB hasta el orden de PB (en el futuro EB)
- ...pero también dependerá de la calidad
variedad
variedad
- Tipos
- Documentos
- Imágenes
- Vídeos
- Posts en redes sociales
- Datos científicos, geográficos, etc.
- Formatos (estructurado y no estructurado)
- CSV, TSV, MSExcel
- PNG, JPG, MPEG, etc.
- PDF, HTML, etc.
- Acceso
- Ficheros
- Lenguajes de consulta
velocidad
velocidad
- Actualización y Tipo de procesamiento
- Batch
- Periódico
- Eventos
- Cercano a tiempo real
- Tiempo real
veracidad
veracidad
- Calidad
- Limpieza
- Fuente de datos confiable
- ...
VISCOSIDAD
viscosidad
-
Resistencia a formar parte del flujo de datos
-
Capacidad de integración de los datos
-
Tipos de procesamiento:
- Stream
- Bus de integración
- Procesamiento de eventos complejos (CEP)
VIRALIDAD
viralidad
- Capacidad de propagación de la información
- Velocidad
- Tiempo
Big data es...
- Es lo mismo que resolver problemas "Small Data"
- ...pero el disponer de muchos datos implica...
- Nuevas arquitecturas (distribuidas)
- Necesidades de almacenamiento
- Diferentes tipos de procesamiento
- ...
- para resolver problemas existentes con un mejor/nuevo enfoque
Old wine in new bottles!
Todo en uno...
¿pOR QUÉ BIG DATA?
mejora en las capacidades de almacenamiento
Mayor capacidad de procesamiento
Disponibilidad de datos
...para resolver problemas...
...en Algunos sectores...
...y más...
caso real de éxito-Walmart
arquitectura
¿Qué se necesita?
- Almacenar grandes cantidades de datos
- Integrar fuentes de datos
- Procesar y consultar en
- Batch
- Tiempo real
- ...para proporcionar servicios de
- Toma de decisiones
- Informes, etc.
- ....y con capacidades de...
- Escalabilidad
- Tolerancia a fallos
- Replicación
¿alguna idea?
¿Una BBDD relacional tradicional?
¿Un sistema de procesamiento off-line?
¿Un sistema de Inteligencia de Negocio?
¿OLAP y variantes?
...
Sistemas NoSQL
- Key /Value (Tablas)
- Documentos
- Grafos
de otra forma...
Teorema cap
Es imposible para un sistema de computación distribuida garantizar al mismo tiempo:
- Consistencia (Consistency)
- Disponibilidad (Availability)
- Tolerancia a fallos (Partition tolerance)
Ejemplos
AP: Cassandra y CouchDB
CP: HBase y PAXOS
CA: BBDD relacionales
cap y big data
Superando
el
teorema cap
Las propiedades ACID de las bases de datos relacionales no encajan demasiado bien con las necesidades de un sistema Big Data (almacenar y procesar en ~tiempo real).
arquitectura lambda
Nathan Marz
Batch Layer
Procesamiento off-line
Todos los datos
Almacenamiento distribuido
Alta latencia
Implementación
Basado en Apache Hadoop
Cloudera Impala
...
serving layer
Indexar y exponer los datos de las distintas vistas
Consultas en tiempo real
Baja-latencia
Implementación
Storm, Impala Cloudera, Dremel (Apache Drill), Hortonworks, etc.
Lenguaje de consulta sobre los datos: Pig, SploutSQL, etc.
speed layer
Compensar la latencia de Batch layer (hasta que procese los datos y se pueden eliminar de esta vista)
Procesamiento de streams
Tolerancia a fallos
Diseño modular
Computación continua y distribuida
Implementación
Storm y similares
ejemplo de arquitectura lambda
TECNOLOGíA
Map/Reduce (M/R)
Un modelo de programación...
- Procesamiento de datos a gran escala y distribuido
- Simple pero restringido
- Programación paralela
- Extensible
antecedentes
Programación Funcional
- Inspirado pero no equivalente
Ejemplo en Python
Dada una lista de números entre 1 y 50 mostrar sólo los pares
print filter(lambda x: x % 2 == 0, range(1, 50))
- Datos (una lista de números)
- Condición (ser par)
- Función de filtro
Otro ejemplo de programación funcional
Calcular la suma de los cuadrados de los números entre 1 y 50
import operator
reduce(operator.add, map((lambda x: x **2), range(1,50)) , 0)
- reduce es equivalente a foldl en otros lenguajes como Haskell
- se deben considerar otros aspectos matemáticos (tipo de operador)
Módelo básico de M/R
MapReduce: The Programming Model and Practice,
SIGMETRICS, Turorials 2009, Google.
Mapping
Mapping es una función que crea una lista de salida tras la aplicación de un función a cada elemento de la lista de entrada.
Module 4: MapReduce, Hadoop Tutorial, Yahoo!
reduce
Reduce es una función que itera sobre los elementos de entrada para agregarlos en un sólo valor.
Module 4: MapReduce, Hadoop Tutorial, Yahoo!
M/R flujo
...en detalle...
¿Qué es map/reduce?
Es un modelo de programación inspirado en programación funcional para resolver problemas mediante un enfoque "divide y vencerás" con procesamiento distribuido y paralelo.
¿Cuándo utilizar M/R?
Consulta
- Indexado y búsqueda (índices inversos)
- Filtrado
- Clasificación
- Recomendación (clustering o filtrado colaborativo)
Análisis
- Resumen y estadística
- Ordenación y "merging"
- Distribución de frecuencia
- Consultas tipo SQL (group-by, having, etc.)
- Procesamiento y generación de gráficos (histogramas)
otros
- Algoritmos tipo : Búsqueda en anchura o PageRank,
¿Cómo lo utiliza Google?
- Indexado y búsqueda a escala web (pre-caché de consultas y resultados)
- Clustering para recomendación en Google News
- Informes para Google Trends
- Procesamiento de imágenes de satélites
- Machine translation
- Aprendizaje automático
- ...
Comparación de M/R y otros enfoques
MapReduce: The Programming Model and Practice, SIGMETRICS, Turorials 2009, Google.
Evaluación y características de M/R
MapReduce: The Programming Model and Practice, SIGMETRICS, Turorials 2009, Google.
apache hadoop
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.
M/R & Hadoop
ejemplos de uso
M/R en acción
- Querying
- Summarizing
- Analyzing
- ...
...sobre grandes conjuntos de datos de forma off-line para impulsar procesos on-line.
Escenarios
- Resumen e informes agregados
- Filtros
- Organización de datos (sort, merging, etc.)
- Operadores relacionales (join, select, proyección, etc.)
- Paso de mensajes iterativos (procesamiento de grafos)
- Otros (según la implementación):
- Simulación de sistemas distribuidos
- Cross-correlation
- Metapatrones
- Input/output
- ...
algunos ejemplos con un dump de Twitter...
Contando letras...
resumen numérico
- Descripción:
- Agregar varios valores numéricos mediante alguna función estadística
- Objetivo:
- Procesar una lista de valores de entrada (números) para obtener un sólo valor y disponer de una medida de alto nivel de un conjunto de datos
- Aplicabilidad:
- Gestión de datos numéricos
- Agrupar datos por un campo determinado
- Ejemplos:
- Contar, Min/Max, media, desviación típica, etc.
pseudo-código contar palabras
class Mapper
method Map(recordid id, record r)
for all term t in record r do
Emit(term t, count 1)
class Reducer
method Reduce(term t, counts [c1, c2,...])
sum = 0
for all count c in [c1, c2,...] do
sum = sum + c
Emit(term t, count sum)
ejemplo contar palabas
...en java...
public void map(LongWritable key, Text value, Context context) throws Exception { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } }
public void reduce(Text key, Iterable
values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); }
min/max
Data una lista de tweets en la forma (usuario, fecha y texto) determinar el primer y último comentario de un usuario
ejemplo gráfico
Map en min/max
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException, ParseException {
Map parsed = MRDPUtils.parse(value.toString());
String strDate = parsed.get(MRDPUtils.CREATION_DATE);
String userId = parsed.get(MRDPUtils.USER_ID);
if (strDate == null || userId == null) {
return;
}
Date creationDate = MRDPUtils.frmt.parse(strDate);
outTuple.setMin(creationDate);
outTuple.setMax(creationDate);
outTuple.setCount(1);
outUserId.set(userId);
context.write(outUserId, outTuple);
}
reduce en min/max
public void reduce(Text key, Iterable
values, Context context) throws IOException, InterruptedException { result.setMin(null); result.setMax(null); int sum = 0; for (MinMaxCountTuple val : values) { if (result.getMin() == null || val.getMin().compareTo(result.getMin()) < 0) { result.setMin(val.getMin()); } if (result.getMax() == null || val.getMax().compareTo(result.getMax()) > 0) { result.setMax(val.getMax()); } sum += val.getCount();} result.setCount(sum); context.write(key, result); }
media
Dada una lista de tweets en la forma (usuario, fecha y texto) determinar la media del tamaño del comentario por hora del día
ejemplo
map para media
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException,ParseException {
Map parsed =
MRDPUtils.parse(value.toString());
String strDate = parsed.get(MRDPUtils.CREATION_DATE);
String text = parsed.get(MRDPUtils.TEXT);
if (strDate == null || text == null) {
return;
}
Date creationDate = MRDPUtils.frmt.parse(strDate);
outHour.set(creationDate.getHours());
outCountAverage.setCount(1);
outCountAverage.setAverage(text.length());
context.write(outHour, outCountAverage);
}
reduce para media
public void reduce(IntWritable key, Iterable values,
Context context) throws IOException, InterruptedException {
float sum = 0;
float count = 0;
for (CountAverageTuple val : values) {
sum += val.getCount() * val.getAverage();
count += val.getCount();
}
result.setCount(count);
result.setAverage(sum / count);
context.write(key, result);
}
resumen numérico avanzado
Utilizando el lenguaje Pig
SELECT MIN(numcol1), MAX(numcol1),
COUNT(*) FROM table GROUP BY groupcol2;
b = GROUP a BY groupcol2;
c = FOREACH b GENERATE group, MIN(a.numcol1),
MAX(a.numcol1), COUNT_STAR(a);
filtrado
- Descripción:
- Evaluar una condición en cada registro de datos para decidir que se hace con él
- Objetivo:
- Filtrar registros de datos que no cumplen alguna condición
- Aplicabilidad:
- Filtrar
- Ejemplos:
- Vista parcial del dataset, limpieza de datos, monitorización de determinados eventos, selección de muestras, grep distribuido, análisis de registros, consulta y validación de datos, etc.
pseudo-código
class Mapper
method Map(recordid id, record r)
field f = extract(r)
if predicate (f)
Emit(recordid id, value(r))
class Reducer
method Reduce(recordid id, values [r1, r2,...])
//Whatever
Emit(recordid id, aggregate (values))
grep distribuido
Dada una lista de tweets en la forma (usuario, fecha y texto) determinar los tweets que contienen una determinada palabra.
ejemplo gráfico
map grep distribuido
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
Map parsed =
MRDPUtils.parse(value.toString());
String txt = parsed.get(MRDPUtils.TEXT);
String mapRegex = ".*\\b"+context.getConfiguration()
.get("mapregex")+"(.)*\\b.*";
if (txt.matches(mapRegex)) {
context.write(NullWritable.get(), value);
}
}
usuarios y tweets más largos
Dada una lista de tweets en la forma (usuario, fecha y texto) determinar los 5 usuarios que escriben los tweets más largos.
ejemplo gráfico
map tweets más largos
private TreeMap repToRecordMap = new TreeMap();
public void map(Object key, Text value, Context context)
throws IOException, InterruptedException {
Map parsed =
MRDPUtils.parse(value.toString());
if (parsed == null) {return;}
String userId = parsed.get(MRDPUtils.USER_ID);
String reputation = String.valueOf(parsed.get(MRDPUtils.TEXT).length());
//Max reputation if you write tweets longer
if (userId == null || reputation == null) {return;}
repToRecordMap.put(Integer.parseInt(reputation), new Text(value));
if (repToRecordMap.size() > MAX_TOP) {
repToRecordMap.remove(repToRecordMap.firstKey());
}
}
reduce tweets más largos
public void reduce(NullWritable key, Iterable values,
Context context) throws IOException, InterruptedException {
for (Text value : values) {
Map parsed = MRDPUtils.parse(value.toString());
repToRecordMap.put(parsed.get(MRDPUtils.TEXT).length(),new Text(value));
if (repToRecordMap.size() > MAX_TOP) {
repToRecordMap.remove(repToRecordMap.firstKey());
}
}
for (Text t : repToRecordMap.descendingMap().values()) {
context.write(NullWritable.get(), t);
}
}
filtrado en otras palabras
(SQL & PIG)...
SELECT * FROM table WHERE colvalue < VALUE;
b = FILTER a BY colvalue < VALUE;< VALUE;
proyectos relacionados con hadoop
resumen M/r
conclusiones m/r
- M/R es un modelo de programación
- ...para manejar grandes cantidades de datos off-line
- ...escalabilidad, replicación, tolerancia a fallos, etc.
- Apache Hadoop no es una base de datos
- Existen muchos proyectos basados en Hadoop
- Existen enfoques similares: Storm, Signal/Collect
-
...
¿Y qué hay después?
- Concatenación de trabajos M/R
- Optimización de los parámetros del algoritmo
- Pipelining con otros lenguajes de programación
- Patrones más avanzados y Procesamiento en tiempo real
- Problemas actuales: imágenes, etc.
-
...
Ejemplo completo
de
Lambda Architecture
WEB DE DATOS
Una pregunta...
¿Escritores nacidos en Madrid durante el siglo XIX?
consulta dbpedia
PREFIX dbo: <http://dbpedia.org/ontology/>
SELECT ?name ?birth ?description ?person WHERE {
?person dbo:birthPlace :Madrid.
?person <http://purl.org/dc/terms/subject> <http://dbpedia.org/resource/Category:Spanish_writers> .
?person dbo:birthDate ?birth .
?person foaf:name ?name .
?person rdfs:comment ?description .
FILTER (?birth > "1800-01-01"^^xsd:date AND ?birth < "1900-01-01"^^xsd:date).
FILTER (LANG(?description) = 'en') .
}
ORDER BY ?name
y resultado...
http://bit.ly/KuzB9S
otra pregunta...
Latitud, longitud y nombre de lugares cercanos a Madrid en 200KM con una densidad de población mayor de 100 habitantes por KM2.
consulta dbpedia
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX onto: <http://dbpedia.org/ontology/>
SELECT * WHERE {
?s a onto:Place .
?s geo:lat ?lat .
?s geo:long ?long .
FILTER(
xsd:double(?lat) - xsd:double(40.4) <= 2 && xsd:double(40.4) - xsd:double(?lat) <= 2 &&
xsd:double(?long) - xsd:double(-3.68) <= 2 && xsd:double(-3.68) - xsd:double(?long) <= 2).
?s <http://dbpedia.org/ontology/PopulatedPlace/populationDensity> ?density.
FILTER(xsd:double(?density) > xsd:double(100)).
}
LIMIT 100
y resultado...
http://bit.ly/1iNh9bc
y otra pregunta...
Listado de países con nombre en inglés, chino, código ISO-3 con su latitud y longitud.
consulta webindex
SELECT *
WHERE{
?country rdf:type wi-onto:Country.
?country rdfs:label ?label.
FILTER (lang(?label) = 'en').
?country skos:prefLabel ?countryLabel.
FILTER (lang(?countryLabel) = 'zh').
?country wi-onto:has-iso-alpha3-code ?id.
?country geo:lat ?lat.
?country geo:long ?long.
}
y resultado...
WEB SEMÁNTICA Y RDF
RDF TRIPLES
INFORMACIÓN PARA NOSOTROS...
TAMBIÉN PARA NOSOTROS...
Y PARA LAS MÁQUINAS...
CATÁLOGO DE RENAULT uk
pARA LAS MÁQUINAS
Uso del vocabulario GoodRelations para catálogos virtuales
schema.org
- Iniciativa de Google, Bing y Yahoo
- Etiquetado con un vocabulario común para:
- Eventos
- Personas
- ...
- Mejora de la publicación de información y su posterior indexado
- RDFa
- Prueba con Google Rich Snippets
- http://bit.ly/KyVHIO
renault uk y google rich snippets
linked data y el modelo 5*
http://lod-lam.slis.kent.edu/images/linked-data-image.jpg
ventajas
- Realización práctica de la Web Semántica.
- Identicación única, uso de HTTP URIs.
- Modelo y acceso estándar.
- Enriquecimiento de recursos, creación de enlaces.
- Estructuración, modelo estándar RDF.
- Expresividad, vocabularios y datasets .
- Reutilización de informacióny datos.
- ...
datos enlazados abiertos
ciclos de vida
ENDPOINTS DE SPARQL
CASOS DE ÉXITO
BAses de datos tradicionales
vs
Web de datos
resumen
¿qué es big data?
arquitectura para big data
Map Reduce y hadoop
Tecnología y frameworks existentes
Web de datos
faq
¿Tengo un problema big data?
-
Evaluar de acuerdo a las 3-6 V's
- Definir necesidades
- Procesamiento
- ¿Batch? ¿Tiempo real ? ¿Ambas?
- Almacenamiento
- Tablas, documentos, grafos, etc.
- Frecuencia de actualización
- Consulta
- Lenguaje de consulta
- Infraestructura
- ¿Local? ¿Cloud Computing?
- Seleccionar tecnología
¿cuál es el coste?
- Se puede empezar con las herramientas ya disponibles como código abierto
- La clave está en el conocimiento y el modelado del problema
- Los datos ya están disponibles
- Gratuitos
- http://www.infochimps.com/datasets/wikipedia-articles
- http://www.datasciencecentral.com/profiles/blogs/big-data-sets-available-for-free
- Otros de pago
- Se pueden crear
- Infraestructura para procesamiento y "crawling" (http://commoncrawl.org/)
- La implementación es cuestión de tiempo y de la tecnología seleccionada
¿Existe alguna suite completa?
- Cloudera Impala
- Pentaho (ETL)
- RapidMiner
- MapR
- ...
¿Existen oportunidades de negocio?
¿Cuáles son las prioridades?
¿Existen temas abiertos?
-
Privacidad
-
Salto entre modelo matemático y despliegue en arquitectura Big Data
-
Big Data Governance (¿Semántica?)
-
Aplicaciones: recomendación, análisis de sentimiento, etc.
- Visualización (D3.js, Highlights.js, etc.
- ...
...de otra forma...
Algunas notas personales sobre Big Data
http://bit.ly/KAUIHH
¿Cuál es la diferencia con Business Intelligence?
No es sencillo de hacer una gran diferenciación pero caería en los siguientes puntos:
-
Big Data: estadística inferencial y low-density información
- BI: estadística descriptiva y high-density información
¿BIG DATa vs HPC?
- Big Data trata sobre datos
- HPC trata sobre poder computacional
Pero destinados a encontrarse...
¿Por dónde continuar?
Entender los fundamentos de Big Data (ej: Hadoop, etc.)
Probar y ascender en el conocimiento de herramientas de mayor nivel de abstracción
Recomendado:
¿Algún libro?
...
y los enlaces...
mitos sobre big data
"Yo también quiero Big DAta"
Dependiendo del problema se podrán aplicar las técnicas de forma más exitosa.
La selección debería basarse en innovación tecnológica para un proceso en negocio y no en marketing.
"Es sólo un problema técnico (IT)"
Realmente se debe buscar el problema de negocio y de ahí descender a la solución técnica. Ej: Walmart
"no se puede aplicar en grandes empresas por su diversidad"
Realmente el problema reside en la integración de datos y no en la aplicabilidad de las técnicas
"el coste de las herramientas y expertos es muy alto"
Sobre las herramientas e infraestructura ya se ha comentado y sobre los expertos el problema reside en seleccionar el perfil correcto: estadístic@, ingenier@, etc.
y Más Mitos...
-
http://www.slideshare.net/ProphetBrandStrategy/the-myths-of-big-data
-
http://www.v3.co.uk/v3-uk/analysis/2302685/top-10-big-data-myths-and-misconceptions/page/2
- Big data is new
- Big data is a commodity
- Big data is a problem
- Your data is useful only to you
- The government isn't interested in your social media data
- Big data won't land you in jail
- ...
Si con un "smartphone" no eres más "SMART"
CON "big data" NO ERES MÁS "big"
Es muy importante contextualizar el problema de negocio tanto en necesidades como en nuestras capacidades
No es necesario diseñar/implementar una arquitectura desde el inicio, existen muchas herramientas ya disponibles
...pero...
IBM BIG DATA (PREDICCIÓN)
¡Explotemos big data!
Data-driven economy
CRéDIToS
- Ponente: Dr. Jose María Alvarez-Rodríguez
- Profesor Visitante
- Universidad Carlos III de Madrid
-
E-mail: josemaria.alvarez@uc3m.es
- WWW:
- Agradecimientos:
- Prof .Dr. Ricardo Colomo-Palacios
Tecnología big data
By Jose María Alvarez
Tecnología big data
Introducción a la tecnología relacionada con problemas Big Data y Web de Datos.
- 2,883