Datasalt

El estado actual del “SQL para Hadoop”

Desde la adopción masiva de Hadoop, muchas herramientas open-source y propietarias han aparecido que tratan de resolver el problema de “hacer consultas sobre Hadoop”. Hadoop comenzó como un simple (aunque poderoso) framework Big Data consistente en (1) una capa de almacenamiento (HDFS, inspirado GFS) y (2) una capa de procesamiento (una implementación de MapReduce). Al cabo de dos años las primeras releases de HBase (inspirado por BigTable) comenzaron a hacer los datos en Hadoop más recuperables.  Después de eso, muchas NoSQL’s comenzaron a trabajar en conectores Hadoop (SOLR-1301 fue uno de los primeros). Aun y así, el problema de “hacer consultas sobre Hadoop” siguió estando no resuelto en dos ejes principales:

  • Flexibilidad: Los motores de consultas fuera de Hadoop tenían características muy variables y lenguajes de consulta muy diferentes. Muchas NoSQL’s estaban limitadas por naturaleza a llave/valor. Elegir una NoSQL siempre implicaría un “tradeoff”, y elegir más de una (concepto “Polyglot Persistence”) hacía las cosas más complicadas aun.
  • Integración: Hacer que los datos de Hadoop fueran accesibles por un motor de consultas era un reto en sí mismo (¿Cómo se integra ésta base de datos con Hadoop? ¿Cómo es el conector? ¿Cómo de maduro es? ¿Y cómo de eficiente es? ¿Puedo actualizar todos los datos desde Hadoop de forma atómica, en una “gran transacción”?).

Leer más…


Big Data – Una visión pragmática

Datasalt estuvo en el evento Open Analytics 2013 donde se habló de las diferentes tecnologías y tendencias “abiertas” que se están moviendo alrededor de los datos y de la analítica. Iván de Prado estuvo en representación de Datasalt tratando de dar un visión pragmática sobre el Big Data, ayudando a identificar qué es lo realmente disruptivo que se esconde en esta revolución.

Puedes ver la charla completa en el siguiente vídeo:


El estado actual de la “Arquitectura lambda”

El estado actual de la “Arquitectura lambda”

Ha pasado ya algún tiempo desde que Nathan Marz escribió el primer post de la “Arquitectura lambda”. ¿Qué ha pasado desde entonces? ¿Cómo ha reaccionado la comunidad a tal concepto ? ¿Cuáles son las tendencias de arquitecturas en el espacio del Big Data, así como los retos y problemas que quedan ?

Leer más…


Analítica en redes de anuncios usando Hadoop y Splout SQL

Datasalt presentó en la pasada Big Data Spain una charla sobre la problemática a la que se enfrentan las redes de anuncios para ofrecer sistemas analíticos a sus clientes. A continuación compartimos el vídeo de la charla completa y la presentación (en inglés). Finalizamos la entrada con un breve resumen sobre lo que trata la charla.

Analítica en redes de anuncios

Las redes de anuncios actual como intermediario entre los anunciantes y los editores en Internet. El anunciantes es el agente que quiere colocar un anuncio en diferentes medios. El editor es el agente que posee el medio. Estos medios son habitualmente páginas web o aplicaciones móviles.

Cada vez que un anuncio se muestra en una página web o en una aplicación móvil, un evento de impresión es generado. Estas impresiones y otros eventos son la fuente de los paneles analíticos que son usados por los agentes (anunciantes y editores) para analizar el rendimiento de sus campañas o sus medios.

Presentar estos paneles a los agentes es un reto técnicos porque las redes de anuncios tienen que lidiar con miles de millones de eventos cada día y presentar paneles interactivos a miles de agentes.La escala del problema requiere el uso de herramientas distribuidas. Obviamente,  Hadoop podría venir al rescate con su capacidad de almacenamiento y computación, ya que puede ser usado para pre-computar varias estadísticas que luego se presentan en los paneles.

Pero esto no es suficiente para los agentes. Para poder realizar el analizar exploratorio necesitan un panel interactivo que les permita filtrar por una página web particular, por países o dispositivos, en un rango de fechas particular, y cualquier otro filtrado ad-hoc que puedas imaginar.

Por lo tanto, se necesita algo más que Hadoop. En Datasalt, hemos tenido que lidiar con este problema para algunos clientes y hemos encontrado una solución que es la que se presenta en la charla.

La solución incluye dos mólulos: el off-line y el on-line.

Off-line

El módulo off-line es el encargado de recibir los eventos y realizar las operaciones más costosas: limpiar los datos, calcular algunas aggreaciones para reducir el tamaño de los datos y crear algunas estructuras de datos que luego serán usadas para realizar analítica on-line. Todas ellas son gestionadas adecuadamente por Hadoop. La parte más innovadora de este proceso es el último paso donde algunos ficheros con ciertas estructuras de datos son creados para luego ser exportados a la parte on-line.

On-line

El módulo on-line es el encargado de servir las consultas analíticas que se reciben desde el servidor web que sirve el panel analítico para los agentes. Las consultas suelen involucrar estadísticas básicas (count, count distinct, stddev, sum, etc) que se calculan sobre un subconjunto de los datos iniciales (según un filtro particular). El reto aquí es que el sistema tiene que servir estadísticas para filtros “al vuelo”. Esto hace imposible pre-calcular todas las estadísticas en el módulo offline. Por lo tanto, parte de los cálculos han de hacerse bajo demanda. Esto no sería un problema si la escala de los datos no fuera tan grande. Esto hace que, para el caso que nos ocupa, haga falta algún tipo de motor de base de datos escalable.

Splout SQL

Datasalt ha desarrollado la base de datos distribuida open-source Splout SQL (http://sploutsql.com/) que permite crear vistas materializadas sobre datos de Hadoop. Escala mediante el uso de particionado. Splout SQL es la herramienta perfecta para servir estadísticas on-line para Ad Networks ya que los datos pueden ser particionados por agente. De esta manera es posible confinar las consultas que implican a un agente individual en una partición particular.

En la charla damos la visión general de la arquitectura del sistema. Más específicamente, hablamos sobre como y para qué ha sido diseñado Splout SQL y por qué es útil en el caso de las redes de anuncios. También se tratan otras técnicas que fueron necesarias como el muestreo y el almacenamiento en memoria.

Una arquitectura Lambda para SQL

Con Splout SQL como motor de servicio para la capa por lotes, es fácil colocar una capa SQL para formar una arquitectura Lambda que provea al sistema de tiempo real. La capa de tiempo real de la arquitectura sólo necesita contener unas pocas horas o días de datos, y se puede beneficiar de tecnologías maduras como MySQL. Las vistas materializadas siempre se agrupan de modo temporal (día / hora) y la capa por lotes se aseguran de calcular siempre periodos totales (no días u horas parciales). De esta manera, los datos provenientes de la capa por lotes siempre tiene precedencia sobre los datos provenientes de la capa de tiempo real, la cual ha de ser limpiada periódicamente.


Parseando reviews de Qype con Pangool y guardándolas en MongoDB

En este post veremos lo fácil que es integrar Pangool con MongoDB, la famosa base de datos NoSQL orientada a documentos. Para ello, ejecutaremos una tarea de “parseo” de reviews sobre páginas HTML de Qype. Las reviews resultantes las persistiremos a MongoDB.

Introducción

El Burgermeister de Berlín es un famoso lugar de hamburguesas. Pero, ¿Qué piensa la gente realmente de él? ¿Ha cambiado su opinión al respecto recientemente? Muchas compañías y start-ups trabajan hoy en día en éste tipo de problemas. ReviewPro ayuda a los hoteles a saber lo que la gente piensa de ellos. BrandWatch ayuda a compañías a monitorizar el sentimiento de la gente alrededor de su “marca”. En éste post ejecutaremos una tarea de parseo simple para páginas HTML de Qype. La implementación provista será muy sencilla, pero también daremos una idea de cómo se puede extender para una solución más real.

Leer más…


Un vistazo a la API de Trident (Storm)

El 10 de Abril Pere dió una “hackaton” de Trident/Storm en el Big Data Beers de Berlin. En la misma sesión hubo también una “hackaton” paralela de Disco (la dió Dave de Continuum Analytics). Es war viel spaß! La gente que fue tuvo la oportunidad de aprender lo básico de Trident en la sesión de Storm a la vez que lo pudo probar en el momento. En la “hackaton” se vieron los aspectos más importantes de la API, la filosofía y los casos de uso típicos de Storm e incluyó un simple ejercicio que manipulaba un flujo de tweets falsos. El proyecto, la guía de la sesión, algunos ejemplos ejecutables, así como el generador de tweets puede encontrarse en github.

BDB4-2

En este post veremos un resumen de la API de Trident que podremos ir siguiendo de forma práctica con la ayuda del proyecto github anteriormente mencionado.

Leer más…


Presentando Splout Cloud: Un servicio de consultas SQL de baja latencia en la nube.

Hemos creado Splout Cloud, un servicio en la nube de baja latencia que corre sobre Amazon AWS. A modo de resumen, Splout Cloud permite convertir cualquier conjunto de ficheros – independientemente de su tamaño – en una base de datos escalable y particionada SQL. Al contrario que otros sistemas para analítica “offline”, ofrece un alto rendimiento y es suficientemente rápido como para poder proveer queries por debajo del segundo con agregaciones en tiempo real, y ser así el motor de cualquier aplicación web o móvil.

sploutcloud-logo

Splout Cloud está basado en Splout SQL, una base de datos SQL libre para Hadoop.

Leer más…


Pig + Splout SQL para un sistema de cupones promocionales: Un romance Big Data

(Éste es el último post de una serie de tres posts presentando la integración nativa de Splout SQL 0.2.2 con las principales herramientas de procesamiento por encima de Hadoop: Cascading, Hive y Pig).

En este post presentaremos un caso de uso Big Data para una gran tienda de alimentos. Haremos un sumario de las compras individuales de cada cliente usando Apache Pig y volcaremos éste análisis a Splout SQL para poder ser capaces de lanzar consultas en tiempo real sobre él. Así, podremos combinar la información histórica de cada cliente con una lista de productos a promocionar para poder sugerir descuentos personalizados. Esta información se podría usar fácilmente por un sistema de impresión de cupones para fidelización de los clientes.

Combinar una herramienta de desarollo ágil Big Data como Pig con un sistema de consultas flexible y de baja latencia como Splout SQL nos provée una solución simple y efectiva a éste problema, que podremos simular a través de este post apenas sin esfuerzo.

Leer más…


Hive + Splout SQL para analítica sobre Twitter: Un romance Big Data

(Éste es el segundo post de una serie de tres posts presentando la integración nativa de Splout SQL 0.2.2 con Cascading, Hive y Pig).

En éste post presentaremos un ejemplo de aplicación Big Data para analizar tweets y mostrar informes consolidados, estadísticas relevantes a usuarios de Twitter a través de una webapp interactiva de baja latencia. Para eso juntaremos Hive (una solución open-source de “warehousing” que permite procesos analíticos fáciles sobre Hadoop) con Splout SQL, una base de datos SQL particionada de baja latencia para Hadoop. Construiremos un simple aunque potente y escalable panel tipo el de “Tweet archivist” y lo haremos sin escribir ni una sola línea de código. La herramienta proveerá menciones históricas, hashtags y tweets populares para cada actor en el dataset de entrada analizado.

Leer más…


Cascading + Splout SQL para analizar y servir logs: Un romance Big Data

(Éste es el primer post de una serie de tres posts presentando Splout SQL 0.2.2 y su integración nativa con Cascading, Hive y Pig).

En éste post veremos un caso de uso Big Data en el que analizaremos e indexaremos una gran cantidad de logs Apache de un supuesto website e-Commerce. Queremos ser capaces de servirlos en una aplicación web de baja latencia que necesita información detallada de grano fino para cada usuario, para poder hacer campañas de fidelización y asistencia al usuario. Para ésta aplicación juntaremos Cascading, un framework Java de alto nivel para Hadoop con Splout SQL, una base de datos particionada SQL de alto rendimiento para Hadoop. Veremos cómo desarrollar una solución totalmente escalable tanto en el procesamiento como en el servicio de los datos, y la haremos en menos de 200 líneas de código. También proveeremos un frontend sencillo JavaScript que usará la API REST de Splout SQL vía jQuery.

Leer más…