Cassandra et Spark pour gérer la musique On-line 16 Juin 2015 @ Paris Hammed RAMDANI Architecte SI 3.0 et BigData mramdani@palo-it.com +33 6 80 22 20 70
Appelez-moi Hammed ;-) (Sidi Mo)Hammed Ramdani @smramdani mramdani@palo-it.com Consultant chez Architecte SI 3.0 et BigData Trained Pig & Hive developer Coach Agile Innovation Games trained facilitator Speaker 2
Dream BIG and make IT happen! PALO IT est un cabinet de conseil en stratégie d innovation et réalisation numérique. Notre approche : Insuffler un esprit de Start-up; Identifier les technologies et les usages créateurs de nouveaux business models; Accélérer votre Go-To-Market par l adoption d une organisation Lean & Agile. Créée en 2009, PALO IT regroupe une communauté de 160 talents de plus de 20 nationalités, passionnés par l Agilité et l Open Source. PALO IT est une société apprenante et audacieuse qui se distingue par sa forte culture Projet. L esprit entrepreneurial, le fun, le partage de connaissances, le sens client et la simplicité constituent ses valeurs centrales. 3
PALO IT en quelques chiffres 160 collaborateurs 40 grands comptes +50% croissance organique/an 5 bureaux 4
Cassandra et Spark pour que vive la musique On-line! Un projet en cours
Nos clients 6
Notre vrai client DSP «Digital Service Providers» Créateurs et ayants droits Redistribution Client Collecte des droits musicaux 7
Données du On-line traitées > 3000 déclarations 8
Données du On-line traitées > 3000 déclarations > 1milliard de titres 9
Données du On-line traitées > 3000 déclarations > 150 milliard de streamings > 4milliard de titres > 1milliard de titres 10
Pas seulement le On-line! Créateurs et ayants droits Redistribution Média et supports traditionnels Client DSP «Digital Service Providers» Collecte des droits musicaux 11
Règles des 95 / 5 Non On-line < 5% des volumes Créateurs et ayants droits > 95% des droits Redistribution Client On-line > 95% des volumes < 5% des droits Collecte des droits musicaux 12
Marché en évolution Non On-line < 5% des volumes Créateurs et ayants droits > 95% des droits Redistribution Client On-line > 95% des volumes < 5% des droits Collecte des droits musicaux 13
Evolution du marché français 14
Téléchargement vs Streaming 15
System d information actuel Créateurs et ayants droits SI du Client Non On-line Analyse et filtrage Ident auto Ident manu Calcul des barèmes tarifaires Facturation et suivi des payements Redistrib des droits On-line Doc. des ouvres Calcul des droits 16
System d information actuel Créateurs et ayants droits SI du Client Non On-line Analyse et filtrage Ident auto Ident manu Calcul des barèmes tarifaires Facturation et suivi des payements Redistrib des droits On-line Doc. des ouvres Calcul des droits 17
System d information actuel Créateurs et ayants droits SI du Client Non On-line Analyse et filtrage Ident auto Ident manu Calcul des barèmes tarifaires Facturation et suivi des payements Redistrib des droits On-line Doc. des ouvres Calcul des droits 18
System d information actuel Créateurs et ayants droits Redistribution SI du Client Non On-line Analyse et filtrage Ident auto Ident manu Calcul des barèmes tarifaires Facturation et suivi des payements Redistrib des droits On-line Doc. des ouvres Calcul des droits IHM IHM IHM IHM IHM 19
Volumes et temps exponentiels 20
Un bel avenir! 21
Solution Créateurs et ayants droits SI du Client Non On-line Analyse et filtrage Ident auto Ident manu Doc. des ouvres Calcul des barèmes tarifaires Calcul des droits Facturation et suivi des payements Redistrib des droits On-line Process Workflow en Streaming Gisement BigData Vision 360 Dashboards Search & analytics Process mgmt Nouv services 22
BigData, Streaming et Cloud Créateurs et ayants droits SI du Client Non On-line Analyse et filtrage Ident auto Ident manu Doc. des ouvres Calcul des barèmes tarifaires Calcul des droits Facturation et suivi des payements Redistrib des droits On-line S1 S2 S3 S4 SX SY SZ Gisement BigData Vision 360 Dashboards Search & analytics Process mgmt Nouv services 23
Architecture logique SI du Client BigData Platform Import & export data flow management Streaming & batch processing On-line Raw data Repository NoSQL DB Indexing & Search Web Back-end Security & rôles managements Read services Write services Web front-end IHM Web 24
Choix techniques SI du Client BigData Platform Import & export data flow management On-line Avro Sur HDFS Apache Cassandra Apache Spark Elasticsearch Web Back-end Security & rôles managements Read services Write services Web front-end IHM Web 25
Le choix Cassandra Scalabilité linéaire Haute dispos + Distribuée + Consistance «tunable» (CAP : 2,5/3 ;-) Gestion de gros volumes (> 10To) Faible latence en lecture et en écriture (~<10ms) BD NoSQL mature avec des utilisateurs de référence (ebay, Apple, etc.) Outillée pour les clusters de production (Rack + DC management, etc) Modèle de données riche + langage CQL Projet Open sources Apache Support et formation assurés par DataStax 26
Le choix Cassandra Limites à prendre en compte : Pas de select where (non clé) (opérateur <> =) (group by) (order by) Pas de count( ) Pas de jointures Pas de contraintes d intégrité Pas de transactions : sauf if (not) exists Pas de «Proc Stock» Indexes secondaires à utiliser avec «grande» modération 27
Un PoC sinon rien 6 mois de déclarations 2014 (85%) On-line BigData Platform Import & export data flow management Streaming & batch processing NoSQL DB Indexing & Search Web Back-end Read services Web front-end IHM Web 28
Infrastructure du PoC OVH Cloude Plateforme : 10 x Nodes 1CPU-8Cores 32GB RAM 2 x 3TB HD Frontend Applications & Monitoring NoSQL DB Web App + Monitoring Node 2 Cassandra Node 3 Cassandra Node 4 Hadoop Cluster Hadoop Spark Node 1 Hadoop Spark Node 2 Cassandra Node 5 Cassandra Node 6 Elasticsearch Cluster ES Node 1 ES Node 2 ES Node 7 ES Node 8 Cassandra Node 9 Cassandra Node 10 29
PoC Agile 30
Planning du PoC 2014 2015 Sprints November December January Sprint #1 Sprint #2 Sprint #3 Sprint #4 Sprint #5 Sprint #6 W44 W45 W46 W47 W48 W49 W50 W51 W52 W1 W2 W3 W4 W5 W6 W7 31
PoC Screenshots 32
PoC Jeux de données 6 mois de déclarations (DSR) : Q1 & Q2 / 2014 1 200 000 000 1 000 000 000 800 000 000 600 000 000 400 000 000 200 000 000 0 Q1 Q2 Total Spo4fy itunes Youtube Nombre de Resources par DSP 33
PoC Modèle de données NoSQL Data Model Cassandra Search & Analytics Elasticsearch DSP DSR By Status DSR DSR Release Release Resource By Status Resource Data Resource Sale Resource Sale 34
Datastax OpsCenter Nodes view 35
Datastax OpsCenter - Dashboard 36
PoC Mesures Benchmark du temps de chargement Cassandra 8,00 Loading forcast with a month* of DSR 7,00 6,00 13 nodes needed to load 1 month of DSR in 2 days 5,00 4,00 3,00 2,00 1,00 0,00 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 *1 month of DSR = 450 000 000 of resources 37
PoC Mesures Benchmark du temps de chargement Cassandra Avec disques SATA 2 x 3To en RAID0 Node inserts / sec 156 Cluster size (nodes) 3 4 5 6 7 8 9 10 Cluster resources / h 1 684 800 2 246 400 2 808 000 3 369 600 3 931 200 4 492 800 5 054 400 5 616 000 Cluster resources / day 40 435 200 53 913 600 67 392 000 80 870 400 94 348 800 107 827 200 121 305 600 134 784 000 Cassandra cluster size Resources / h Resources / day Total resources in 2014 ~ Resources by month in 2014 ~ Total month DSR loading Qme Total month DSR loading Qme 6 Nodes (servers) 3 369 600 res/h 80 870 400 res/day 3 000 Millions 250 Millions 3,09 Days 74,19 h 38
PoC concluant, mais Quelques enseignements : A haut débit, les inserts de grands enregistrements «dé-normalisés» sont à proscrire Les updates fréquents de grands enregistrements sont interdits! Limitations fortes sur les IO disques (sur les machines utilisées) Enlever le RAID1 ;-) Le tuning VM est crucial (MAX_HEAP_SIZE, HEAP_NEWSIZE, etc) * D autres Params peuvent aider (CONCURRENT_READS, CONCURRENT_WRITES, MEMTABLE_TOTAL_SPACE) * Pénalisation des serveurs Cassandra lors des compactions Les écritures en batch n améliorent pas la situation, au contraire 8-( Les écritures asynchrones, pas mieux! Sur un système aux limites, contrôler le débit en amont! Envisager les disques SSD (*) Merci Duy Hai et Datastax 39
Et la suite Test avec disques SSD très concluants Re-modélisation : Dé-normalisation à bon escient Garder les tables petites Séparation des données «statiques» des données «dynamiques» Gestion de tables par «Status» avec bucketing si nécessaire Encore plus d intégration entre Spark et Cassandra : Connecteur Cassandra Spark amélioré Fonctions de partitionnement pour co-localisation les traitements 40
Mesures SATA vs SSD Nouveaux benchmarks du temps de chargement Cassandra Avec disques SATA 2 x 3To en RAID0 Node inserts / sec 156 Cluster size (nodes) 3 4 5 6 7 8 9 10 Cluster resources / h 1 684 800 2 246 400 2 808 000 3 369 600 3 931 200 4 492 800 5 054 400 5 616 000 Cluster resources / day 40 435 200 53 913 600 67 392 000 80 870 400 94 348 800 107 827 200 121 305 600 134 784 000 Cassandra cluster size Resources / h Resources / day Total resources in 2014 ~ Resources by month in 2014 ~ Total month DSR loading Qme Total month DSR loading Qme 6 Nodes (servers) 3 369 600 res/h 80 870 400 res/day 3 000 Millions 250 Millions 3,09 Days 74,19 h Avec disques SSD 4 x 800Go (1 SSD pour les CommitLogs + 3 SSD pour les SSTables) Node inserts / sec 7 407 47 x SATA Cluster size (nodes) 3 4 5 6 7 8 9 10 Cluster resources / h 80 000 000 106 666 667 133 333 333 160 000 000 186 666 667 213 333 333 240 000 000 266 666 667 Cluster resources / day 1 920 000 000 2 560 000 000 3 200 000 000 3 840 000 000 4 480 000 000 5 120 000 000 5 760 000 000 6 400 000 000 Cassandra cluster size 6 Nodes (servers) Resources / h 160 000 000 res/h Resources / day 3 840 000 000 res/day Total resources in 2014 ~ 3 000 Millions Resources by month in 2014 ~ 250 Millions Total month DSR loading Qme 0,07 Days Total month DSR loading Qme 1,56 h Total month DSR loading Qme 93,75 min Amélioration x ~50 300000000 200000000 100000000 0 3 4 5 6 7 8 9 10 SATA disks (Res/h) SSD disks (Res/h) 41
Modèle de données cible 42
Merci pour votre attention! 43