apache cassandra - concepts et fonctionnalités

51
Lyon Cassandra Users Apache Cassandra Concepts et fonctionnalités Romain Hardouin

Upload: romain-hardouin

Post on 13-Apr-2017

1.909 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Apache Cassandra - Concepts et fonctionnalités

Lyon Cassandra Users

Apache CassandraConcepts et fonctionnalités

Romain Hardouin

Page 2: Apache Cassandra - Concepts et fonctionnalités

Plan

Présentation de Cassandra

Concepts clés

Installation

Les outils DataStax : DevCenter et OpsCenter

Modèle de données

Requêtes

Page 3: Apache Cassandra - Concepts et fonctionnalités

Présentation de Cassandra

“Semblable à l'Aphrodite d'or” – Homère

Page 4: Apache Cassandra - Concepts et fonctionnalités

Lyon Cassandra Users

NoSQL*

* ≠ Big Data

Page 5: Apache Cassandra - Concepts et fonctionnalités

Lyon Cassandra Users

Big Data*

* 3V = Volume, Vélocité, Variété

Page 6: Apache Cassandra - Concepts et fonctionnalités

● 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

Page 7: Apache Cassandra - Concepts et fonctionnalités

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?

Page 8: Apache Cassandra - Concepts et fonctionnalités

Qui l'utilise ?

Page 9: Apache Cassandra - Concepts et fonctionnalités

Qui l'utilise ?

Page 10: Apache Cassandra - Concepts et fonctionnalités

Concepts clés

Architecture

Page 11: Apache Cassandra - Concepts et fonctionnalités

Cluster

● Noeud = Instance de Cassandra● Cluster = Ring = Ensemble des noeuds

Page 12: Apache Cassandra - Concepts et fonctionnalités

Théoreme CAP

● Seuls deux des trois sont réalisables

P

A

C

@eric_brewer

Haute disponibilité

CohérenceTolérance aux partitionnements

Page 13: Apache Cassandra - Concepts et fonctionnalités

Théoreme CAP

● En pratique– Continuum

– Consistency Level (CL)

– Latence !

P

A

C

Page 14: Apache Cassandra - Concepts et fonctionnalités

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

Page 15: Apache Cassandra - Concepts et fonctionnalités

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

Page 16: Apache Cassandra - Concepts et fonctionnalités

Gossip

● Protocole epidémique de communication P2P● Echange d'informations chaque seconde● Réseau overlay maillé complet

Page 17: Apache Cassandra - Concepts et fonctionnalités

Partitioner

● Token = f (row)

– Murmur3, MD5

– BOP

● Token => noeud

Lyonpays gentilé

FR Lyonnais

Venisepays gentilé

IT Vénitiens

Page 18: Apache Cassandra - Concepts et fonctionnalités

Facteur de réplication

● Nombre d'occurrences d'une donnée– Replication Factor (RF)

RF = 2

Page 19: Apache Cassandra - Concepts et fonctionnalités

Réplication

● Replica placement strategy– NetworkTopologyStrategy

RF = 2

Lyonpays gentilé

FR Lyonnais

Page 20: Apache Cassandra - Concepts et fonctionnalités

Snitch

● Comment connaitre la topologie du réseau ?– PropertyFile, GossipingPropertyFile

– EC2(MultiRegion)

– RackInferring

10 . 1 . 2 . 3

DCRack

Noeud

Page 21: Apache Cassandra - Concepts et fonctionnalités

Coordinator

● P2P => on contacte n'importe quel noeud● Noeud contacté = coordinateur● Le coordinateur contacte les répliques (proxy)

Client

Page 22: Apache Cassandra - Concepts et fonctionnalités

Ecriture

● Exemple avec RF = 2, CL = ONE

Client

Page 23: Apache Cassandra - Concepts et fonctionnalités

Repair

● Hinted-handoff– Fenêtre paramétrable

● Read repair– Probabilité paramétrable

● Anti-entropy repair– Indispensable

– Généralement hebdomadaire

Page 24: Apache Cassandra - Concepts et fonctionnalités

Installation

Page 25: Apache Cassandra - Concepts et fonctionnalités

Installation

● Linux– Production

● Windows● Mac OS● Ne pas mixer les OS

Page 26: Apache Cassandra - Concepts et fonctionnalités

Java

● Oracle JDK– Cassandra 1 : v6

– Cassandra 2 : v7

● Production– Java Native Access (JNA)

Page 27: Apache Cassandra - Concepts et fonctionnalités

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

Page 28: Apache Cassandra - Concepts et fonctionnalités

RedHat / CentOS

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

● Cassandra, DevCenter, OpsCenter, DSC

Page 29: Apache Cassandra - Concepts et fonctionnalités

Les outils DataStax

DevCenter et OpsCenter

Page 30: Apache Cassandra - Concepts et fonctionnalités

DevCenter

Page 31: Apache Cassandra - Concepts et fonctionnalités

OpsCenter

Page 32: Apache Cassandra - Concepts et fonctionnalités

OpsCenter

Page 33: Apache Cassandra - Concepts et fonctionnalités

Modèle de données

SGBD orienté colonnes

Page 34: Apache Cassandra - Concepts et fonctionnalités

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

Page 35: Apache Cassandra - Concepts et fonctionnalités

Column

● Time to live– Ne remplace pas une purge métier

Nom

Valeur

Timestamp

TTL

Page 36: Apache Cassandra - Concepts et fonctionnalités

Column

● Compteur distribué– Type spécial

Nom

Valeur

Timestamp

Page 37: Apache Cassandra - Concepts et fonctionnalités

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:* ”

Page 38: Apache Cassandra - Concepts et fonctionnalités

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 ... NValeur colonne 1

Timestamp

2.109

* hors réplication

Page 39: Apache Cassandra - Concepts et fonctionnalités

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é

Page 40: Apache Cassandra - Concepts et fonctionnalités

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...

Page 41: Apache Cassandra - Concepts et fonctionnalités

meetup.com

Keyspace

● Exemple– Timestamp non représentés

members

bobfirstname ...

Robert

... ...

billfirstname ...

William

events

30a9e2d2event_name event_date

Cassandra 2014-02-25

... ... ...

31369e8eevent_name event_date

Hadoop 2014-03-13

Page 42: Apache Cassandra - Concepts et fonctionnalités

Requêtes

SELECT * FROM big_data

Page 43: Apache Cassandra - Concepts et fonctionnalités

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»

Page 44: Apache Cassandra - Concepts et fonctionnalités

Par où commencer

● Penser “requête”– Critères de recherches

– Tris

● Penser “alimentation”– Comment les données arrivent ?

– Données brutes ?

Page 45: Apache Cassandra - Concepts et fonctionnalités

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"

Page 46: Apache Cassandra - Concepts et fonctionnalités

"events by city"

events

30a9e2d2event_name event_date

Cassandra 2014-02-25

... ... ...

31369e8eevent_name event_date

Hadoop 2014-03-13

events_by_city

lyon 31369e8e ... 30a9e2d2

<valueless> ... <valueless>

TimeUUID

Valueless pattern

Page 47: Apache Cassandra - Concepts et fonctionnalités

Penser "requêtes"

● Comment faire sans aggregation ?– Peu de données : travail en mémoire

– Big data : Hadoop, Hive, Pig, etc.

Page 48: Apache Cassandra - Concepts et fonctionnalités

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

Page 49: Apache Cassandra - Concepts et fonctionnalités

CQL

● Simplifie l'utilisation– cqlsh, DevCenter

● CQL 3 – Cassandra >= 1.2

CQL Implémentation

Page 50: Apache Cassandra - Concepts et fonctionnalités

CQL

CREATE TABLE members (username text,firstname text,email list<text>,PRIMARY KEY (username)

);

members

bobfirstname ...

Robert

... ... ...

billfirstname ...

William

INSERT INTO members (username, firstname, email)VALUES ('bob', 'Robert',

['[email protected]', '[email protected]']);

Page 51: Apache Cassandra - Concepts et fonctionnalités

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