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?

¿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
Big Data vs HPC
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...


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)

4x more digital data than all the grains of sand on earth by 2020

¡Explotemos big data!


Data-driven economy




CRéDIToS

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