Apache Cassandra
Concepts et fonctionnalités

Romain Hardouin

Lyon Cassandra Users
Plan
Présentation de Cassandra
Concepts clés
Installation
Les outils DataStax : DevCenter et OpsCenter
Modèle de données
R...
Présentation de Cassandra
“Semblable à l'Aphrodite d'or” – Homère
NoSQL*
* ≠ Big Data

Lyon Cassandra Users
Big Data*
* 3V = Volume, Vélocité, Variété

Lyon Cassandra Users
Cassandra
●

SGBD NoSQL orienté colonnes

●

Distribué : P2P

●

Haute disponibilité : no SPOF

●

Massivement parallèle

...
What were the top reasons for going with Cassandra?
●

No single points of failure

●

Highly scalable writes (we have hig...
Qui l'utilise ?
Qui l'utilise ?
Concepts clés
Architecture
Cluster
●

Noeud = Instance de Cassandra

●

Cluster = Ring = Ensemble des noeuds
Théoreme CAP
●

Seuls deux des trois sont réalisables
Haute disponibilité

A

C

Cohérence

@eric_brewer

P Tolérance aux
...
Théoreme CAP
●

En pratique
–

Continuum

–

Consistency Level (CL)

–

A

Latence !

C

P
Cohérence in fine
●
●

●

Eventually consistency
A un instant T, la donnée la plus récente n'est
pas présente partout
Pas ...
Cohérence paramétrable
●

Combien de répliques écrites/lues avant
aquittement
●
●
●

–

ONE, QUORUM, ALL
ANY
SERIAL

Datac...
Gossip
●

Protocole epidémique de communication P2P

●

Echange d'informations chaque seconde

●

Réseau overlay maillé co...
Partitioner
●

Token = f
–
–

●

Murmur3, MD5
BOP

Token => noeud

(row)

Lyon
Venise

pays gentilé
FR

Lyonnais

pays gen...
Facteur de réplication
●

Nombre d'occurrences d'une donnée
–

Replication Factor (RF)

RF = 2
Réplication
●

Replica placement strategy
–

NetworkTopologyStrategy
Lyon

RF = 2

pays gentilé
FR

Lyonnais
Snitch
●

Comment connaitre la topologie du réseau ?
–

PropertyFile, GossipingPropertyFile

–

EC2(MultiRegion)

–

RackI...
Coordinator
●

P2P => on contacte n'importe quel noeud

●

Noeud contacté = coordinateur

●

Le coordinateur contacte les ...
Ecriture
●

Exemple avec RF = 2, CL = ONE

Client
Repair
●

Hinted-handoff
–

●

Read repair
–

●

Fenêtre paramétrable
Probabilité paramétrable

Anti-entropy repair
–

Ind...
Installation
Installation
●

Linux
–

Production

●

Windows

●

Mac OS

●

Ne pas mixer les OS
Java
●

Oracle JDK
–
–

●

Cassandra 1 : v6
Cassandra 2 : v7

Production
–

Java Native Access (JNA)
Debian
●

Apache
–

deb http://www.apache.org/dist/cassandra/debian V main
●

●

V = 12x, 20x

DataStax
–

deb http://debi...
RedHat / CentOS
●

DataStax
–

http://rpm.datastax.com/community
●

Cassandra, DevCenter, OpsCenter, DSC
Les outils DataStax
DevCenter et OpsCenter
DevCenter
OpsCenter
OpsCenter
Modèle de données
SGBD orienté colonnes
Column
●

Identifiée par son nom

●

Valeur et nom typés
–

blob, int, text, timestamp, timeuuid, uuid, ...

≤ 9 MO consei...
Column
●

Time to live
–

Ne remplace pas une purge métier

Nom
Valeur
Timestamp
TTL
Column
●

Compteur distribué
–

Type spécial

Nom
Valeur
Timestamp
Column
●

Nom porteur d'informations
–

Colonne composite

–

Intérêt : requêtage

“ rhone:* ”
rhone:bron

rhone:lyon

rho...
Row
●

Identifiée par sa clé (typée)

●

Contient des colonnes, triées par nom

●

Une ligne est stockée sur un seul noeud...
Column Family (CF)
●

Regroupe les lignes et donc les colonnes

●

Les lignes ne sont pas triées *

●

Arena allocation : ...
Keyspace
●

Regroupe les column families

●

Peut coûteux en mémoire
Nom keyspace 1
Nom CF N

Nom CF 1

Colonne 1 ... N

C...
Keyspace
●

Exemple
–

Timestamp non représentés
meetup.com
members

events
30a9e2d2
...

31369e8e

event_name

event_date...
Requêtes
SELECT * FROM big_data
NoSQL
●

Les applications doivent en faire plus
–
–

●

Moins de fonctionnalités que les SGBDR
Dénormalisation

Pas de tra...
Par où commencer
●

Penser “requête”
–
–

●

Critères de recherches
Tris

Penser “alimentation”
–

Comment les données arr...
Penser "requêtes"
●

Comment faire sans jointures ?
–
–

●

Peu de données : 2 requêtes + filtre mémoire
Big data : autant...
"events by city"

TimeUUID

events_by_city
lyon

31369e8e

... 30a9e2d2

<valueless> ... <valueless>

Valueless pattern

e...
Penser "requêtes"
●

Comment faire sans aggregation ?
–

Peu de données : travail en mémoire

–

Big data : Hadoop, Hive, ...
Penser "alimentation"
Exemple : séries temporelles => wide rows
–

Données financières
●

–

Actions, produits dérivés, et...
CQL
●

Simplifie l'utilisation
–

●

cqlsh, DevCenter

CQL 3
–

Cassandra >= 1.2

CQL

Implémentation
CQL
CREATE TABLE members (
username text,
firstname text,
email list<text>,
PRIMARY KEY (username)
);

members
bob

firstn...
Référence
DataStax : datastax.com
www.datastax.com/docs

Interview Ryan King (Twitter) :
http://nosql.mypopescu.com/post/4...
Prochain SlideShare
Chargement dans…5
×

Apache Cassandra - Concepts et fonctionnalités

1 415 vues

Publié le

Apache Cassandra - Concepts et fonctionnalités, 25/02/2014

Présentation de Cassandra pour le premier évènement "Lyon Cassandra Users" (organisé par DataStax & Zenika).

* Présentation de Cassandra
* Concepts clés (Théorie & Architecture)
* Installation
* Les outils DataStax : DevCenter et OpsCenter
* Modèle de données
* Requêtes

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

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive

Apache Cassandra - Concepts et fonctionnalités

  1. 1. Apache Cassandra Concepts et fonctionnalités Romain Hardouin Lyon Cassandra Users
  2. 2. Plan Présentation de Cassandra Concepts clés Installation Les outils DataStax : DevCenter et OpsCenter Modèle de données Requêtes
  3. 3. Présentation de Cassandra “Semblable à l'Aphrodite d'or” – Homère
  4. 4. NoSQL* * ≠ Big Data Lyon Cassandra Users
  5. 5. Big Data* * 3V = Volume, Vélocité, Variété Lyon Cassandra Users
  6. 6. Cassandra ● SGBD NoSQL orienté colonnes ● Distribué : P2P ● Haute disponibilité : no SPOF ● Massivement parallèle ● Scalabilité linéaire ● Multi data centers ● Réplication native ● Open source : Facebook → Apache
  7. 7. What were the top reasons for going with Cassandra? ● No single points of failure ● Highly scalable writes (we have highly variable write traffic) ● A healthy and productive open source community – Ryan King Lyon Cassandra Users
  8. 8. Qui l'utilise ?
  9. 9. Qui l'utilise ?
  10. 10. Concepts clés Architecture
  11. 11. Cluster ● Noeud = Instance de Cassandra ● Cluster = Ring = Ensemble des noeuds
  12. 12. Théoreme CAP ● Seuls deux des trois sont réalisables Haute disponibilité A C Cohérence @eric_brewer P Tolérance aux partitionnements
  13. 13. Théoreme CAP ● En pratique – Continuum – Consistency Level (CL) – A Latence ! C P
  14. 14. Cohérence in fine ● ● ● Eventually consistency A un instant T, la donnée la plus récente n'est pas présente partout Pas de suppression instantanée – Tombstone
  15. 15. Cohérence paramétrable ● Combien de répliques écrites/lues avant aquittement ● ● ● – ONE, QUORUM, ALL ANY SERIAL Datacenter aware : ● ● LOCAL_ONE, LOCAL_QUORUM EACH_QUORUM
  16. 16. Gossip ● Protocole epidémique de communication P2P ● Echange d'informations chaque seconde ● Réseau overlay maillé complet
  17. 17. Partitioner ● Token = f – – ● Murmur3, MD5 BOP Token => noeud (row) Lyon Venise pays gentilé FR Lyonnais pays gentilé IT Vénitiens
  18. 18. Facteur de réplication ● Nombre d'occurrences d'une donnée – Replication Factor (RF) RF = 2
  19. 19. Réplication ● Replica placement strategy – NetworkTopologyStrategy Lyon RF = 2 pays gentilé FR Lyonnais
  20. 20. Snitch ● Comment connaitre la topologie du réseau ? – PropertyFile, GossipingPropertyFile – EC2(MultiRegion) – RackInferring 10 . 1 . 2 . 3 DC Noeud Rack
  21. 21. Coordinator ● P2P => on contacte n'importe quel noeud ● Noeud contacté = coordinateur ● Le coordinateur contacte les répliques (proxy) Client
  22. 22. Ecriture ● Exemple avec RF = 2, CL = ONE Client
  23. 23. Repair ● Hinted-handoff – ● Read repair – ● Fenêtre paramétrable Probabilité paramétrable Anti-entropy repair – Indispensable – Généralement hebdomadaire
  24. 24. Installation
  25. 25. Installation ● Linux – Production ● Windows ● Mac OS ● Ne pas mixer les OS
  26. 26. Java ● Oracle JDK – – ● Cassandra 1 : v6 Cassandra 2 : v7 Production – Java Native Access (JNA)
  27. 27. Debian ● Apache – deb http://www.apache.org/dist/cassandra/debian V main ● ● V = 12x, 20x DataStax – deb http://debian.datastax.com/community stable main ● ● ● Cassandra, DevCenter, OpsCenter, DSC apt-get install cassandra → v2.0 apt-get install cassandra=1.2.15
  28. 28. RedHat / CentOS ● DataStax – http://rpm.datastax.com/community ● Cassandra, DevCenter, OpsCenter, DSC
  29. 29. Les outils DataStax DevCenter et OpsCenter
  30. 30. DevCenter
  31. 31. OpsCenter
  32. 32. OpsCenter
  33. 33. Modèle de données SGBD orienté colonnes
  34. 34. Column ● Identifiée par son nom ● Valeur et nom typés – blob, int, text, timestamp, timeuuid, uuid, ... ≤ 9 MO conseillé Max 2 GO Nom Valeur Timestamp Résout les conflits => NTP, VMWare tools
  35. 35. Column ● Time to live – Ne remplace pas une purge métier Nom Valeur Timestamp TTL
  36. 36. Column ● Compteur distribué – Type spécial Nom Valeur Timestamp
  37. 37. Column ● Nom porteur d'informations – Colonne composite – Intérêt : requêtage “ rhone:* ” rhone:bron rhone:lyon rhone:villeurbanne Valeur Timestamp Valeur Timestamp Valeur Timestamp
  38. 38. Row ● Identifiée par sa clé (typée) ● Contient des colonnes, triées par nom ● Une ligne est stockée sur un seul noeud * 2.109 Nom colonne 1 ... N Clé Valeur colonne 1 Timestamp * hors réplication
  39. 39. Column Family (CF) ● Regroupe les lignes et donc les colonnes ● Les lignes ne sont pas triées * ● Arena allocation : ≤ 1000 CF Nom CF Colonne 1 Clé 1 ... N Valeur 1 Timestamp ... ... Colonne 1 Clé N ... N Valeur 1 Timestamp * sauf si le ByteOrderedPartitioner est utilisé
  40. 40. Keyspace ● Regroupe les column families ● Peut coûteux en mémoire Nom keyspace 1 Nom CF N Nom CF 1 Colonne 1 ... N Colonne 1 ... N Clé 1 Clé 1 Valeur 1 Timestamp Timestamp Colonne 1 ... N ... Valeur 1 Timestamp Valeur 1 ... Colonne 1 ... N ... Valeur 1 Timestamp
  41. 41. Keyspace ● Exemple – Timestamp non représentés meetup.com members events 30a9e2d2 ... 31369e8e event_name event_date Cassandra 2014-02-25 ... ... event_name event_date Hadoop 2014-03-13 bob firstname ... Robert ... ... bill firstname William ...
  42. 42. Requêtes SELECT * FROM big_data
  43. 43. NoSQL ● Les applications doivent en faire plus – – ● Moins de fonctionnalités que les SGBDR Dénormalisation Pas de transactions – V1.0 : Row level isolation – v2.0 : Lightweight transactions, CAS ● Pas de jointures ● Pas de «GROUP BY»
  44. 44. Par où commencer ● Penser “requête” – – ● Critères de recherches Tris Penser “alimentation” – Comment les données arrivent ? – Données brutes ?
  45. 45. Penser "requêtes" ● Comment faire sans jointures ? – – ● Peu de données : 2 requêtes + filtre mémoire Big data : autant de Column Family que de requêtes Exemple : – Rechercher les meetup d'une ville – SELECT * FROM events WHERE city = 'Lyon' – Column Family "events by city"
  46. 46. "events by city" TimeUUID events_by_city lyon 31369e8e ... 30a9e2d2 <valueless> ... <valueless> Valueless pattern events 30a9e2d2 ... 31369e8e event_name event_date Cassandra 2014-02-25 ... ... event_name event_date Hadoop 2014-03-13
  47. 47. Penser "requêtes" ● Comment faire sans aggregation ? – Peu de données : travail en mémoire – Big data : Hadoop, Hive, Pig, etc.
  48. 48. Penser "alimentation" Exemple : séries temporelles => wide rows – Données financières ● – Actions, produits dérivés, etc. Données brutes ● Capteurs, satellites, etc. sensors Sensor_1:<date> e598170e <blob> e53a9da4 ... e408c24e <blob> ... <blob> 100 mesures / s => 8 640 000 colonnes
  49. 49. CQL ● Simplifie l'utilisation – ● cqlsh, DevCenter CQL 3 – Cassandra >= 1.2 CQL Implémentation
  50. 50. CQL CREATE TABLE members ( username text, firstname text, email list<text>, PRIMARY KEY (username) ); members bob firstname ... Robert ... ... bill ... firstname ... William INSERT INTO members (username, firstname, email) VALUES ('bob', 'Robert', ['bob@gmail.com', 'bob@yahoo.fr'] );
  51. 51. Référence DataStax : datastax.com www.datastax.com/docs Interview Ryan King (Twitter) : http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king

×