Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apache Cassandra - Concepts et fonctionnalités

Apache Cassandra - Concepts et fonctionnalités

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

Romain Hardouin

February 25, 2014
Tweet

More Decks by Romain Hardouin

Other Decks in Programming

Transcript

  1. Plan Présentation de Cassandra Concepts clés Installation Les outils DataStax

    : DevCenter et OpsCenter Modèle de données Requêtes
  2. • 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 Cassandra
  3. Lyon Cassandra Users • No single points of failure •

    Highly scalable writes (we have highly variable write traffic) • A healthy and productive open source community – Ryan King What were the top reasons for going with Cassandra?
  4. Théoreme CAP • Seuls deux des trois sont réalisables P

    A C @eric_brewer Haute disponibilité Cohérence Tolérance aux partitionnements
  5. 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
  6. 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
  7. Partitioner • Token = f (row) – Murmur3, MD5 –

    BOP • Token => noeud Lyon pays gentilé FR Lyonnais Venise pays gentilé IT Vénitiens
  8. Snitch • Comment connaitre la topologie du réseau ? –

    PropertyFile, GossipingPropertyFile – EC2(MultiRegion) – RackInferring 10 . 1 . 2 . 3 DC Rack Noeud
  9. Coordinator • P2P => on contacte n'importe quel noeud •

    Noeud contacté = coordinateur • Le coordinateur contacte les répliques (proxy) Client
  10. Repair • Hinted-handoff – Fenêtre paramétrable • Read repair –

    Probabilité paramétrable • Anti-entropy repair – Indispensable – Généralement hebdomadaire
  11. Java • Oracle JDK – Cassandra 1 : v6 –

    Cassandra 2 : v7 • Production – Java Native Access (JNA)
  12. 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
  13. Column • Identifiée par son nom • Valeur et nom

    typés – blob, int, text, timestamp, timeuuid, uuid, ... Nom Valeur Timestamp Résout les conflits => NTP, VMWare tools ≤ 9 MO conseillé Max 2 GO
  14. Column • Time to live – Ne remplace pas une

    purge métier Nom Valeur Timestamp TTL
  15. Column • Nom porteur d'informations – Colonne composite – Intérêt

    : requêtage rhone:lyon Valeur Timestamp rhone:villeurbanne Valeur Timestamp rhone:bron Valeur Timestamp “ rhone:* ”
  16. Row • Identifiée par sa clé (typée) • Contient des

    colonnes, triées par nom • Une ligne est stockée sur un seul noeud * Clé Nom colonne 1 ... N Valeur colonne 1 Timestamp 2.109 * hors réplication
  17. Column Family (CF) • Regroupe les lignes et donc les

    colonnes • Les lignes ne sont pas triées * • Arena allocation : ≤ 1000 CF Nom CF Clé 1 Colonne 1 ... N Valeur 1 Timestamp ... ... Clé N Colonne 1 ... N Valeur 1 Timestamp * sauf si le ByteOrderedPartitioner est utilisé
  18. Nom keyspace 1 Keyspace • Regroupe les column families •

    Peut coûteux en mémoire Nom CF 1 Clé 1 Colonne 1 ... N Valeur 1 Timestamp ... Colonne 1 ... N Valeur 1 Timestamp Nom CF N Clé 1 Colonne 1 ... N Valeur 1 Timestamp ... Colonne 1 ... N Valeur 1 Timestamp ...
  19. meetup.com Keyspace • Exemple – Timestamp non représentés members bob

    firstname ... Robert ... ... bill firstname ... William events 30a9e2d2 event_name event_date Cassandra 2014-02-25 ... ... ... 31369e8e event_name event_date Hadoop 2014-03-13
  20. 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»
  21. Par où commencer • Penser “requête” – Critères de recherches

    – Tris • Penser “alimentation” – Comment les données arrivent ? – Données brutes ?
  22. 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"
  23. "events by city" events 30a9e2d2 event_name event_date Cassandra 2014-02-25 ...

    ... ... 31369e8e event_name event_date Hadoop 2014-03-13 events_by_city lyon 31369e8e ... 30a9e2d2 <valueless> ... <valueless> TimeUUID Valueless pattern
  24. Penser "requêtes" • Comment faire sans aggregation ? – Peu

    de données : travail en mémoire – Big data : Hadoop, Hive, Pig, etc.
  25. 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 e53a9da4 ... e408c24e <blob> <blob> ... <blob> 100 mesures / s => 8 640 000 colonnes
  26. CQL • Simplifie l'utilisation – cqlsh, DevCenter • CQL 3

    – Cassandra >= 1.2 CQL Implémentation
  27. 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', ['[email protected]', '[email protected]'] );
  28. 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