Techdays2015 big data-realtime

702 vues

Publié le

Au travers d'un scénario de domotique construit pas à pas, venez découvrir comment, en partant de données provenant de capteurs sans fils, vous pouvez mettre en place simplement dans Microsoft Azure une solution de surveillance et de pilotage de votre maison. Ce scénario présente la mise en oeuvre d'une Lambda architecture à l'aide de Azure Event Hub, Storm pour calculer en temps réel et au fil de l'eau des indicateurs approximatifs et Hadoop pour calculer les agrégats précis et pérennes. Des outils de Data Visualisation (site web en asp.net MVC / Web API 2 / SignalR) affichent les résultats en live !

0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

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

Aucune remarque pour cette diapositive
  • Bonjour et bienvenu a notre session sur le Big Data et l’analyse en temps réel.
    Je m’appelle Romain Casteres, je suis consultant en Business Intelligence et en Big Data chez Dcube. Je suis MVP SQL server certifié Hortonworks Developer et membre du Board du GUSS, le groupe utilisateur SQL Server Francophone.

    Anthony je te laisse te présenter : je suis consultant en développement .NET et Manager chez Dcube.

    La session est de niveau 300 et nous avons malheureusement que 45 minutes pour vous présenter beaucoup de chose. Nous passerons donc rapidement sur certains codes mais les sources sont d’ores et déjà disponible sur Github.
  • Romain : Voici l’agenda de notre session, dans un premier temps nous verrons qu’elles sont les besoins de l’analyse en temps réel.
    Anthony exprimera ensuite son idée d’analyser en temps réel a partir de capteurs sa maison
    Nous créerons l’architecture répondant aux besoins actuel et future
    Enfin lors d’une dernière démonstration nous analyseront les tweets avec Stream Analytics
  • Romain : Le monitoring en temps réel permet de prévenir et d’optimiser dans le but d’être réactif.
    Voiture connectée : Eviter les bouchons
    Objet Connecté : Création d’une alerte si par exemple la température d’un bâtiment augmente de 10%
    Gestion des stocks : Supply chain
    Détection de fraudes

    Suivi en temps réel des ventes : Création d’offres promotionnels
    Analyse de Click Stream : Etudier le comportement des internaute grâce a l’analyse des chemins emprunter sur le site en temps réel
    Alertes de portefeuille financier en temps réel : cours des actions en live

    Avec l’arrivé de l’analyse des réseaux sociaux, des objets connectés, … il est de plus en plus nécessaire d’analyser les données en temps réel et ceux sur des volumétries de plus en plus grandes.
  • Anthony :
    Mon idée est d'analyser en temps réel ma maison, par exemple récupérer la température de mon salon, ou savoir si quelqu'un est venu visité ma maison pendant que j'étais tranquillement au cinéma. Tout ça bien évidemment dans le but d’une part d'améliorer la sécurité de ma famille mais également mon confort de vie en fermant les volets le soir automatiquement.
  • Anthony :
    Pour récupérer ces informations, nous avons donc créer une petite box composé d'une raspberryPI qui est un petit ordinateur sous linux pas cher et où l'on fait tourner une application en NodeJS qui va permettre de récupérer les informations de différents capteurs et de les transmettres à un serveur pour analyse .
    Nous avons utilisés des capteurs EnOcean qui sont des capteurs de domotique sans file, il en existe d’autre comme Zwave, ZigBee mais EnOcean à l’avantage d’être sans fil et sans pile mais surtout une documentation bien faite et gratuite est disponible sur le site d'EnOcean .  Nous avons donc un capteur de température et humidité, d’ouverture de porte, un interrupteur et une prise commandé. Ces capteurs envois des informations intervalle régulier mais également lors d'un changement d'état (par exemple lorsque ouvre la porte)
    Nous avons utilisé une passerelle USB Enocean pour dialoguer avec les capteurs mais il existe un petit module que l'on connecte directement à la RaspberryPI.

    Pour répondre à notre idée, nous avons également utilisé des capteurs GrovePI qui cet fois-ci filaire, vraiment pas cher et très simple à utiliser. A la différence des capteurs Enocean, on peut récupérer les informations quand ont le souhaite. Dans notre cas on le fera toute les seconde.
  • Anthony : Pour répondre à nos besoin, j'ai imaginé rapidement à une architecture relativement simple qui est composé de notre Box RaspberryPI et d'un siteweb asp.net MVC pour visualiser les données le tout relier en WiFI. Romain qu'en penses-tu ?

    Romain :   Cette architecture a ses limites, lors de maintenance applicative une perte d’information peut avoir lieu.
    Anthony :   En effet si le système redémarre, les données envoyés a l’application alors quelle n’écoutait plus son perdus.
    Romain :   Lorsque la fréquence de génération des données est supérieur au temps de processing, une latence peut apparaitre, imagine que demain j’ai une dizaine d’appartement et chacun d’eux possèdent une vingtaine de capteurs,
    Anthony :   Une architecture distribué est donc nécessaire.
    Romain :   Enfin aucune sauvegarde des données n’est prévu. Anthony nous devons faire évoluer cette architecture !
    Anthony :Romain, je     te propose de repartir sur une nouvelle architecture que l'on va construire ensemble pour répondre à notre besoin.
    ---
    Event Hub garde pendant un jours les évènements ressues
    Latence : Si le programme n’est pas en mesure de consommer les données aussi vite qu’elles arrivent
    Il n'y a pas de redondance, si l'application Web ou le PC est en erreur, il n'y a pas de sauvegarde pour conserver les informations
    Si l’input data rate < temps processing alors notre système est bon, Si l’input data rate >  temps processing
    Ingestion pas possible sans système distribué de données
    Comment répondre au process failure -> Perte d’informationn, maintenance
    https://www.udacity.com/course/viewer#!/c-ud381/l-2731858540/m-341773858
  • Anthony : Pour répondre au problème de maintenance et de sacalabilité, je te propose de partie sur une solution Cloud Microsoft Azure qui va nous permettre de nous abstraire de toute la partie système car on n’aura pas besoin de gérer le réseau ni les mises à jour du système d’exploitation et en plus on va avoir un SLA de 99,9%.
  • Anthony :
    Ton deuxième besoin est d'éviter la perte d'information. Pour cela Microsoft à rajouté Azure il y a quelques temps Azure Event Hubs qui justement été créé pour gérer les problématiques d'objets connectés et de temps réel .
  • Anthony : Event Hub est simplement un concentrateur d’évènement qui permet de collecter des évenements et les diffuser aux applications qui sont abonnés au Event Hub. jusqu'à un million d'évènements par secondes et de parallélisant les traitements.

    Dans un event Hub, il est possible de paramétrer la rétention des messages de 1 à 7 jours. Ceci va nous permettre de répondre au problème de perte des messages car si le serveur doit redémarrer, les messages seront mis en attentent.
    On peut également paramétrer le nombre de partition qui va nous permettre de paralléliser le traitement des données provenant de tes futurs 2000 appartements et ainsi de tenir la charge face à se volume important de données.

    Pour envoyer des évènements dans le Hub, on peut utiliser soit le protocole AMQP 1.0 ou l'API HTTP. Dans notre cas nous avons utilisé depuis l'application NodeJS le module "event-hub-client".
    On va voir ensemble comment on crée un peu tout ça.
    Montrer comment créer un Event Hub.
    Montrer le code dans app.js
    Event Hubs est un service en ligne permettant de collecter et de diffuser en temps réel jusqu’à un millions d’évènements par secondes.
    Le système de queue a été créé pour répondre au problématique des objets connecté ou des services d’analyse en temps réel
    La configuration des partitions permet de paralléliser les traitements
    L’envoi d’événements peut se faire soit en utilisant un HTTP POST ou via le protocole AMQP 1.0 (Advanced Message Queuing Protocol).

    -> Montrer comment créer un Event Hub dans le portail Azure
    Les Event Hubs peuvent être créés depuis le portail Azure ou via l’API de management.
    Persistance des données si le serveurs n’est plus connecté
    ---
    Azure Service Bus
    Main reasons to use = Cost Savings
    Pay as you use
    No upfront infrastructure costs
    Elasticity based on demand
  • Romain : Pour répondre au problématique de Latence et de Scalabilité, il nous faut une architecture distribué permettant la gestion de millions d’événements en temps réel. Nous avons opté pour Apache Storm dans HDInsight, voyons son implémentation en détail.
  • Romain : Qui dans la salle connait Hadoop ? Hadoop c’est Framework big data possédant une archi distribué et un model de prog Map Reduce
    Hadoop est disponible dans Azure en tant que service via HDInsight, en tant que Plateforme as a Service avec les distributions Hortonworks et Cloudera.

    Un des aspects du Big Data est qu’il travail en mode batch, malgré la parallélisassions des traitements lorsque que le batch à fini de s'exécuter, de nouvelles données sont arrivés (V de Fréquence), la vision est donc erronée. Des outils de streaming et d'analyse en temps réel ont cependant été développé sur le Framework Hadoop, c’est le cas de Storm.

    ---
    Le challenge des système Big Data est de Détécter, Anticiper et Predire
  • Romain : Storm est un système de calculs temps réel distribué et tolérant aux pannes. Développé à l’origine par la société BackType, le projet est devenu open-source après l’acquisition de la société par Twitter. Pour traiter en continu un ou plusieurs flux de données, Storm repose sur la définition d’une topologie :
    Les Spouts désignent les sources de données
    Les Bolts sont les nœuds qui consomment les données, ils peuvent notamment filtrer, agréger, lire ou encore écrire les données sur une bases.

    Lorsqu’une topologie est soumise à Storm, celui-ci répartit l’ensemble des traitements à travers le cluster, chaque composant est alors exécuté en parallèle sur une ou plusieurs machines.

    On est resté sur la version java plutôt que .Net car la librairie est jeune pour le moment…

    Démo : Après la création d’un réseau virtuel, création du cluster Storm, connexion au nœud principale, code java, exécution, vérification des logs.

    ZooKeeper est un service de coordination des processus distribués
    ---
    COUT : 12€ par jour (0,4767€ par heure), les couts des machines sont passés a la minutes
    Tuples : Core Unit of Data, Immutable Set of Key/Value Pair
    Spouts : Source of Streams, Wraps a streaming data source and emits Tuples
    Bolts : Core functions of a streaming computation, Receive tuples and do stuff, Optionally emit additional tuples
    Topology : Arrangement of Spouts and Bolts, Unit of deployment & management
  • Romain : Pour répondre a la problématique de stockage des données, nous allons utiliser une base de données NoSQL HBase. Des traitements avec Hive en mode batch seront exécutés sur ces données afin de les rendre intelligibles.
  • Romain : HBase elle est une base de données NoSQL Open Source orientée colonnes, elle est inspirée des publications de Google sur BigTable.
    HBase est dit “SPARCE”, les colonnes NULL ne sont pas stockées et n’occupent aucune place (// avec SQL Server l’option SPARCE sur les colonnes). Toutes les données sont stockées dans un tableau d’octets.
    HBase permet des opérations au niveau des lignes : ‘SCAN’, ‘GET’, ‘PUT’, ‘LIST’, …

    Dans un Système de gestion de base de données relationnelle, pour obtenir par exemple les ventes des utilisateurs il faudra joindre la table de faits a la dimension utilisateur. Dans HBase ces données seront dans une même table mais les colonnes seront reparties dans des familles.
    ->Dans HBase on dénomarlise les données

    HBase est lui parfait pour l'interrogation en temps réel, Facebook l’utilise notamment pour la messagerie ou le compter des Likes.

    Demo :
    - bin\hbase shell
    - List
    - describe “SenseData”
    - scan “”SensorData””, {‘LIMIT’ => 10}

    ---
    COUT : 12€ par jour (0,4767€ par heure) + 6€ A2 de Zookeeper (0,358 € par heure)

    Started in 2006
    Column Families
    In-memory caching
    High throughput streaming writes
    Billions of rows X millions of columns
    Many deployments with 1000+ nodes, PBs of data
  • Romain : Au même titre que Hive a été développé par les équipes de Facebook pour facilité les développement en vue de leurs connaissance SQL.
    Phoenix a été développé par les équipes de Salesforce.com pour pouvoir exécuter des requêtes SQL à faible latence sur HBase.
    Phoenix fournit un pilote JDBC et utilise les API HBase natives au lieu du modèle de programmation Map Reduce.
    Il est possible utiliser des clients JDBC comme SQuirreL ou l’utilitaire Java pour interroger les données en SQL.
    Lorsqu’une requête est transmise à Phoenix, le moteur transforme la requête en un ou plusieurs scans HBase.
    Le moteur de requête exécute les scans en parallèle pour produire un ensemble de résultats sous forme de tableau.

    Demo :
    CREATE VIEW "SensorData" ("timestamp" VARCHAR primary key, "deviceid" VARCHAR, "datas" VARCHAR) default_column_family='cf';
    SELECT "timestamp", "deviceid", "datas" FROM "SensorData"
    SELECT * FROM "SensorData" where "deviceid"= '180bbc2-1
  • Romain : Pour revenir au mode batch du Big Data, j’ai réalisé des scripts Hive
    Hive permet de maintenir et de gérer des données structurées dans Hadoop en fournissent un langage proche du SQL : HiveQL.
    Il travail en mode batch et les requêtes HiveQL sont traduites en commande Map Reduce.

    Hive est plutôt utilisé pour effectuer des analyse de données recueillies sur une période de temps, par exemple, pour calculer les tendances a partir de log.
    Hive qui travail en mode batch n’est pas fait pour l'interrogation en temps réel car il pourrait prendre un certain temps avant que les résultats soient retournés.

    L'indice Humidex est une mesure utilisée par les météorologues pour analyser les effets combinés de la chaleur et de l'humidité.

    Automatisation via SSIS, Azure Automation, …

    Demo :
    - Dans portail Web :
    CREATE EXTERNAL TABLE SensorData(timestamp STRING, deviceid STRING, datas STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ('hbase.columns.mapping' = ':key,cf:deviceid,cf:datas') TBLPROPERTIES ('hbase.table.name' = 'SensorData');
    Dans Remote Desktop : hive –i ../Hive.hql

    ---
    Hive is an SQL-like engine that runs MapReduce jobs, and HBase is a NoSQL key/value database on Hadoop. 

    Hive ne permet pas d’effectuer des requetes a faible latence contrairement à Hbase
    Cependant Hive ne fournit pas des opérations au niveau des lignes telles que Insert, Update ou encore Delete

    Hive should be used for analytical querying of data collected over a period of time - for instance, to calculate trends or website logs. Hive should not be used for real-time querying since it could take a while before any results are returned.
    HBase is perfect for real-time querying of Big Data. Facebook use it for messaging and real-time analytics. They may even be using it to count Facebook likes.

    Version 0.13.1
  • Anthony :
    Pour visualiser les données, nous avons créer un site web avec ASP.NET MVC et AngularJS que l'on a hébergé sur un AzureWebsite .
    Pour la récupération des données, nous avons utilisé SignalR de Microsoft qui va nous permettre de se connecter directement au Flux SignalR dans lequel Storm envoi les données traîtées.
    Pour afficher ces données sous forme de graphique, nous avons utilisé deux librairies, D3JS et Google Charts
    Cette solution nécessite quelques connaissance en développement Web mais Microsoft vient de sortir en Preview PowerBI qui va nouspermettre de réaliser simplement un Dashboard et dont Romain va vous parler plus en détails.
  • Romain : Power BI Démo [A COMPLETER]
    Anthony :
    Il est donc possible d'importer une source de données mais également d'envoyer des données en live dans PowerBI.
    Grave à l'API Rest il est possible de récupérer les datasets et d'insérer de nouvelles données dedans.
  • Romain : [A Compléter]
  • Anthony : Dans l’implementation de SignalR dans Storm, lorsque SignalR ne reçoit plus de données pendant un certain temps celui-ci se coupe.

    Cout : 12€ + 18€ + 1€ -> 31€ par jours ! Stream Analytics : cout moindre, pas de lambda pour le moment, moins libre dans les dev

    Ou sinon acheter les 2OO appart pour rentabiliser le cout!

    ---

    Power BI free 1 GB/user, Pro 10 GB/user limit
    http://powerbi.com/dashboards/pricing


  • - Tarification du service ?
  • Stream Analytics est un service en ligne permettant le traitement d’évènement complexe en temps réel.
    Le service est actuellement en Preview depuis le 29 Octobre dernier durant le TechEd Europe 2014.

    Généralement, pour créer d’une solution de streaming en temps réel, il faut :
    Créer et configurer l’infrastructure (scalables et résistantes aux pannes)
    Développer les composants d’entrée, de traitement et de sortie
    Implémenter une solution de Monitoring et de Troubleshooting

    Stream Analytics permet de gagner du temps en apportant une couche d’abstraction proche du langage SQL.

    Les évènements peuvent être archivé pour une utilisation futur (traitement dans HDInsight)

    Parce que la notion de temps est fondamentale pour les systèmes de traitement d’événements complexes, Stream Analytics possède des fonction permettant d’agréger au file de l’eau les données. (Tumbling, intervalle de temps fixe)

    ---
    Prix : Provision and run Streaming solution for as less as 23$/month for 1Mb/s troughput + $0.001 Gb troughput
  • Techdays2015 big data-realtime

    1. 1. tech.days 2015#mstechdaysSESSION #mstechdays techdays.microsoft.fr
    2. 2. tech.days 2015#mstechdaysSESSION
    3. 3. tech.days 2015#mstechdaysSESSION
    4. 4. tech.days 2015#mstechdaysSESSION
    5. 5. tech.days 2015#mstechdaysSESSION
    6. 6. tech.days 2015#mstechdaysSESSION
    7. 7. tech.days 2015#mstechdaysSESSION Big Data en mode batch Temps | Données traitées par batch | Données non visibles |
    8. 8. tech.days 2015#mstechdaysSESSION
    9. 9. HBase Hive
    10. 10. tech.days 2015#mstechdaysSESSION
    11. 11. tech.days 2015#mstechdaysSESSION
    12. 12. tech.days 2015#mstechdaysSESSION
    13. 13. HBase Hive
    14. 14. tech.days 2015#mstechdaysSESSION
    15. 15. tech.days 2015#mstechdaysSESSION
    16. 16. https://github.com/DCubeLabs DCube
    17. 17. tech.days 2015#mstechdaysSESSION
    18. 18. tech.days 2015#mstechdaysSESSION tech.days 2015#mstechdays Activez vos bénéfices Azure jusqu’à 115€ de ressources mensuelles offertes 115€ /mois x5 membres x3 ans = 4 175€ de ressources offertes http://azure.com http://aka.ms/azurepourmsdn 150€ de ressources offertes Sans engagement Pour tous Un mois d’essai offert http://www.microsoft.com/bizspark/ Les Ressources Azure Pour les startups Bizspark = 49 000€ de ressources offertes pendant un an Pour les abonnés MSDN
    19. 19. tech.days 2015#mstechdaysSESSION tech.days 2015#mstechdays L’accompagne Inscrivez-vous : http://aka.ms/pepiniereazure Coaching technique et business Ressources La Pépinière Microsoft Azure Visibilité Une équipe à Microsoft pour vous accompagner dans votre projet cloud et mettre à votre disposition de l’aide personnalisée.
    20. 20. tech.days 2015#mstechdaysSESSION
    21. 21. #MSTechDays Data Source Collect Process ConsumeDeliver Event Inputs - Event Hub - Azure Blob Transform - Temporal joins - Filter - Aggregates - Projections - Windows - Etc. Enrich Correlate Outputs - SQL Azure - Azure Blobs - Event Hub • Temporal Semantics • Guaranteed delivery • Guaranteed up time Azure Stream Analytics Reference Data - Azure Blob http://dashboardtwitter.azurewebsites.net
    22. 22. tech.days 2015#mstechdaysSESSION Storm Stream Analytics Simplicité de mise en œuvre + +++ Type de requêtes possibles +++ + Coût ++ + Réversibilité +++ + Lambda architecture +++ + Scalabilité ++ +++ Storm vs Stream Analytics

    ×