Construyendo una Infraestructura de Big Data rentable y escalable (la evolución de nuestra...

Post on 26-May-2015

607 views 1 download

description

Socialmetrix lleva 6 años desarrollando soluciones para capturar, limpiar, organizar, procesar, almacenar y presentar información. Los desafíos involucraron siempre seguir escalando en volumen de procesamiento y las funcionalidades a nuestros clientes. Estas directivas nos llevaron hacia una búsqueda de soluciones innovadoras y tecnologías que nos permitan competir en un mercado global manteniendo la inversión y los costos bajo control. Esta charla presenta las técnicas y tecnologías involucradas en el desarrollo de nuestros productos junto con los errores que cometimos y lecciones que aprendimos durante el desarrollo.

Transcript of Construyendo una Infraestructura de Big Data rentable y escalable (la evolución de nuestra...

Construyendo una infraestructura de Big Data rentable y escalable

Gustavo Arjonesgustavo@socialmetrix.com@arjones

Juan Pampliegajpampliega@socialmetrix.com@juanpampliega

Co-founder & CTO, Socialmetrix

Lic. Ciencias ComputaciónMBA Marketing Servicios

@arjonesgustavo@socialmetrix.com

Brasileño, en Argentina desde 2008

Gustavo Arjones

Big Data Developer, Socialmetrix

Ing. Informática ITBA

@juanpampliegajpampliega@socialmetrix.com

Juan Pampliega

• Sobre Socialmetrix

• Nuestra arquitectura

• Conceptos importantes

• Lecciones aprendidas

• Dónde aprender más

Agenda

Socialmetrix

Medimos la actividad de las compañías

y personalidades en las redes sociales

para generar valor a profesionales de

Marketing, Investigación de Mercado y

Producto.

Software As A Service

En números• Capturando +5MM de fanpages de Facebook, cuentas de Twitter,

blogs, sites, etc

• Se generan +1.000 MM de interacciones en un mes

• Capturamos +1.000 Gb por mes de nuevos datos, los antiguos no se borran

• 200+ servidores, + databases, +ambientes de prueba/staging

Nuestra arquitectura

Big Data – el nuevo, nuevo paradigma

Volumen + Velocidad + Variedad

Nuevas Tecnologías (Kafka + Spark + Cassandra)

Procesamiento de DatosDistribuido y Escalable

Conceptos del nuevo paradigma

Un único repositorio de datos, append only.

query = function(all data)

Simple de razonarVerdad en un momento dado

Siempre puede ser “re-computado”Permite evolución

Arquitectura Lambda

Tiempo promedio de respuesta?

Número de Tweets por Segundo?

Arquitectura Lambda• Crear un sistema tolerante a fallos tanto de hardware como los

humanos

• Permitir lecturas y escrituras de baja latencia

• Escalabilidad lineal horizontal

• Facilidad de re-procesos

• Permitir la investigación interactiva de los datos

Arquitectura Lambda (críticas)Muchos esfuerzos duplicados (Realtime + Batch Processing)

• Duplicación de Lógica

• Duplicación de Know-how & Esfuerzo

• Asume que el procesamiento RT no es confiable

http://radar.oreilly.com/2014/07/questioning-the-lambda-architecture.html

Evolución de Plataforma

S3

Data Stream

Evolución de Plataforma

S3

Data Stream

Otros desafíos

• Información llega fuera de orden (no es time-ordered)

• Duplicados es una realidad

• Encoding de la fuente no siempre está bien configurado

• API rate-limit

Lecciones Aprendidas

Evolución de tecnologías

Depuración de la plataforma

Los errores

• Falta de foco, demasiadas tecnologías (hay mucho buzz)

• No empezar sin una investigación exhaustiva (alguien lo hizo

antes!)

• No cambiar/procesar los datos antes de guardar (guardar raw

data)

• No automatizar desde el principio

Los aciertos

• División/especialización de profesionales• Crawling, Natural Language Processing, Big Data, API, Visualización

• Aprendimos de Open Source (leer código, mejores practicas)

• Automación de tareas operacionales(ie: Puppet, CloudFormation)

• Crear un ambiente rico para experimentación

• Separación de responsabilidades con un único objetivo

• Reducir el stack de tecnologías

Buscar el conocimiento formal (papers y libros)

• Crawlers

• Text-mining

• Disambiguation

• Sentiment Analysis

• Message Oriented Platform

Recomendaciones• Utilizar Amazon AWS hace que muchas ideas se puedan probar

inmediatamente – hay scripts y “AMI” pre-armadas

• Hacer pruebas con Spot Instances vs. Instancias más grandes

• Automatizar los procesos desde el día 1 (Puppet,

CloudFormation)

• Virtualización, incluso en Dev: Vagrant, Docker, CoreOS

Recomendaciones

• Testing, testing, testing

• Usar datasets medianos en Dev y grandes en Staging

• Monitorear los procesos, aprender los patrones de los datos

Dónde aprender más

Mucha documentación disponibleLamda Architecturehttp://lambda-architecture.net/

Getting Started with Big Data Architecturehttp://blog.cloudera.com/blog/2014/09/getting-started-with-big-data-architecture/

Your weekly Hadoop news fixhttp://www.hadoopweekly.com/ The Hortonworks Bloghttp://hortonworks.com/blog/

Applying the Lambda Architecture with Spark - Jim Scotthttp://spark-summit.org/2014/talk/applying-the-lambda-architecture-with-spark

Cloudera Engineering Bloghttp://blog.cloudera.com/blog/ Listado de herramientas de Big Data y papers relevanteshttp://blog.andreamostosi.name/big-data/

Obrigado & Gracias!

Gustavo & Juan

jobs@socialmetrix.com