Jss 2015 - Microsoft Stream analytics

Post on 23-Feb-2017

278 views 4 download

Transcript of Jss 2015 - Microsoft Stream analytics

#JSS2015

Les journéesSQL Server 2015

Un événement organisé par GUSS

@GUSS_FRANCE

#JSS2015

Les journéesSQL Server 2015

Un événement organisé par GUSS

Architecture Lambda -Stream Analytics

Michel HubertGeorges Damien

#JSS2015

Merci à nos sponsors

#JSS2015

About me• Michel Hubert• Directeur Technique chez

Cellenza• MVP Azure• Microsoft P-Seller

#JSS2015

About me

• Georges Damien• Consultant chez Cellenza

#JSS2015

Démonstrateur

http://tinyurl.com/cellenza

#JSS2015

• « La meilleure façon de prédire le futur est de regarder le passé et

le présent ! »

Introduction• Pourquoi les architectures lambda ?

#JSS2015

• Historiquement, le BigData est une suite logique de la B.I.

• Donc on a appliqué les techniques de la B.I. : Le Batch• Ce n’est pas plus suffisant !

• Des flux de données à prendre en compte en temps-réel• Des historiques très volumineux qui recèlent de la valeur

IntroductionPourquoi les architectures lambda ?

#JSS2015

• Architecture lambda ?De quoi parle-t-on ?

#JSS2015

• La base de données classique :• Ex d’une action utilisateur (changement d’adresse) :

• Chaque update écrase des données précédentes !

Principe de baseArchitecture basée sur des données

immuables

UPDATE

#JSS2015

• Stockage immuable :• La mort de l’update, vive l’insert !

• Toute autre information peut être dérivée/reconstruite à partir de ces données brutes

Principe de base• Architecture basée sur des données

immuables

#JSS2015

• Quels cas d’usage ?Big Data + Temps réel

#JSS2015

• Prenons un scénario Exemple :– Site eCommerce / Retail

• Quels gains ?• Analyse temps réel des comportements,• Calcul du Taux d’abandon de panier,• Prévision de stock• Détection de Fraude• Analyse d’une campagne marketing• Quels produits ne déclenchent pas d’achat ? Problème de stock ? De

prix ?

ScénarioArchitecture Lambda

#JSS2015

Réponse MicrosoftPresentation and action

Storage andBatch Analysis

StreamAnalysis

IngestionCollectionEvent production

Event hubs

Cloud 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(Power BI)

Web/thick client dashboardsEvent Hubs

SQL DB

HD Insight

Power BI

Storage Blobs

Stream Analytics

Devices to take action

MachineLearning

more to come…

#JSS2015

EVENT HUBLa « Master Data »

#JSS2015

Azure Service BusAzure Service

BusRelay

Queue

Topic

Notification Hub

Event Hub

NAT and Firewall Traversal ServiceRequest/Response ServicesUnbuffered with TCP ThrottlingMany publishers and many consumers to communicate over a FIFO like channel. (Competing consumers and Queue-based Load leveling scenarios)

Pub / Sub communication channel. Each Consumer subscribes to a copy of message

High-scale notification distributionMost mobile push notification servicesMillions of notification targets

#JSS2015

EventHubEvent Hub vs Topics / Queues

• Bus de messages

Topics / Queues Event Hub

#JSS2015

Event Hub : Principe général

Event Producers

Azure Event Hub

> 1M Producers> 1GB/sec Aggregate Throughput

Up to 32 partitions via portal, more on

request

Parti

tions

Direct

PartitionKeyHash

Consumer

Group(s)

Receivers

AMQP 1.0Credit-based flow controlClient-side cursorsOffset by Id or Timestamp

#JSS2015

Event Hub : Envoi de donnéesChaque Event Hub a un nombre déterminé de partitionsChaque événement possède une clef de partition, assignée à une partition en sortie

Partition 1

Partition 2

Partition “n”

Event 1PartitionKey=

A

Event 1PartitionKey=

B

#JSS2015

Publication de message .Net / AMQP

#JSS2015

Publication de message via HTTP<protocol>://<namespace>.servicebus.windows.net/<eventhubname>/publisher/<partitionkey>/messages

#JSS2015

Event Hub : Consommation de données

Partition 1

Partition 2

Partition “n”

Event 1Pkey = A

Event 2Pkey = B Receiver 6

Receiver 2

Worker “n”

Receiver 1Receiver “n”

Worker 1

Chaque consommateur (worker) se connecte à l’Event Hub, et reçoit les messagesOn met en place un receiver pour chacune des partitions attendues

#JSS2015

Event Hub : Consommation multipleOn met en place des groupes de consommateurs lorsque plusieurs applications consomment un même flux

Partition 1

Partition 2

Partition “n”

Consumer Group C

Callback for prtn. 6

Callback for prtn. 2

Worker “n”

Callback for prtn. 1

Callback “n”

Worker 1Consumer Group B

Callback for prtn. 6

Callback for prtn. 2

Worker “n”

Callback for prtn. 1

Callback “n”

Worker 1Consumer Group A

Worker “n”Callback for prtn. 6

Callback for prtn. 2

Callback for prtn. 1

Callback “n”

Worker 1

#JSS2015

IEventProcessor

Architecture Lambda

#JSS2015

IEventProcessor

Architecture Lambda

#JSS2015

demoEVENT HUB

#JSS2015

STREAM ANALYTICSComplex Event Processing

#JSS2015

Données au repos

SELECT count(*) FROM ParkingLotWHERE type = 'Auto' AND color = 'Red'

Question“Combien de voitures rouges dans le parking?”

Répondre avec une base de donnée relationnelleMarcher jusqu’au parkingCompter les véhicules qui sont: Rouge, Voiture

#JSS2015

Données en mouvementLa question est différente“Combien de voitures rouges sont passées au marqueur 18A sur l’A-10 dans la dernière heure?”

Répondre avec une base de donnée relationnelleS’arrêter, faire se garer toutes les voitures qui arrivent pendant l’heure dans un parking, les compter

Pas la meilleure des solutions…

#JSS2015

L’avantage définitif

SELECT count(*) FROM A-10WHERE Type = ‘Voiture’ and Color = ‘Rouge’GROUP BY TumblingWindow(hour, 1)

La question est différente“Combien de voitures rouges sont passées au marqueur 18A sur l’A-10 dans la dernière heure?”

#JSS2015

Agrégation temporelle – SQL LikeTumblingWindow(minute,5) HoppingWindow(minute, 10 , 5)

SlidingWindow(minute, 3)

https://msdn.microsoft.com/fr-fr/library/azure/dn834998.aspx  

#JSS2015

Stream Analytics

#JSS2015

Stream Analytics

#JSS2015

• Agrégation simple :

– SELECT sensorId, MIN(temp) as tempFROM SensorReadingsTIMESTAMP BY timeGROUP BY sensorId, SlidingWindow(second, 5)HAVING MIN(temp) > 75 

Exemples de requêtes

#JSS2015

• Agréagation plusieurs flux :

– SELECT s1.time, s1.dspl, s1.hmdt as previousHmdt, s2.hmdt as newHmdt, datediff(ss, s1.time, s2.time) as secondsApart

FROM SensorData s1 timestamp by timeJOIN SensorData s2 timestamp by timeON s1.dspl = s2.dsplAND DATEDIFF(s, s1, s2) BETWEEN 0 AND 5WHERE (s2.hmdt - s1.hmdt >= .1) or (s1.hmdt - s2.hmdt >= .1)

Exemples de requêtes

#JSS2015

• Jointure avec table de référence :

– SELECT SensorReadings.sensorID, SensorReadings.tempFROM SensorReadingsJOIN thresholdRefDataON SensorReadings.sensorID = thresholdRefData.sensorIDWHERE SensorReadings.temp > thresholdRefData.value 

Exemples de requêtes

#JSS2015

• Plusieurs sorties :– SELECT *

INTO outputLogFROM SensorReadings

– SELECT *INTO outputTempAlertFROM SensorReadingsWHERE temp > 75

Exemples de requêtes

#JSS2015

demoANALYSE DE LOGSStream Analytics

#JSS2015

demoDÉTECTION DE FRAUDESStream Analytics

#JSS2015

demoANALYSE DE TWEETSStream Analytics

#JSS2015

Des questions ?• Michel Hubert• Michel.hubert@Cellenza.co

m• @michelhubert• Georges Damien• Georges.damien@Cellenza.

com• @georges_damien

#JSS2015#JSS2015

Les évaluations des sessions,c’est important !!

http://GUSS.Pro/jss

#JSS2015

Merci à nos volontaires…

#JSS2015#JSS2015