Datastax Cassandra + Spark Streaming

2 024 vues

Publié le

Architecture événementielle et Analytique temps réel avec Apache Cassandra et Spark Streaming

Publié dans : Logiciels
  • Soyez le premier à commenter

Datastax Cassandra + Spark Streaming

  1. 1. Cassandra et Spark Streaming Architecture événementielle et Analytique temps réel Victor Coustenoble Petit Déjeuner OCTO Technology Ingénieur Solutions 14/04/15 victor.coustenoble@datastax.com @vizanalytics
  2. 2. Agenda Confidential 2 • Cassandra / DataStax • Spark / Spark Streaming • Architecture / Cas métiers • Démonstrations
  3. 3. 3 DataStax délivre une plateforme de la base de données Apache Cassandra, conçue spécifiquement pour les besoins en Performance et Disponibilité exigés par les applications d’Internet des Objets, Web ou Mobiles, en offrant aux entreprises une base de données Sécurisée toujours disponible, qui reste Simple à administrer même pour des déploiements à grande échelle, dans un seul ou de Multiples Data Centers et dans le Cloud.
  4. 4. Cas d’usage fréquents Messagerie Collections/ Playlists Détection de Fraude Recommandation/ Personnalisation Objets connectés/ Données de Capteurs
  5. 5. DataStax Fondé en avril 2010 ~35 500+ Santa Clara, Austin, New York, London, Paris, Sydney 400+ Employés Pourcent Clients 5
  6. 6. Straightening the road RELATIONAL DATABASES CQL SQL OpsCenter / DevCenter Management tools DSE for search & analytics Integration Security Security Support, consulting & training 30 years ecosystem
  7. 7. • Sans Maître-Esclave (peer-to-peer), sans Point Unique de Défaillance (No SPOF) • Distribuée avec la possibilité de Data Center • 100% Disponible (replication) • Massivement scalable • Montée en charge linéaire • Haute Performance (lecture ET écriture) • Multi Data Center • Séries Temporelles • Multi Modèle • Simple à Exploiter • Language CQL (comme SQL) • Outils OpsCenter / DevCenter Apache Cassandra™ 7
  8. 8. Confidential 8 DataStax Enterprise Confiance d’utilisatio n Fonctionnalités d’entreprise
  9. 9. DataStax Enterprise DataStax supporte la communauté open source et les entreprises 9 Open Source/Communauté Enterprise Software • DataStax emploie le président du projet Apache et développe 80+% du code de Apache Cassandra • DataStax Community Edition • DataStax Simple OpsCenter • DataStax DevCenter • DataStax Drivers/Connecteurs • Documentation en ligne • Formation en ligne • Mailing lists et forums • DataStax Enterprise Edition • Cassandra Certifié • In-Memory • Analytique intégré (Hadoop, Spark) • Recherche intégrée (Solr) • Securité d’entreprise • DataStax OpsCenter Avancé • Services d’Administration Automatique • Support Expert • Aide et Consulting • Formation Professionnelle
  10. 10. Confidential 10 Pourquoi Spark + Cassandra ?
  11. 11. Analytique Opérationnelle / Temps Réel ©2014 DataStax Confidential. Do not distribute without consent. 11 Enrichissement des Données Contraintes d’intégrité Détection de dépassement de seuil Batch Processing Machine Learning Agrégats pré-calculés Création de KPI Données Traitement Flux
  12. 12. Cassandra a besoin d’un framework de traitement distribué Pour des requêtes indépendates du modèle de données Pour des opérations cross-table (JOIN, UNION) Pour des analyses complexes (machine learning) Pour des transformation, des aggrégations Pour des traitements de flux …
  13. 13. • Spark = Traitement Distribué • “In-memory Map/Reduce”, multi-thread, caching • Intégration poussée de Spark avec Cassandra • Partenariat DataStax / Databricks • x10 – x100 plus rapide que Hadoop MapReduce ©2014 DataStax Confidential. Do not distribute without consent. 13 Replication Cassandra Application Opérationnelle Noeuds Spark Le SDK du « Big Data »
  14. 14. Cas d’utilisation de Spark pour Cassandra 14 Load data from various sources Analytics (join, aggregate, transform, …) Sanitize, validate, normalize data Schema migration, Data conversion
  15. 15. ©2013 DataStax Confidential. Do not distribute without consent. 15 • Fast, distributed, scalable and fault tolerant cluster compute system • Enables Low-latency with complex analytics • Developed in 2009 at UC Berkeley AMPLab, open sourced in 2010, and became a top-level Apache project in February, 2014
  16. 16. Spark – Représentation Conceptuelle ©2013 DataStax Confidential. Do not distribute without consent. 16 RDD RDD RDD RDD Transformations Action Value counts = lines.flatMap(lambda s: s.split(“ ”)) .map(lambda word: (word, 1)) .reduceByKey(lambda x, y: x + y) counts.saveAsTextFile(sys.argv[2]) lines = sc.textFile(sys.argv[1]) 1 2 3 Resilient Distributed Datasets (RDDs) – Spark’s datasets Fault tolerant collection of elements that enable parallel processing Transformation and Actions are executed against RDDs Can persist in Memory, on Disk, or both Can be partitioned to control parallel processing Can be reused
  17. 17. Composants Spark + Cassandra Shark or Spark SQL Structured Spark Streaming Real-time MLlib Machine learning Spark (General execution engine) GraphX Graph Cassandra
  18. 18. Connecteur Cassandra Spark C* C* C*C* Spark Executor C* Java Driver Spark-Cassandra Connector User Application Cassandra
  19. 19. Connecteur Cassandra Spark •Tables Cassandra tables exposées en temps que RDDs Spark •Chargement des données depuis Cassandra vers Spark •Ecriture des données depuis Spark vers Cassandra •Object mapper : Mapping des tables Cassandra en objets Scala/Java •Conversions des types Cassandra en type Scala/Java •Sélection et filtres des données au niveau de Cassandra •API Scala, Java et Pyhton
  20. 20. Lecture des données val table_rdd = sc .cassandraTable[CassandraRow]("db", "tweets") .select("user_name", "message") .where("user_name = ?", "ewa") row representation keyspace table server side column and row selection
  21. 21. Ecriture des données CREATE TABLE test.words(word TEXT PRIMARY KEY, count INT); val collection_rdd = sc.parallelize(Seq(("foo", 2), ("bar", 5))) collection_rdd.saveToCassandra("test", "words", SomeColumns("word", "count")) cqlsh:test> select * from words; word | count ------+------- bar | 5 foo | 2 (2 rows)
  22. 22. “Je veux des résultats en continue depuis un flux de données” “Je veux une garantie que mes messages soient traités une seule fois” DStream (Discretized Stream) Flux continu de micro batchs pour: • Traitements complexes avec un minimal d’effort • Calculs sur des flux dans un petit interval de temps Une transformation sur DStream = transformations sur ses RDDs Quand le batch n’est plus suffisant
  23. 23. Spark Streaming Input Données en entrée depuis: • une socket TCP • des messages depuis Kafka • des logs depuis Flume • des fichiers depuis HDFS (monitorer la création de nouveaux fichiers) • une file MQ (type ZeroMQ) • des tweets depuis Twitter (API Twitter4J) • …
  24. 24. Utilisation de Spark Streaming L’API de Spark Streaming est identique à l’API classique de Spark => Des portions de code batch et de flux peuvent être partagés  import com.datastax.spark.connector.streaming._ // Spark connection options val conf = new SparkConf(true)... // streaming with 1 second batch window val ssc = new StreamingContext(conf, Seconds(1)) // stream input val lines = ssc.socketTextStream(serverIP, serverPort) // count words val wordCounts = lines.flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) // stream output wordCounts.saveToCassandra("test", "words") // start processing ssc.start() ssc.awaitTermination()
  25. 25. Et dans une architecture ?
  26. 26. Cassandra + Spark = Recommandation + Analytique ©2014 DataStax Confidential. Do not distribute without consent. 26 Enrichissement des Données Batch Processing Machine Learning Agrégats pré-calculésDonnées Pas d’ETL
  27. 27. “Pour du calcul de prévisions, j’ai besoin d’un accès rapide à mes données historiques couplé à des données en temps réel provenant d’un flux”
  28. 28. Architecture Lambda Une architecture de traitement de données conçue pour gérer des énormes quantités de données en tirant avantage à la fois des méthodes de traitement batch et des traitements de flux.
  29. 29. Architecture Lambda
  30. 30. Confidential 30 Applications Capteurs Web Mobiles Détection d’intrusion Détection de panne Analyse de navigation Analyse de métriques réseaux Détection de fraude Optimisation dynamique de processus Recommandatio ns Publicité géolocalisée Traitement de Log Planning de logistique Analyse de sentiment Analyse et traitement temps réel
  31. 31. Démonstrations Spark Streaming + Cassandra Twitter • Dans des intervals de 5 secondes, comptage et stockage du nombre de Tweets contenant les mots "love", "hate", "cat" ou "lol" • https://github.com/doanduyhai/Cassandra-Spark-Demo Meetup RSVP • Nombre total de participants par pays (depuis le démarrage de l’application). Rafraichissement toutes les 5 secondes, traitement simple d’un flux. • Les sujets des Meetups les plus populaires dans les 5 dernières minutes. Rafraichissement toutes les 10 secondes, traitement dans une plage de temps. • https://github.com/rstml/datastax-spark-streaming-demo © 2014 DataStax, All Rights Reserved. Company Confidential 31
  32. 32. Merci, Questions ? We power the big data apps that transform business. ©2013 DataStax Confidential. Do not distribute without consent. victor.coustenoble@datastax.com @vizanalytics

×