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

Avatar for Romain Hardouin

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