NoSQL et Big Data

1 362 vues

Publié le

Une présentation de NoSQL et Big Data pour le groupe de travail ADIRA (Lyon, France).

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

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

Aucune remarque pour cette diapositive

NoSQL et Big Data

  1. 1. NoSQL et Big Data Arnaud Cogoluègnes - Zenika ADIRA - 8 octobre 2014 This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
  2. 2. NoSQL Hadoop MapReduce HDFS Théorème CAP Eventual consistency Hive Pig Architecture lambda Cascading MongoDB Cassandra Big Data
  3. 3. Agenda Que faire du NoSQL Hadoop et moi NoSQL et Hadoop en action
  4. 4. NoSQL
  5. 5. Retour vers le futur : les SGDBR
  6. 6. Les garanties ACID
  7. 7. Standard, portable SQL-86 ... SQL:2011 select * from Book
  8. 8. Un point d’intégration Image : http://www.eaipatterns.com/SharedDataBaseIntegration.html
  9. 9. ORM : les premières tensions
  10. 10. Une fausse bonne idée ? ?
  11. 11. Service : les tensions continuent Services Application A Application B Application C
  12. 12. Le web : comment “scaler” ?
  13. 13. SGBDR : généraliste
  14. 14. NoSQL Moins de fonctionnalités Plus spécialisés Garanties relachées Principes des “pipes” Unix
  15. 15. NoSQL viable, les aggrégats CommandeClient Ligne Produit 1 * 1 * * 1 "commandes" : [ { "id" : 32, "clientId" : 2, "lignes" : [ { "articleId" : 79, "prix" : 29, "nom" : "Spring in Action" } ] } ]
  16. 16. Les aggrégats + Unité atomique Données co-localisées - Usage unique Vues à créer par usage
  17. 17. Partition (Sharding) Alan Bob ... Zoe Alan Bob Zoe << A >> << B >> << Z >> … Pas de sharding Sharding
  18. 18. Réplication Alan … Alan Alan
  19. 19. Partition et réplication Alan Bob Zoe … Zoe Alan Bob Bob Zoe Alan
  20. 20. Relacher la durabilité commit() fsync() store() fsync()
  21. 21. Stockage mémoire et réplication Alan … Alan Alan
  22. 22. Théorème CAP Alan Alan Partition réseau Choisir disponibilité ou cohérence Disponibilité = update autorisé Cohérence = update interdit
  23. 23. Bases de données NoSQL Clustering Open source Scalabilité Pas de schéma
  24. 24. Clé/valeur Pas bien pour… Requêtes sur les données Transactions sur plusieurs objets Relations complexes Bien pour… Session Profil Cache Implémentations Redis Riak Hazelcast "user1" => "login : alan ; gender : M" "user2" => "login : zoe ; gender : F"
  25. 25. Orientées colonnes Pas bien pour… Requêtes Agrégations Bien pour… Mesures Logs Expiration Implémentations Cassandra HBase stationID : 1234 => date : 20140914 value : 12 date : 20140915 value : 22 value : 18date : 20140916 stationID : 6789 => date : 20140914 value : 25 date : 20140915 value : 28 value : 27date : 20140916
  26. 26. Orientées documents Pas bien pour… Transactions sur plusieurs collections Requêtes avec jointures Bien pour… Logs CMS E-commerce Implémentations MongoDB CouchBase "commandes" : [ { "id" : 32, "clientId" : 2, "lignes" : [ { "articleId" : 79, "prix" : 29, "nom" : "Spring in Action" } ] } ]
  27. 27. Orientées graphes Pas bien pour… Grosse volumétrie Mises à jour massives Bien pour… Données “connectées” Routage, données localisées Recommandations Implémentations Neo4j Arnaud Spring Batch in Action Zenika Alan auteur employé lecteur
  28. 28. Moteur d’indexation Pas bien pour… Transactions Bien pour… Indexation Recherche plain/text Implémentations ElasticSearch Solr
  29. 29. Hadoop
  30. 30. Hadoop, un système distribué ● Système de fichiers distribué : HDFS ● API de programmation : MapReduce, YARN
  31. 31. Hadoop HDFS MapReduce, YARN Votre application
  32. 32. HDFS HDFS MapReduce, YARN Votre application Tolérant aux pannes Scalable Formats de fichiers Compression
  33. 33. Blocs, datanodes, namenode file.csv B1 B2 B3 fichier composé de 3 blocs (taille par défaut d’un bloc : 128 Mo) B1 B2 B1 B3 B1 B2 B2 B3 DN 1 DN 2 DN 4DN 3 les datanodes stockent les blocs (le bloc 3 est ici sous-répliqué) B1 : 1, 2, 3 B2 : 1, 3, 4 B3 : 2, 4 Namenode le namenode gère les méta-données et s’assure de la réplication
  34. 34. HDFS, les limitations Fichiers “append-only” Bien pour “write once, read many times” Peu de gros fichiers, bien Plein de petits fichiers, pas bien
  35. 35. MapReduce HDFS MapReduce Votre application Simple Batch Scalable Jointure, distinct, group by
  36. 36. MapReduce file.csv B1 B2 B3 Mapper Mapper Mapper B1 B2 B3 Reducer Reducer k1,v1 k1,v2 k1 [v1,v2]
  37. 37. Le code va à la donnée file.csv B1 B2 B3 Mapper Mapper Mapper B1 B2 B3 Reducer Reducer k1,v1 k1,v2 k1 [v1,v2] B1 B2 B1 B3 B1 B2 B2 B3 DN 1 DN 2 DN 4DN 3 DN 1 DN 3 DN 4
  38. 38. Hadoop 1 HDFS MapReduce
  39. 39. Hadoop 2 HDFS YARN MapReduce Votre application
  40. 40. MapReduce, les limitations Code bas niveau Ré-utilisation difficile Préférer les abstractions comme Cascading
  41. 41. Comment stocker ? Formats de fichiers Compression Parquet SequenceFile Texte Avro Pas de compression Snappy Deflate GZIP
  42. 42. La panoplie MapReduce Cascading API Java Hive SQL Pig Script ETL Votre application
  43. 43. Spark Spark Votre application
  44. 44. Tez Apache Tez MapReduce nouvelle génération Cascading API Java Hive SQL Pig Script ETL Votre application
  45. 45. NoSQL et Hadoop en action
  46. 46. Architecture lambda : objectifs ● Tolérant aux pannes ● Latence faible ● Scalable ● Générique ● Extensible ● Requêtes “ad hoc” ● Maintenance minimale ● Debuggable
  47. 47. Layers Speed layer Serving layer Batch layer
  48. 48. Batch layer Speed layer Serving layer Batch layer Stockage des données. Création des vues.
  49. 49. Serving layer Speed layer Serving layer Batch layer Accès aux vues batch.
  50. 50. Speed layer Speed layer Serving layer Batch layer Accès temps réel.
  51. 51. Batch layer Speed layer Serving layer Batch layer Hadoop (MapReduce, HDFS). Thrift, Cascalog.
  52. 52. Serving layer Speed layer Serving layer Batch layer ElephantDB, BerkeleyDB.
  53. 53. Speed layer Speed layer Serving layer Batch layer Cassandra, Storm, Kafka.
  54. 54. Jointure flux et référentiel Hadoop Traitement (jointures, transformation) Flux Reporting Données de référence
  55. 55. Gestion de données Données brutes Données parsées Traitement et insertion Archives Vues Transformations Avro, GZIP Rétention permanente Parquet, Snappy Rétention 2 ans glissants Traitement (Cascading) HDFS BD temps réel
  56. 56. Cinématique avec Spring Batch Archivage Traitement Traitement Traitement Nettoyage Java, API HDFS Cascading MapReduce
  57. 57. Hive, Pig, Cascading UDF : User Defined Function Hive + SQL (non-standard) Prise en main rapide Extensible avec UDF - Testabilité médiocre Réutilisabilité médiocre Pas de contrle du flot Logique disséminée Programmation par UDF Pig + Pig Latin Prise en main rapide Extensible avec UDF - Testabilité médiocre Réutilisabilité médiocre Logique disséminée Programmation par UDF Cascading + API Java Testable unitairement Contrôle du flot Bonne réutilisabilité - Programmation nécessaire
  58. 58. Comment commencer ● Identifier les cas d’utilisation ● Caractériser les données ○ volume, fraîcheur nécessaire, append-only ● En déduire les produits adaptés ● Virtualiser ou pas ● Penser au déploiement et à la maintenance ● Penser au cloud pour le prototypage
  59. 59. Conclusion NoSQL : de nouveaux outils ciblés Big Data : de nouvelles possibilités Des architectures, des patterns émergents

×