#Small Data vs #Big Data: Diferencias y aplicaciones en la gestión empresarial

big-data-dilemma-quantity-vs-quality-big
El dilema
Anuncios

Marketing = Creatividad + Big Data

La innovación tecnológica ha logrado capturar cada vez más información a partir de nuevos dispositivos asociados a la vida cotidiana de las personas a través de la Internet de las Cosas (IoT), la Tecnología Ponible (Wearables); así como también de los propios negocios. Las plataformas digitales, especialmente las de comercio electrónico y las redes sociales, permiten acceder a información sobre hábitos y costumbres de consumo que antes eran impensables.

social network, communication in the global computer networks
social network, communication in the global computer networks

Estamos en una época de sobrecarga informativa, infoxicación o infobesidad y todo indica que seguirá creciendo su volumen. Ahora el desafío es otro: ¿qué vamos a hacer con toda esa información?, ¿qué conocimiento podemos generar a partir de ella que permita crecer nuestro negocio?.

Actualmente, a través de las Ciudades Inteligentes, existe todo un movimiento que busca hacer eficiente la gestión de las ciudades y los gobiernos a través de la utilización y análisis de datos, que se obtienen en su mayoría por medio de Sensores y Redes Sociales. IBM por ejemplo, ha desarrollado un ambicioso proyecto llamado “Smart Cities“, en el cual a partir del análisis y la búsqueda de nuevos patrones de relaciones entre distintos bloques de datos de las ciudades, se generan nuevas ideas y en consecuencia soluciones para problemas típicos como el tráfico, la gestión del medioambiente o la higiene de la población.

La comunicación de negocios y marcas no es ajena al impacto de esta “revolución de la información”. La data es un activo muy importante de las empresas para gestionar y rentabilizar sus clientes. En base a la data podemos acceder a un mejor conocimiento de nuestros clientes y del entorno de mercado. La ventaja competitiva de las empresas también pasa en este momento por generar las capacidades y habilidades necesarias para poder interpretar la data y generar nuevas ideas interesantes y relevantes para crear condiciones de negocio más importantes. Descubrir nuevos nichos, oportunidades, nuevos usos de productos y servicios, la posibilidad de ser más eficientes en nuestro mercadeo.

La comunicación publicitaria se favorece muchísimo de esta nueva realidad. En el pasado, la medición del impacto de cualquier campaña de comunicación aparecía como algo complicado, impreciso y hasta opaco.El nuevo paradigma de la información, nos permite desarrollar nuevas formas de análisis de nuestros esfuerzos de comunicación. Ahora podemos medir con mayor certeza, tanto para hacer un seguimiento, como para poder descubrir nuevas posibilidades para nuestras marcas.

La “data” es la base para construir nuevas oportunidades.

“Para mí la creatividad es la diana a la que lanzamos dardos, pero el Big Data es lo que nos ayuda a hacerlo”, y por tanto “no hay que separar esos dos mundos”, señalo Fernando Maldonado, ingeniero de ventas en Sizmek.

En el ambiente de la comunicación, emerge un nuevo paradigma: la data y la creatividad. No podemos concebir la una sin la otra. La creatividad se inspira y se fundamenta en las ideas o conceptos desarrollados a partir de la data que podemos obtener y procesar. Necesitamos la data para poder desarrollar campañas que nos aseguren una buena probabilidad de respuesta positiva de nuestros clientes.Dominar ambos procesos se vuelve clave.

Las agencias de marketing deben reunir talentos de diversa índole y hacerlos trabajar juntos con desafíos y objetivos comunes: especialistas en negocios, creativos y especialistas en información y análisis de grandes datos (Big Data). La retroalimentación entre estos es crítica para que los proyectos de nuestras marcas lleguen a buen término. Pero nada de esto tendría sentido si no se coloca el enfoque sobre la creatividad que es la que construye la diferenciación y relevancia para las marcas de los clientes.

Equilibrio entre data y creatividad para la construcción de relaciones duraderas con los clientes y conectar esas cosas que antes no estaban conectadas, será el desafío de los expertos del marketing. “Hay que crear ideas que rompan formatos, ideas que tengan una calidad en digital para que la gente quiera compartir”. “Las producciones deben ser complementarias”, agregó Maldonado.

by

Spark (II) – Características principales

Hoy veremos las características principales que hacen a Spark tan atractivo.

Resilient Distributed Dataset

En Spark a diferencia de Hadoop, no utilizaremos una colección de datos distribuidos sino que usaremos los RDDs (Resisilient Distribuited Datasets). Normalmente no suelo dar la chapa sobre en que consiste esto a bajo nivel, pero ya que estamos en el blog lo dejo aquí por escrito:
Son colecciones lógicas, inmutables y particionadas de registros a lo largo del cluster que pueden ser reconstruidas si alguna partición se pierde (no necesitan ser materializadas pero si reconstruidas para mantener el almacenamiento estable). Se crean mediante la transformación de datos utilizando para ello transformaciones (filtros, joins, Group by…). Por otra parte permite cachear los datos mediante transformaciones como Reduce, Collect, count, save…
Los RDD son tolerantes a fallos, para ello mantiene una cosa llamada el “lineage” del RDD. Este “lineage” permite que los RDDs se reconstruyan en caso de que una porción de datos se pierda.
Por tanto, los beneficios de utilizar RDD´s son varios:
· La consistencia se vuelve más sencilla gracias a la inmutabilidad.
· Tolerancia a fallos con bajo coste (gracias al “lineage” mantenemos checkpoints de los datos).

· A pesar de ser un modelo restringido a una serie de casos de uso por defecto, gracias a RDDs se puede utilizar Spark para un cantidad de aplicaciones muy variadas.

Operaciones en RDDs

Análisis Interactivo de Datos

 Una de las características más útiles es el Shell interactivo que permite a un usuario utilizar las capacidades de Spark inmediatamente (no se necesita un IDE o compilar el código). La Shell es una herramienta que se utiliza para la exploración de datos interactivamente, que nos permitirá probar porciones de la aplicación que estemos desarrollando.
Spark puede leer y escribir datos desde y hasta HDFS. Lo bueno es que nos permite jugar con APIs en Java, Scala y Python para aplicaciones “stand-alone”.

Batch Processing más Rápido

 Los primeros despliegues de Spark se enfocaron en aumentar el rendimiento de las aplicaciones MapReduce existentes. Recodemos que MapReduce en la actualidad es un framework genérico de ejecución paralela de aplicaciones y no es exclusivo ni una implementación propietaria del core de Hadoop. Por lo tanto Spark proporciona también MapReduce que puede llegar a ser más eficiente gracias al uso de la memoria (mientras utilizará “lineage” para recuperar los fallos en caso de que fuese necesario).

Algoritmos Iterativos

Spark permite a los usuarios y a las aplicaciones especificar el cacheo de un dataset mediante la operación cache(). Esto significa que nuestra aplicación puede acceder a la memoria RAM en vez de al disco, lo cual aumenta de manera espectacular el rendimiento en algoritmos iterativos ya que pueden acceder acceder al mismo dataset repetidamente. Ese caso de uso cubre un gran número de aplicaciones, como pueden ser las aplicaciones orientadas a machine learning o los algoritmos gráficos que son iterativos por naturaleza.
Puedes ver más sobre esto en la web oficial de Spark.

Procesamiento de Streams en Tiempo Real

Dado que las operaciones realizadas los sistemas de análisis de datos poseen una latencia baja, es natural extender el motor hacia streams de datos en tiempo real. Spark tiene un API que nos permite trabajar con estos streams de datos y que además tienen una ventaja diferencial: podemos mezclar streams en tiempo real con programas Batch.

Spark (I) – Introducción

spark-logo

Voy a hacer una serie de posts en la que explicaré tanto la instalación como el funcionamiento de los programas desarrollados para Spark.

En este primer post introductorio quiero hablar de dónde viene, en que estado está y hacia donde va. La mayoría de esta información la he sacado de la web oficial de Spark, pero intento darle un toque de sencillez en algunos puntos para hacerlo más entendible a los humanos.

 

Introducción

Hadoop revolucionó el procesamiento BigData permitiendo a los usuarios almacenar y procesar cantidades masivas de datos a un precio muy bajo. El algoritmo|técnica MapReduce es ideal para implementar aplicaciones de Batch Processing muy complejas que a menudo tratan de dar solución a sistemas de log, la ejecución de ETL, la computación de los índices web y potenciar los sistemas de recomendación personal. Sin embargo, su dependencia del almacenamiento persistente en disco para proporcionar tolerancia a fallos provoca una alta latencia entre servidores, cosa que viene muy mal para algunos cálculos iterativos así como algoritmos de aprendizaje que utilicen MapReduce.

El proyecto de Spark se centró desde el comienzo en aportar una solución factible a estos defectos de Hadoop, mejorando el comportamiento de las aplicaciones que hacen uso de MapReduce y aumentando el rendimiento considerablemente.

Pero…¿Qué es Spark?

Spark es un motor para el procesamiento de grandes volúmenes datos y que gracias a su llamada “interactividad” hace que el paradigma MapReduce ya no se limite a las fases Map y Reduce y podamos realizar más operaciones (mappers, reducers, joins, groups by, filtros…).
También proporciona API´s para Java,Scala & Python. Es preferible que se programe en Scala ya que el código se verá reducido y todo parecerá más limpio.

La principal ventaja de Spark es que guarda todas las operaciones sobre los datos en memoria. Esta es la clave del buen rendimiento que tiene Spark.

La siguiente figura muestra algunas de sus principales características:

· Baja latencia computacional mediante el cacheo de los datos en memoria en un dataset.
· Algoritmos iterativos eficientes debido a que las sucesivas operaciones comparten los datos en memoria, o accediendo de manera repetida al mismo dataset.

Un programa escrito en Spark como veremos en los siguientes posts permite ver un algoritmo paralelo de una forma tipo imperativa.

Y hasta aquí el post de hoy.

Os espero en el siguiente!!!

Fuentes:
http://spark.apache.org/downloads.html
http://databricks.com/blog

Apache Hadoop (V) – HIVE Consultas “tipo SQL” sobre Hadoop

hive_logo
¿Un elefante-abeja? WTF!

 

Seguimos con los componentes de Hadoop. Hoy es uno de los más importantes y quizás más sencillos de instalar y configurar una vez tenemos nuestro clúster de hadoop bien montado.
 

Este post dará nociones básicas sobre HIVE pero no entraré en la instalación y configuración, puesto que es muy sencilla.

¿Qué es HIVE?

Hive es almacén de datos creado específicamente para Hadoop que nos facilita la tarea de sumarizar los datos pre-existentes en HDFS. La idea principal de Hive es la de funcionar como capa externa a Hadoop a modo de envoltorio, donde vamos a poder realizar consultas sobre el sistema de archivos que serán tratadas como MapReduces en modo nativo en HDFS.

Para poder realizar estas operaciones, los de Apache crearon un lenguaje de consultas a “base de datos” (recordemos que HDFS es un sistema de ficheros) muy similar a SQL, que denominaron HiveQL o HQL (dependiendo de en que libro lo leas lo verás de una manera u otra).

El corazón de esta idea se basa en el denominado MetaStore, que es un “lugar” donde se van a ir guardando toda la información relacionada con las operaciones en Hive, por lo tanto el día que queráis formatear Hive, deberéis borrar dicho directorio para tenerlo como el primer día.

Es una herramienta que utilizan en facebook y los chic@s de Hortonworks nos explican como se manejan con este componente.

Características especiales de Hive

Al ser una capa de alto nivel de un sistema de ficheros HDFS, hay algunas operaciones “tipo SQL” que son especiales en Hive. En concreto las operaciones de crear tablas que tiren de HDFS y la de carga de datos en Hive pueden ser ejemplos de ello:

Crear una tabla que “tire” de HDFS:

CREATE TABLE tablaDePrueba (campo1 string, campo2 int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘;’
LINES TERMINATED BY ‘\t’
STORED AS TEXTFILE;

Cargar datos en la tabla:

LOAD DATA INPATH ‘/datos/pruebas/test/tablaPruebas’ OVERWRITE INTO TABLE tablaDePrueba;

Consulta a tabla:

SELECT campo1,campo2 FROM tablaDePrueba LIMIT 100 ORDER BY campo2 DESC;

También podemos hacer consultas a tablas que se encuentren en HBase (con el fin de no tener que realizar bulks loads a Hive de ficheros de texto plano), pero la penalización por la latencia es tan alta, que para que realmente nos sea rentable usar la combinación Hadoop + HBase + Hive necesitaremos un clúster enorme, de cientos de nodos (cosa que debe pasar en Facebook).

Y por hoy es todo. ¿Ha sido fácil eh? 🙂

b0e3cb28debd0cc08f2bb5482c638b51

Fuentes:

 

Hadoop Apache (IV) – HBase

_hadoopelephant_rgb1
Y hoy:
hbase
Tipografía muy chunga

 

Hoy vamos a ver un componente Apache bastante interesante. Con este, podremos mantener distribuido un dataset en tablas columnares a través de múltiples Regiones (veremos que es) y múltiples Nodos de Hadoop.

 

¿Qué es HBase?

Cuando queremos almacenar cantidades ingentes de datos (Cientos de millones de tuplas), podemos optar por utilizar sistemas de bases de datos antiguos y esperar días u horas para obtener información de nuestros datos (si es que eso es posible) o por otra parte podemos optar por utilizar BigData y sus herramientas.

HBase nos permitirá manejar todos esos datos y tenerlos distribuidos a través de lo que denominan Regiones. Una región no es más que una partición tipo Nodo de Hadoop que se guarda en un servidor. La región aleatoria en la que se guardan los datos de una tabla se decide por nosotros, dándole un tamaño fijo a partir del cual la tabla debe distribuirse a través de las regiones.

HBase a su vez estará montando sobre HDFS de Hadoop, y podremos cargar programas en Java para realizar MapReduces personalizados.

El principal problema que tiene HBase es que no tiene un lenguaje de consulta intuitivo. Utiliza un lenguaje pseudo-javascript para crear tablas y realizar consultas.

Tiene muchas más peculiaridades, pero es redundar en lo redundado. Os dejo documentación sobre HBase en la que podemos encontrar instalación y configuración del mismo (ya sea standalone o distribuido).

 

Links

Up&Running de libro: http://hbase.apache.org/book/quickstart.html

Libro muy recomendado, donde encontraremos instalación, configuración y Tunning (esto es muy importante y viene bastante información): http://www.amazon.com/HBase-Administration-Cookbook-Yifeng-Jiang/dp/1849517142

No necesitaréis mucho más para trastear con esta tecnología.

 

dataisthenewoil

 

Hasta el siguiente post amig@s 🙂

Hadoop Apache (III) – Zookeeper

 

_hadoopelephant_rgb1
La tipografía me recuerda a la F1 de los 80.

 

Integrations-ApacheZookeeper-340x216
¡El tipo este es un currito de mantenimiento de un Zoo! (tiene que oler a elefante amarillo fijo)

 

Vamos a ir a definiciones, pondré direcciones donde se puede obtener documentación sobre instalación y configuración.

¿Qué es Zookeeper?

Es un servicio centralizado que nos permite mantener conexiones estables entre servidores con distintas tecnologías. Nos provee de una interface simple para mantener la consistencia de datos y además es altamente personalizable.

¿Cómo funciona?

Básicamente realizáis la instalación de Zookeeper en unos servidores con Linux. Consiste en bajar la versión estable y descomprimirla. La configuráis a vuestro gusto, eligiendo el número de “gemelos” que vais a querer tener a la escucha. Una vez establecidos los sincronizais entre servidores y listo.

Un Up&Running de libro es: https://zookeeper.apache.org/doc/r3.4.8/zookeeperProgrammers.html

¿Qué tiene que ver con Hadoop?

Nos permitirá tener conectividad entre HBase y HDFS de Hadoop, para poder ejecutar los MapReduce correspondientes, por ejemplo.

Links

Aquí tenéis su página oficial: http://zookeeper.apache.org/

Algunos ejemplillos rápidos: http://es.wikipedia.org/wiki/Apache_ZooKeeper#Ejemplos_de_uso_t.C3.ADpicos

Es un post rápido, pero con info interesante.

Nos vemos en el siguiente post amig@s 🙂