Jss 2015 - Microsoft Stream analytics

284 vues

Publié le

Analyse de données en temps réel avec Stream Analytics

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
284
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
5
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Performance du stockage
    APPEND-only est très performant, ex. Hadoop/HDFS
    Pensez-y, au cœur d’une base SQL, il y a un append-log, qui est le maître en cas de crash…

    Robustesse aux erreurs humaines
    Un bug ne viendra jamais détruire de la donnée, seulement ajouter des enregistrements erronés (ou doublonnés, ou…)
    Facile à corriger :
    Soit on vient supprimer les lignes erronées,
    Soit on ajoute des lignes correctrices
  • La clé plus de différence entre les deux est balance. Un service de messagerie peut ramasser une sélection de forfaits et s'assurer qu'ils sont livrés. Mais si vous devez déplacer des centaines de milliers de paquets, vous pouvez le faire avec beaucoup de courriers, ou vous pourriez construire un centre de distribution capable de gérer ce genre de volume plus rapidement. Événement Hub est ce centre de distribution. Mais il est été construit comme un service géré, donc vous n'avez pas à construire votre propre installation coûteuse. Vous pouvez exploiter juste celui que nous avons créé pour vous
  • Here we have a simple sample implementation of the ProcessEventsAsync method. We have a try/catch block to handle errors, but within it a processing loop for the events. Inside this loop, we look at the event properties to help determine what type of event it is so we can deserialize the event and operate on it. I’m just writing it to the console, but in the real world, we may use this to notify an Orleans grain or save the data so that we can process it via an HDInsight cluster. For more about both of these options, be certain to check out the two sister sessions to this one tomorrow.

    Lastly, note this block of code(1) where ever minute, we do a checkpoint operation. This tells the event hub that we’ve processed everything up to this point. Hence saving where we’re at in the event stream. This allows us to start and stop the processor and pick up near where we left off. This also really highlights the difference between event hubs and topics/queues. With topics/queues, the focus is more on ACID type operations again specific messages… put/get/delete… but in Event Hub, we have this buffered stream of events and we need to keep track of where we are in it. We can easily rewind to reprocess messages. So we need to account for this “at least once” possibility.
  • On parlait des speakers, il y a une chose qui leur tient à cœur !
  • Jss 2015 - Microsoft Stream analytics

    1. 1. #JSS2015 Les journées SQL Server 2015 Un événement organisé par GUSS @GUSS_FRANCE
    2. 2. #JSS2015 Les journées SQL Server 2015 Un événement organisé par GUSS Architecture Lambda -Stream Analytics Michel Hubert Georges Damien
    3. 3. #JSS2015 Merci à nos sponsors
    4. 4. #JSS2015 About me • Directeur Technique chez Cellenza • MVP Azure • Microsoft P-Seller
    5. 5. #JSS2015 About me
    6. 6. #JSS2015 Démonstrateur http://tinyurl.com/cellenza
    7. 7. #JSS2015 • « La meilleure façon de prédire le futur est de regarder le passé et le présent ! » Introduction • Pourquoi les architectures lambda ?
    8. 8. #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 Introduction Pourquoi les architectures lambda ?
    9. 9. #JSS2015 • Architecture lambda ? De quoi parle-t-on ?
    10. 10. #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 base Architecture basée sur des données immuables UPDATE
    11. 11. #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
    12. 12. #JSS2015 • Quels cas d’usage ? Big Data + Temps réel
    13. 13. #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énario Architecture Lambda
    14. 14. #JSS2015 Réponse Microsoft
    15. 15. #JSS2015 EVENT HUB La « Master Data »
    16. 16. #JSS2015 Azure Service Bus Azure Service Bus Relay Queue Topic Notification Hub Event Hub NAT and Firewall Traversal Service Request/Response Services Unbuffered with TCP Throttling Many 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 distribution Most mobile push notification services Millions of notification targets
    17. 17. #JSS2015 EventHub Event Hub vs Topics / Queues • Bus de messages Topics / Queues Event Hub
    18. 18. #JSS2015 Event Hub : Principe général Architecture Lambda Event Producers Azure Event Hub > 1M Producers > 1GB/sec Aggregate Throughput Up to 32 partitions via portal, more on request Partitions Direct PartitionKey Hash Consumer Group(s) Receivers AMQP 1.0 Credit-based flow control Client-side cursors Offset by Id or Timestamp
    19. 19. #JSS2015 Event Hub : Envoi de données Partition 1 Partition 2 Partition “n” Event 1 PartitionKey=A Event 1 PartitionKey=B
    20. 20. #JSS2015 Publication de message .Net / AMQP
    21. 21. #JSS2015 Publication de message via HTTP <protocol>://<namespace>.servicebus.windows.net/<eventhubname>/publisher/<partitionkey>/messages
    22. 22. #JSS2015 Event Hub : Consommation de données Partition 1 Partition 2 Partition “n” Event 1 Pkey = A Event 2 Pkey = B Receiver 6 Receiver 2 Worker “n” Receiver 1 Receiver “n” Worker 1
    23. 23. #JSS2015 Event Hub : Consommation multiple 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
    24. 24. #JSS2015 IEventProcessor Architecture Lambda
    25. 25. #JSS2015 IEventProcessor Architecture Lambda
    26. 26. #JSS2015 EVENT HUB
    27. 27. #JSS2015 STREAM ANALYTICS Complex Event Processing
    28. 28. #JSS2015 Données au repos SELECT count(*) FROM ParkingLot WHERE type = 'Auto' AND color = 'Red' Question “Combien de voitures rouges dans le parking?” Répondre avec une base de donnée relationnelle Marcher jusqu’au parking Compter les véhicules qui sont: Rouge, Voiture
    29. 29. #JSS2015 Données en mouvement La 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 relationnelle S’arrêter, faire se garer toutes les voitures qui arrivent pendant l’heure dans un parking, les compter Pas la meilleure des solutions…
    30. 30. #JSS2015 L’avantage définitif SELECT count(*) FROM A-10 WHERE 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?”
    31. 31. #JSS2015 Agrégation temporelle – SQL Like TumblingWindow(minute,5) HoppingWindow(minute, 10 , 5) SlidingWindow(minute, 3) https://msdn.microsoft.com/fr-fr/library/azure/dn834998.aspx
    32. 32. #JSS2015 Stream Analytics
    33. 33. #JSS2015 Stream Analytics
    34. 34. #JSS2015 • Agrégation simple : – SELECT sensorId, MIN(temp) as temp FROM SensorReadings TIMESTAMP BY time GROUP BY sensorId, SlidingWindow(second, 5) HAVING MIN(temp) > 75 Exemples de requêtes
    35. 35. #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 time JOIN SensorData s2 timestamp by time ON s1.dspl = s2.dspl AND DATEDIFF(s, s1, s2) BETWEEN 0 AND 5 WHERE (s2.hmdt - s1.hmdt >= .1) or (s1.hmdt - s2.hmdt >= .1) Exemples de requêtes
    36. 36. #JSS2015 • Jointure avec table de référence : – SELECT SensorReadings.sensorID, SensorReadings.temp FROM SensorReadings JOIN thresholdRefData ON SensorReadings.sensorID = thresholdRefData.sensorID WHERE SensorReadings.temp > thresholdRefData.value Exemples de requêtes
    37. 37. #JSS2015 • Plusieurs sorties : – SELECT * INTO outputLog FROM SensorReadings – SELECT * INTO outputTempAlert FROM SensorReadings WHERE temp > 75 Exemples de requêtes
    38. 38. #JSS2015 ANALYSE DE LOGS Stream Analytics
    39. 39. #JSS2015 DÉTECTION DE FRAUDES Stream Analytics
    40. 40. #JSS2015 ANALYSE DE TWEETS Stream Analytics
    41. 41. #JSS2015 Des questions ? Michel.hubert@Cellenza.com Georges.damien@Cellenza.com
    42. 42. #JSS2015#JSS2015 Les évaluations des sessions, c’est important !! http://GUSS.Pro/jss
    43. 43. #JSS2015 Merci à nos volontaires…
    44. 44. #JSS2015#JSS2015

    ×