azure realtime analytics: análisis de datos en tiempo real
TRANSCRIPT
Leonardo Micheloni
@leomicheloni
Azure Analytics
Quién soy?
• Desarrollador de software hace 15 años• Trabajabo en Kinetica Solutions• Actualmente estamos utilizando estas herramientas
De qué vamos a hablar?
• Captura y análisis de datos en tiempo real• Azure• Variantes• Ventajas• Costos
Planteo del problema
• Necesidad de recibir y analizar una gran cantidad de datos• De diversos orígenes• A diferentes tasas de arribo• Manipulación de los datos (contar, agrupar, seleccionar, etc.)
• Posibles escenarios• Análisis de tráfico en grandes ciudades• Comportamiento de clientes• IoT• Medición de audiencias
Qué podríamos hacer?
• Solución custom• Implica mucha inversión de hardware• Si es un éxito hay que conseguir más hardware• Si falla tenemos que arreglarlo nosotros• Centralizado geográficamente
• Usar una solución de terceros (Azure)• Podemos escalar a demanda• No falla• Disponibilidad geográfica
Qué ofrece Azure?
• Event hubs• Hadoop• Stream analytics• DocumentDb• Web sites• Máquinas virtuales• Otros sistemas
Qué ofrece Azure?
Por qué PAAS?
Aplicaciones
Data
Runtime
O/S
Virtualización
Servidores
Networking
IAAS
Aplicaciones
Data
Runtime
O/S
Virtualización
Servidores
Networking
Aplicaciones
Data
Runtime
O/S
Virtualización
Servidores
Networking
PAAS SAAS
Características
• Permite inyectar eventos a gran escala• Publish / suscriber• Millones de eventos• Halo, Minecraft, Xbox 360• HTTP / AMQP• SAS
Evet hubs
Publish Suscriber
• Más adecuado para este tipo de escenarios que las colas• Arquitectura basada en particiones en lugar de base de datos• Existen clientes para las principales plataformas• Es trivial crear un cliente
Event hubs
Millones de eventos
• Up to 1GB/s input• Up to 100.000 sources / event hub• Thoughput: 1MB per unit, up to 1000 units per secound• Consumer groups• Storage 84GB / day• Retention policy 1 up to 7 day (pedidos especiales hasta 20 días)• 2.8 c/u$s por millón de eventos
Event hubs
Particiones
• Definen las lecturas simultáneas• Partition key• Hasta 32• Pedidos especiales hasta 1000
Event hubs
Retention policy
• Se retienen los eventos hasta ser consumidos• 24 horas por defecto sin costo adicional• Días adicionales tienen costo hasta 7 días (especial 30)• Checkpoint en caso de falla se retoma, se puede “rebobinar”• Up to 84GB
Event hubs
Checkpoint
HTTP / AMQP
• Soporta el estándar AMQP• Interoperable con múltiples plataformas
• Java• PHP• IoT
• Posibilidad de usar HTTP
Event hubs
SAS
• Posibilidad de definir la seguridad por cadena de conexión• Se define una key para un nivel de lectura o escritura
Event hubs
Demo
Event hubs
Stream Analytics
Qué es Stream Analytics
• PaaS (Platform as a Service)• Motor de procesamiento a gran escala (hasta 1GB/s)• Real-time streaming.• Fuerte integración con EventHub (Out of the Box)• Agrupación y agregación de datos.
Stream Analytics
Stream AnalyticsStream Analytics
Características• Captura, procesa y agrega datos en tiempo real.• Sin pérdida de datos.• Troughput de hasta 1GB x seg (millones de eventos).• Alta disponibilidad y capacidad de recuperación.• Bajo costo en desarrollo y en administración• 3 componentes principales:
• Inputs• Queries• Outputs
Stream Analytics
Captura (inputs)• Múltiples, en simultáneo
• Tipos de input:• Data de referencia• Data de streaming (Event-hubs, IoT, Blobs)
Stream Analytics
Transformación (queries)• SQL-Like queries.
• Multiple input, multiple outputs.
• Agrupamiento basado en ventanas (Tumbling, Hopping, Sliding)
Stream Analytics
Transformación (queries)Stream Analytics
Windowing - conceptos• Agrupamiento basado en ventanas (Tumbling, Hopping, Sliding)• Windows de tamaño fijo• El Timestamp de output representa el fin de la ventana• Requiere agrupamiento.
Stream Analytics
Tumbling Windows• Cantidad de lecturas de sensor por device cada 10 segundos.
Stream Analytics
SELECT sensorId, COUNT(*) AS CountFROM SensorReadings TIMESTAMP BY timeGROUP BY sensorId, TumblingWindow(second, 10)
Hopping Windows• Cada 5 segundos,
cantidad de lecturas de sensor y la temperatura promedio en los últimos 10 segundos
Stream Analytics
SELECT sensorId, COUNT(*) AS Count, AVG(temp) FROM SensorReadings TIMESTAMP BY timeGROUP BY sensorId, HoppingWindow(second, 10, 5 )
Sliding Windows• Temperatura es mayor a
75 para un total de 5 segundos
Stream Analytics
SELECT sensorId, MIN(temp) as temp FROM SensorReadingsTIMESTAMP BY timeGROUP BY sensorId, SlidingWindow(second, 5)HAVING MIN(temp) > 75
Outputs• Son el resultado del procesamiento en las queries
• Múltiples posibles
Stream Analytics
OutputsStream Analytics
Configuración• Event Ordering Policy
• Late Arrival tolerance Window• Out of Order tolerance window• Action (Adjust – Drop)
Stream Analytics
Out of Order/ Late ArrivalStream Analytics
En query...TIMESTAMP BY...
Por default: Timestamp by
Enqueue timestamp
Evento 115:43 (-3)
Evento 215:42 (-3)
En query...TIMESTAMP BY...
Evento 3TIMESTAMP: 15:43:25 (-3)
Encolado:15:43.26 NUEVO TIMESTAMP (AJUSTADO): 15:43:29 (-3)
Causas:• Clock Skews
• EH Clock Skews
• Network Delay
Escalabilidad• Escalabildad:
• Streaming Units (1 MB/s Cada SU) (Hasta 48) • Pricing:
Stream Analytics
No tan bueno• Esencial manejo desde el portal
• Deployment por PS con json
• El SAQL es limitado
• Puede tener latencia asociada
Stream Analytics
Demo
Event hubs
¿Qué es DocumentDB?
• Database as a service• NoSql ->
• Key-value store• Column store• Graph databases• Document store
• Diseñado para aplicaciones escalables y altamente performantes
DocumentDb
✔
Azure Data Services – antes...DocumentDb
Fuente: http://channel9.msdn.com
Azure Data Services - después...DocumentDb
Fuente: http://channel9.msdn.com
Alternativas de terceros:DocumentDb
• Más orientadas a IAAS que PAAS• "desventajas" de IAAS: sharding a mano, al igual que la replicación• PAAS -> todo manejado dentro de Azure• Escalabidad on-demand controlada
Modelo de recursosDocumentDb
Interacción con DocumentDBDocumentDb
• RESTful http interface• SDK (.Net, Node, Python, JS) • Queries -> gramática SQL (extensibilidad con Javascript)
Javascript para lógica de negocioDocumentDb
• DocumentDb fue escrito pensado y optimizado para Javascript• Se pueden escribir UDF, SP y Triggers en Javascript• Transacciones integradas al lenguaje (los procedures se ejecutan
dentro de una transacción implícita)
Schema-freeDocumentDb
• Schema-free REAL• No se definen índices (campos se indizan automáticamente, no hay
inferencia de schema)• Posibilidad de customizar los índices
Digresión: el teorema CAPDocumentDb• Un sistema distribuido no puede garantizar, simultáneamente:
• Consistency• Availability• Partition network tolerance
• Con esto en mente, un sistema distribuido puede ser:• "CP" -> consistente pero NO disponible bajo una partición de red• "AP" -> disponible pero NO consistente bajo una partición de red• "CA" -> imposible!
{A, B, C} -> {A,B} {C}
"tunnable consistency"DocumentDb
• 4 niveles de consistencia de datos• Eventual consistency• Strong consistency• Bounded staleness consistency• Session consistency
¿Cómo escala?DocumentDb
• Collections -> 10gb de capacidad de storage• Performance levels• RequestUnit (RU) -> mide lo que tarda en procesar un request• 1 RU -> read json de 1kb con 10 properties• Esto asumiendo Session Consistency• x-ms-request-charge se incluye en los responses
QuotasDocumentDb
• 5 DocumentDB accounts• 100 base de datos por account• 100 colecciones por base de datos• 500.000 usuarios (entre todas las DB)• 25 SP, triggers y UDF (cada uno) por colección• 10GB por colección• Tamaño máximo de documento json: 512KB
Demo
DocumentDb
MVA
http://blog.sysfore.com/the-a-z-of-microsoft-azure-services/
Recursos Continúa Aprendiendo
Microsoft Virtual Academyhttp://aka.ms/academia
Channel 9http://aka.ms/canal9