Upload
ivette-riso
View
219
Download
0
Tags:
Embed Size (px)
Citation preview
#dotNETSpain2015
Luis GuerreroTechnical Evangelist [email protected]
Gestión masiva de datos en la era IoT
Y
AX B
#dotNETSpain2015
¿Qué son los datos en movimiento?
Azure Stream Analytics Twitter Streaming API +
DotNetSpain2015 + Azure
Agenda
¿Por qué es relevante?
¿Qué son los datos en movimiento?
¿Que son los datos en movimiento?
Datos en movimiento
Datos parados
Escenarios IoT conectados
Smart grid Alertas de ventas con CRM
Detección de fraudes en tiempo real
Coches conectados
Escenarios IoT conectados
Servicios de protección de datos e identidad
Registro financiero de las ventas en tiempo real
Análisis de los clicks de las apps
Alertas en tiempo real de datos financieros
Resumen de escenarios
Ingesta
ARCHIVADO
Analíticas
TELEMETRÍA / ANÁLISIS DE REGISTROS
Acciones
INTERNET OF THINGS (IOT)
¿Cómo se crean esta soluciones de análisis de flujos en tiempo real?
TiempoRecursos de desarrollo e infraestructura
Infraestructura – Instalación y configuración
Desarrollo de la solución (código) para la ingesta, procesado de datos
y archivado
Desarrolla soluciones que integren otras soluciones como Machine
Learning, Business Intelligence, etc
Desarrolla soluciones que tengan resiliencia a fallos en infraestructura
y almacenado
Desarrolla soluciones e infraestructura que crezcan con tus
necesidades de negocio
Monitoriza y analiza los errores de la solución
Presentamos Azure Stream Analytics
Análisis de Twitts en tiempo real
Twittea con #dotnetspain2015
#megusta #nomegusta
Ingesta de Twitts en tiempo real con Event Hubs
Azure Service BusAzure Service
BusRelay
Queue
Topic
Notification Hub
Event Hub
Servicio de Firewall trasversal de NATServicios Request/ResponsSin búfer con TCP Throttling
Broker transacciones en la nube con AMQP/HTTPMensajería de alta escalabilidad, alta disponibilidadsoporte de sesiones, envío programado, etc.
Distribución transaccional de mensajesHasta 2000 subscriptores por temaHasta 2K/100K reglas de filtro por subscripción
Envío de notificaciones de alto rendimientoSoporta la mayoría de proveedores móvilesMillones de notificaciones por etiqueta
Presentamos Azure Event Hubs
Rendimiento de procesamiento de las unidades:• 1 ≤ TUs ≤ Número de
particiones
• TU: 1 MB/s escritura, 2 MB/s lectura
Productores de
eventos
Azure Event Hub
> 1M productores> 1GB/seg Rendimiento de procesamiento agregado
Hasta 32 particiones a través
del portal, se pueden solicitar
más
Part
icio
nes
Directo
PartitionKeyHash
Grupo de
consumo
Receptores
AMQP 1.0
Control del flujo basado en crédito
Cursores en los clientes
Desplazamiento por Id o Timestamp
Event Processor Host
IEventProcessor
Muchos tipos de publicadores De corta vida, bajo rendimiento de
procesado: HTTPS De larga vida, alto rendimiento de
procesado: AMQP Conexiones de larga vida basadas en
AMQP son facturables, las particiones HTTPS no; las conexiones AMQP están permitidos dentrol del tier
Publica por… PartitionId
Directo PartitionKey
PartitionKey seleccionado PartitionId Política del publicador
(<eh>/publishers/<name>) <name> overriding PartitionKey
Publicadores
Productores de eventos
Directo
PartitionKeyHash
Part
itio
ns
Vistas sobre el flujo de Event Hub Conceptualmente son similares a la suscripción
a los temas ya que son vistas del Event Hub Puntos de control manejados por el consumidor
del grupo Anclaje pare crear receptores por partición Siempre hay un grupo de consumo
predeterminado $default Se pueden crear hasta 20 grupos de consumo
con nombre Stream Analytics siempre consume el
grupo predeterminado, si quieres consumir a la vez crea otro grupo de consumo
Grupo de consumo
Grupos de consumo
¿Qué es Azure Stream Analytics?
Presentando Stream Analytics
Disponible, escalable y con soporte de aplicaciones de misión crítica
Permite un desarrollo rápido
Sistema de analítica completamente administrado y en tiempo real
Procesa millones de eventos por segundoProcesa datos desde dispositivos/apps conectadaIntegración con el sistema de publicador consumidor altamente escalable
Procesa flujos de datos de manera muy sencillaTransforma, argumenta, realiza operaciones basadas en tiempoDetecta patrones y anomalías en los flujos de datos
Correlaciona datos dentro del flujo
Analítica en tiempo real
Sin desafíos en el despliegue
No es necesario adquirir hardware y mantenerlo
Bypasses deployment expertiseUp and running in a few clicks (and within minutes)No software provisioning and maintainingPerformance tuning
Easily expand your business globally
Presentando Stream Analytics
Disponible, escalable y con soporte de aplicaciones de misión crítica
Permite un desarrollo rápido
Sistema de analítica completamente administrado y en tiempo real
Garantías en las entregas de eventosGarantía de no perder ningún evento o de una salida incorrectaPreserva el orden de los evento por dispositivo
Garantizado la continuidad de tu negocioAlta disponibilidad (tres nueves de disponibilidad)Se recupera automáticamente de los fallosGestión automática del estado que permite una rápida recuperación
Confiabilidad
La elasticidad de la nube para escalar hacia arriaba o hacia abajoDesde pocos recursos hasta mucho cuando sea requeridoDistribuido, con una arquitectura de escalado horizontalSe puede escalar recursos directamente desde el portal sin necesidad de escribir código.
Precio de entrada muy bajoProvisiona y ejecuta soluciones de Stream Analytics desde $25/mesPaga sólo por los recursos que usasHabilidad para añadir recursos de manera incremental
Escalado automático
Presentando Stream Analytics
Disponible, escalable y con soporte de aplicaciones de misión crítica
Permite un desarrollo rápido
Sistema de analítica completamente administrado y en tiempo real
Utiliza el lenguaje de procesado de Stream Analytics basado en un lenguaje SQLStreamAnalytics se basa en un lenguaje SQL muy parecido al de los motores de base datos relacionesFiltra, haz proyecciones, agregaciones, une flujos, añade información estática, detecta patrones todo ello con muy pocas líneas de código SQL
Menos mantenimiento de código requeridoHaz cambios y pruebas en minutos, no en días ni semanas
Desarrolla y depura directamente desde el Portal de AzureEstadísticas de uso en tiempo real a través del portal
Integración con otros servicios de AzureEventHub, Azure Blobs y Azure SQL DB
Desarrollo rápido
Lenguaje de consultaDML Statements• SELECT• FROM• WHERE• GROUP BY• HAVING• CASE• JOINS• UNION
Scaling Functions• WITH• PARTITION BY
Date and Time Functions• DATENAME• DATEPART• DAY• MONTH• YEAR• DATETIMEFROMPARTS• DATEDIFF• DATADD
Windowing Extensions• Tumbling Window• Hopping Window• Sliding Window
Aggregate Functions• SUM• COUNT• AVG• MIN• MAX
String Functions• LEN
CONCATCHARINDEX
• SUBSTRING• PATINDEX
Utiliza funciones basadas en tiempo de manera sencillaTumbling Windows
Repeating, non-overlapping, fixed interval windows
Hopping WindowsGeneric window, overlapping, fixed
size
Sliding WindowsSlides by an epsilon and produces
output at the occurrence of an event
Administra eventos fuera de orden
Funciones basadas en tiempo
Demo
Arquitectura
Origen de datos Ingesta Procesado ConsumoSalida
Entradas- Event Hub
Dos consultas#megusta#nomegusta
Outputs- Event Hub
☁AzureStorage
Worker Role Twitter Streaming API
Worker Role Persistencia• SQL
Azure• Storage
Tables
Azure Web Site
WebSockets SignalR
Canonical eventing scenario
Ingestor (broker)
Collection Presentation and action
Event producers
Transformation
Long-term storage
Event hubs
Storage adapters
Stream processingCloud gateways
(web APIs)
Field gateways
Applications
Legacy IOT (custom protocols)
Devices
IP-capable devices(Windows/Linux)
Low-power devices (RTOS)
Search and query
Data analytics (Excel)
Web/thick client dashboards
Service bus
Azure DBs
Azure storage
HDInsight
Stream Analytics
Devices to take action
Todos los eventos que fluyen por el sistema tienen un timestamp
Se puede hacer consultas utilizando el tiemstamp SELECT * FROM TwitterStream TIMESTAMP BY
CreatedAt
Se puede consultar el Tiemstamp SELECT System.Timestamp AS Time, Text FROM
TwitterStream
Nota: System.Timestamp es una propiedad reserva del sistema.
Los eventos y la fecha
Dime el número de twitts por zona cada 10 segundos
Tumbling Windows
SELECT TimeZone, COUNT(*) AS Count FROM TwitterStream TIMESTAMP BY CreatedAt GROUP BY TimeZone, TumblingWindow(second,10)
1 5 4 26 8 6 5
0 5 2010 15 Time (secs)
1 5 4 26
8 6
25
A 10-second Tumbling Window
30
3 6 1
5 3 6 1
Dame cada 5 segundos el número de twitts y la media de sentimiento de los últimos 10 segundos
Hopping Windows
SELECT Topic, COUNT(*) AS TotalTweets, AVG(SentimentScore) FROM TwitterStream TIMESTAMP BY CreatedAtGROUP BY Topic, HoppingWindow(second, 10 , 5)
1 5 4 26 8 7
0 5 2010 15 Time (secs)
25
A 10-second Hopping Window with a 5-second “Hop”
30
4 26
8 6
5 3 6 1
1 5 4 26
8 6 5 3
6 15 3
Give me the count of tweets for all topics which are tweeted more than 10 times in the last 10 seconds
Sliding Windows
SELECT Topic, COUNT(*) FROM TwitterStream TIMESTAMP BY CreatedAtGROUP BY Topic, SlidingWindow(second, 10)HAVING COUNT(*) > 10
1 5
0 5 2010 15 Time (secs)
25
A 10-second Sliding Window
8
8
51
9
51 9
1
List all users and the topics on which they switched their sentiment within a minute
Joining multiple streams
SELECT TS1.UserName, TS1.TopicFROM TwitterStream TS1 TIMESTAMP BY CreatedAt JOIN TwitterStream TS2 TIMESTAMP BY CreatedAtON TS1.UserName = TS2.UserName AND TS1.Topic = TS2.Topic AND DATEDIFF(second, TS1, TS2) BETWEEN 1 AND 60WHERE TS1.SentimentScore != TS2.SentimentScore
{“XO”, 4, “Hawks”} {“Jo”, 0, “ALS”} {“Foo”,4, “ALS”}Twitter Stream: {“Dip”, 2, “XBox”}
{“XO”, 0, “Hawks”} {“Dip”, 0, “Xbox”}{“Jo”, 4, “ALS”} {“Foo”, 0, “ALS”}
Twitter Stream:
time
#dotNETSpain2015
¡¡¡Si te ha gustado no olvides rellenar la encuesta!!!Thanks
Y
AX B