Les Cassandra Days sont des journées de conférence conçues pour rassembler les utilisateurs d’Apache Cassandra, aussi bien novices que confirmés, dans une ambiance d’entraide et d’échange : initiations au logiciel, cas d’usage avancés, tutoriaux, conférences, networking.
Lors de cet évènement, Hammed Ramdani, Architecte SI chez PALO IT, présentera un retour d’expérience sur Cassandra « Spark au service de la musique en ligne ».
Lors de cette session vous sera présenté le business case et son contexte d’entreprise, avant d’entrer plus en détail dans la démarche suivie en phase de PoC, puis construction de la plateforme cible, en termes de :
- Infrastructure en mode Cloud;
- Stack logicielle;
- Architecture applicative;
- Flux de données;
- Dimensions, mesures et performances.
Et pour finir : quelques conseils et leçons apprises du projet.
1. 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
2. 2
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
3. 3
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.
4. 4
PALO IT en quelques chiffres
160
collaborateurs
40
grands comptes
+50%
croissance organique/an
5
bureaux
10. 10
Données du On-line traitées
> 3000
déclarations
> 1milliard
de titres
> 4milliard
de titres
> 150 milliard de
streamings
11. 11
Pas seulement le On-line !
…
Client
Collecte des
droits musicaux
Redistribution
DSP
« Digital Service Providers »
Créateurs et
ayants droits
Média et supports
traditionnels
12. 12
Règles des 95 / 5
Client
Collecte des
droits musicaux
Redistribution
On-line
Créateurs et
ayants droits
Non On-line
< 5% des droits
> 95% des droits
< 5% des volumes
> 95% des
volumes
13. 13
Marché en évolution
Client
Collecte des
droits musicaux
Redistribution
On-line
Créateurs et
ayants droits
Non On-line
< 5% des droits
> 95% des droits
< 5% des volumes
> 95% des
volumes
16. 16
System d’information actuel
Non On-line
Créateurs et
ayants droits
On-line
SI du Client
Analyse
et filtrage
Ident auto Calcul des
barèmes
tarifaires
Ident manu
Doc. des
ouvres
Calcul des
droits
Facturation
et suivi des
payements
Redistrib
des droits
17. 17
System d’information actuel
Créateurs et
ayants droits
SI du Client
Analyse
et filtrage
Ident auto Calcul des
barèmes
tarifaires
Ident manu
Doc. des
ouvres
Calcul des
droits
Facturation
et suivi des
payements
Redistrib
des droits
Non On-line
On-line
18. 18
System d’information actuel
Créateurs et
ayants droits
SI du Client
Analyse
et filtrage
Ident auto Calcul des
barèmes
tarifaires
Ident manu
Doc. des
ouvres
Calcul des
droits
Facturation
et suivi des
payements
Redistrib
des droits
Non On-line
On-line
19. 19
System d’information actuel
Redistribution
Créateurs et
ayants droits
SI du Client
Analyse
et filtrage
Ident auto Calcul des
barèmes
tarifaires
Ident manu
Doc. des
ouvres
Calcul des
droits
Facturation
et suivi des
payements
Redistrib
des droits
IHM IHM IHM IHM IHM
Non On-line
On-line
22. 22
Solution
Créateurs et
ayants droits
SI du Client
Analyse
et filtrage
Ident auto Calcul des
barèmes
tarifaires
Ident manu
Doc. des
ouvres
Calcul des
droits
Facturation
et suivi des
payements
Redistrib
des droits
Non On-line
On-line
Vision 360° Dashboards
Search &
analytics
Process
mgmt
Nouv
services
Gisement BigData
Process Workflow en Streaming
23. 23
BigData, Streaming et Cloud
Créateurs et
ayants droits
SI du Client
Analyse
et filtrage
Ident auto Calcul des
barèmes
tarifaires
Ident manu
Doc. des
ouvres
Calcul des
droits
Facturation
et suivi des
payements
Redistrib
des droits
Non On-line
On-line
Vision 360° Dashboards
Search &
analytics
Process
mgmt
Nouv
services
Gisement BigData
S1 S2 S3 S4 SX SY SZ
24. 24
Web
Back-end
Architecture logique
SI du Client
On-line
BigData
Platform
Web
front-end
IHM Web
Import & export data flow management
Read services Write services
Security
& rôles
managements
Streaming & batch processing
Indexing & Search
Raw data
Repository
NoSQL DB
25. 25
Web
Back-end
Choix techniques
SI du Client
On-line
BigData
Platform
Web
front-end
IHM Web
Import & export data flow management
Read services Write services
Security
& rôles
managements
Apache Spark
Elasticsearch
Avro
Sur HDFS
Apache Cassandra
26. 26
• 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
Le choix Cassandra
27. 27
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
Le choix Cassandra
28. 28
Un PoC sinon rien
Web
Back-end
On-line
BigData
Platform
Web
front-end
IHM Web
Import & export data flow management
Read services
Streaming & batch processing
Indexing & SearchNoSQL DB
6 mois
de déclarations
2014
(85%)
29. 29
Infrastructure du PoC
Hadoop Cluster
Cassandra
Node 3
Cassandra
Node 5
Cassandra
Node 4
Cassandra
Node 6
Hadoop Spark
Node 1
ES
Node 1
ES
Node 2
Web App
+ Monitoring
Node 2
Frontend Applications & Monitoring
ES
Node 8
Elasticsearch Cluster
Cassandra
Node 9
Cassandra
Node 10
ES
Node 7
Hadoop
Spark
Node 2
1CPU-8Cores
32GB RAM
2 x 3TB HD
OVH Cloude Plateforme : 10 x Nodes
NoSQL DB
33. 33
PoC – Jeux de données
• 6 mois de déclarations (DSR) : Q1 & Q2 / 2014
0
200,000,000
400,000,000
600,000,000
800,000,000
1,000,000,000
1,200,000,000
Q1 Q2 Total
Spotify
iTunes
Youtube
Nombre de Resources
par DSP
34. 34
PoC – Modèle de données
NoSQL Data Model
Cassandra
DSP
DSR
Release
Resource
DSR
Release
Sale
Resource
Search & Analytics
Elasticsearch
Sale
DSR By
Status
Resource
By Status
Resource
Data
37. 37
PoC – Mesures
• Benchmark du temps de chargement Cassandra
0.00
1.00
2.00
3.00
4.00
5.00
6.00
7.00
8.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
Loading forcast with a month* of DSR
13 nodes needed to load 1
month of DSR in 2 days
*1 month of DSR = 450 000 000 of resources
38. 38
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 6 Nodes (servers)
Resources / h 3 369 600 res/h
Resources / day 80 870 400 res/day
Total resources in 2014 ~ 3 000 Millions
Resources by month in 2014 ~ 250 Millions
Total month DSR loading time 3,09 Days
Total month DSR loading time 74,19 h
39. 39
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
40. 40
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
41. 41
Mesures SATA vs SSD
• Nouveaux benchmarks du temps de chargement Cassandra
Amélioration x ~50
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 6 Nodes (servers)
Resources / h 3 369 600 res/h
Resources / day 80 870 400 res/day
Total resources in 2014 ~ 3 000 Millions
Resources by month in 2014 ~ 250 Millions
Total month DSR loading time 3,09 Days
Total month DSR loading time 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 time 0,07 Days
Total month DSR loading time 1,56 h
Total month DSR loading time 93,75 min
0
50000000
100000000
150000000
200000000
250000000
300000000
3 4 5 6 7 8 9 10
SATA disks (Res/h)
SSD disks (Res/h)