Apache Cassandra dans Microsoft Azure15/10/2015
Victor Coustenoble Ingénieur [email protected]@vizanalytics
Agenda
Confidential 2
• DataStax • Apache Cassandra• Demonstration : Déploiement dans Azure• Modélisation de données et CQL• DataStax Enterprise• Demonstration : Stress Tests, CQL, C#, Recherche avec
Solr, Analytique avec Spark (PowerBI)• Exemples d’application• Conclusion• Questions & Réponses
3
DataStax
4
DataStax délivre une plateforme de la base de données Apache Cassandra, conçue spécifiquement pour les besoins en Performance et Disponibilité exigés par les applications d’Internet des Objets, Web ou Mobiles, en offrant aux entreprises une base de données Sécurisée toujours disponible, qui reste Simple à administrer même pour des déploiements à grande échelle, dans un seul ou de Multiples Data Centers et dans le Cloud.
5
© 2014 DataStax Confidential. Do not distribute without consent.
Des clients sur tous les verticaux
6
Straightening the road
RELATIONAL DATABASESCQL SQL
OpsCenter / DevCenter Management toolsDSE for search & analytics IntegrationSecurity Security
Support, consulting & training 30 years ecosystem
Partenariat Microsoft Azure / DataStax
Confidential 8
9
Apache Cassandra
10
Apache Cassandra™• Apache Cassandra™ est une base de données NoSQL, Open Source, Distribuée et
créée pour les applications en ligne, modernes, critiques et avec des montée en charge massive.
• Développé en Java c’est un hybride entre Amazon Dynamo et Google BigTable• Sans Maître-Esclave, sans Point Unique de Défaillance (Single Point Of Failure)• Distribuée avec la possibilité de Centres de Données (Data Center)• 100% Disponible• Massivement scalable• Montée en charge linéaire• Haute Performance• Simple à Exploiter
©2014 DataStax Confidential. Do not distribute without consent.
Dynamo
BigTable
BigTable: http://research.google.com/archive/bigtable-osdi06.pdfDynamo: http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf
Node 1
Node 2
Node 3Node 4
Node 5
11
Cassandra et le théorème CAP• Théorème CAP Dans un système distribué, seules 2 propriétés parmis ces 3 peuvent être garanties Consistency, Availability, Partition tolerance
• Cassandra est classifié comme un système AP• Tunable Consistency (Cohérence Ajustable): Le compromis
entre la Cohérence et la Latence peut être ajustée. Vous pouvez avoir une cohérence forte (immédiate) avec Cassandra.
©2014 DataStax Confidential. Do not distribute without consent.
Cassandra dans le monde NoSQLDistribution
• Peer-to-peer Cassandra
• Maître-esclave
Performance • Lecture
Cassandra • Ecriture +
Cassandra
Topologie du Cluster• Simple• Rack & Data Center
Cassandra
Volume de Données• Petit->Enorme
Cassandra • Petit->Standard
Type de Stockage• Mémoire
Cassandra • Disque
Cassandra
Format de Stockage• Document• Clé / Valeur• Clé / Colonne
Cassandra • Graphe
13
Pourquoi migrer depuis RDBMS vers Cassandra ?
©2014 DataStax Confidential. Do not distribute without consent.
Versus
14
Cassandra @ Netflix• 80+ Clusters• 2500+ noeuds• 4 Data Centres (Régions Amazon)• > 1 Trillion transactions par jour
http://planetcassandra.org/functional-use-cases/
Performance et Montée en ChargeCassandra fonctionne aussi bien pour des petits que pour des gros déploiements
©2014 DataStax Confidential. Do not distribute without consent.
Performance et Montée en ChargeCassandra fonctionne aussi bien pour des petits que pour des déploiements
énormes!
Déploiement Cassandra chez Apple
• 75 000+ noeuds• 10’s petabytes de données• Millions ops/second• Plus gros cluster à 1000+ noeuds
Apple Inc.: Cassandra at Apple for Massive ScaleVideo https://www.youtube.com/watch?v=Bc4ql9TDzyg
From Cassandra Summit, London, December 2014
16
Principes• Cassandra a été conçu en prenant en compte le fait que les défaillances systèmes
et matériels arrivent et doivent arriver• Peer-to-peer, Système Distribué• Tous les noeuds sont identiques, pas de Point Unique de Défaillance• Chaque noeud communique avec les autres à travers le protocol Gossip,
échangeant les informations du cluster toutes les secondes• Les données sont reparties entre tous les noeuds du cluster• Réplication des données pour assurer la tolérance aux pannes• Lecture/Ecriture sur tout le cluster et via les data centers
©2014 DataStax Confidential. Do not distribute without consent.
Node 1
Node 2
Node 3Node 4
Node 5
17
• Facteur de Réplication (RF): Combien de copies de vos données ?
• RF = 3 dans cet exemple• Chaque noeud stocke 60% de la totalité des
données du cluster, i.e. 3/5
Distribution et Réplication
©2014 DataStax Confidential. Do not distribute without consent.
Node 11st copy
Node 4
Node 5 Node 22nd copy
Node 33rd copy
• Le client lit et écrit sur n’importe quel noeud• Un noeud coordonne temporairement l’éxecution d’une
requête• Les données sont lues et répliquées en parallèle
18
Configuration en Data Center
©2014 DataStax Confidential. Do not distribute without consent.
Node 11st copy
Node 4
Node 5 Node 22nd copy
Node 33rd copy
Node 11st copy
Node 4
Node 5 Node 22nd copy
Node 33rd copy
DC: EUROPEDC: USA
• Actif partout – lecture/écriture dans tous les DC
• Le client écrit localement dans un DC• Données synchronisées à travers le WAN• Facteur de Réplication par DC
Utilisations• DC de sauvegarde• Distribution géographique• Charge différente entre
DC• Prod -> Pré-prod
Cloud & Cloud Hybride• DataStax Enterprise et Cassandra sont disponibles en multi-data center et dans le cloud
(Amazon AWS, Google Cloud et Microsoft Azure)• Les données écrites dans n’importe quel noeud sont aussi automatiquement et de manière
transparente écrites sur tous les autres noeuds dans les autres data centers sans ETL
Data Centre 1 Data Centre 2
Public Cloud
Cohérence Ajustable• Niveau de Cohérence (Consistency Level - CL)• Spécifié par le client à la lecture ou à l’écriture
• ALL = Tous les replicas répondent• QUORUM = > 51% des replicas répondent• LOCAL_QUORUM = > 51% du DC local répond• ONE = Un seul replica répond
Régle : CL(W) + CL(R) > RF => Cohérence Immédiate
©2014 DataStax Confidential. Do not distribute without consent.
Node 11st copy
Node 4
Node 5 Node 22nd copy
Node 33rd copy
ParallelWrite
WriteCL=QUORUM
5 μs ack
12 μs ack
500 μs ack
12 μs ack
3 replicas
A A A
Temps

Cohérence ajustable

Ecriture et attente de la réponse d’un des noeuds
Ecriture ‘B’
B A A
Temps
A A A
Cohérence ajustable

R + W < N
La lecture attend la réponse d’un des noeuds
B A A

B A A
A A A
Ecriture et attente de la réponse d’un des noeuds
Temps
Cohérence ajustable
24
R + W = N
B B A
B A
A A A
B
Ecriture et attente de la réponse de deux noeuds
La lecture attend la réponse d’un des
noeuds
Temps
Cohérence ajustable
25
R + W > N
B A
B A
A A A
B
B
Ecriture et attente de la réponse de deux noeuds
La lecture attend la réponse de deux
noeuds
Temps
Cohérence ajustable
26
R = W = QUORUM
B A
B A
A A A
B
B
Temps
QUORUM = (N / 2) + 1
Cohérence ajustable
CohérenceA terme
Forte
Disponibité
Haute
Faible
Latence
Haute
Faible
Cohérence Ajustable
ONE
ALL
QUORUM
Immédiate
28
Défaillance d’un Noeud• La défaillance d’un seul noeud ne doit pas entraîner de défaillance du système• Facteur de Réplication + Niveau de Cohérence = Succès• Exemple:
• RF = 3• CL = QUORUM
©2014 DataStax Confidential. Do not distribute without consent.
Node 11st copy
Node 4
Node 5 Node 22nd copy
Node 33rd copy
ParallelWrite
WriteCL=QUORUM
5 μs ack
12 μs ack
12 μs ack
>51% de réponses – donc la requête est réussie
29
Démo : Déploiement dans Azure
©2013 DataStax Confidential. Do not distribute without consent. 30
Déployer DataStax et Cassandra dans Azure
• Automatiquement depuis Azure Marketplace
• Manuellement avec des templates Azure Ressources Manager (ARM)
• Manuellement avec des installations séparées
©2013 DataStax Confidential. Do not distribute without consent. 31
Azure Marketplace
©2013 DataStax Confidential. Do not distribute without consent. 32
• Déployement automatique (4 - 90 noeuds!)
• Environnement de test ou de production
• Outils d’administration et de monitoring
Vidéo Azure Marketplace
https://www.youtube.com/watch?v=tmXdSEMjwCE©2013 DataStax Confidential. Do not distribute without consent. 33
Azure Ressources ManagerTemplates disponibles sur GitHub https://github.com/DSPN/azure-resource-manager-dseDéploiement depuis:• http://portal.azure.com
• Client Azure CLI
©2013 DataStax Confidential. Do not distribute without consent. 34
Vidéo Templates ARM et Azure CLI
https://www.youtube.com/watch?v=vacp267zLBA©2013 DataStax Confidential. Do not distribute without consent. 35
Installations séparées1. Création du cluster des VM depuis Azure2. Installation manuelle de DataStax et Cassandrahttp://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/install/installDEBdse.html
Exemple et explication détaillée avec multi-data centerhttps://azure.microsoft.com/fr-fr/documentation/articles/virtual-machines-linux-nodejs-running-cassandra/©2013 DataStax Confidential. Do not distribute without consent. 36
37
Modélisation de données et CQL
Modélisation de données• Cassandra ne fonctionne pas comme un SGBDR classique
• Pas de modèle relationnel• Pas de clés étrangéres, pas de jointures, pas d’aggregations
• Modélisation guidée par les requêtes à supporter, les accès, les actions (besoin de filtres, de regroupements, d’ordre …)
• Dénormalisation• Combiner les colonnes de différentes tables en tables uniques (“vue
matérialisée”, pas de jointures!)• Plus de performances, moins de traffic• Ne pas avoir peur de la Duplication des données
• Eviter les jointures au niveau client• Ne pas avoir peur des écritures
©2014 DataStax Confidential. Do not distribute without consent. 38
39
Modèle de Données
©2014 DataStax Confidential. Do not distribute without consent.
• Basé sur Google Bigtable • Famille Ligne / Colonne• DénormaliséCREATE TABLE sporty_league ( team_name varchar, player_name varchar, jersey int, PRIMARY KEY (team_name, player_name));SELECT * FROM sporty_league;
La clé primaire identifie de manière unique une ligneUne clé primaire composite consiste en :
• Une clé de répartition• Une ou plusieurs clustering columns
e.g. PRIMARY KEY (partition key, cluster columns, ...)
• La clé de répartition détermine sur quel noeud la partition (la ligne) réside
• Les donnés sont triées dans l’ordre de la cluster column au sein de la partition (ligne)
Accès aux données Cassandra
• Langage CQL via cqlsh (ligne de commande) ou DevCenter (environnement de dev) ou driver
• Drivers sur le protocole natif Cassandra• CQL COPY command• Utilitaire d’import/export massif bulk loader• Connecteurs dans des ETL (Talend, Informatica)• Via les couches analytiques Spark et Hadoop• Via des drivers ODBC/JDBC
©2013 DataStax Confidential. Do not distribute without consent. 40
CQL – Cassandra Query Language
©2014 DataStax Confidential. Do not distribute without consent.
• Type de données : BLOB, UUID, TIMEUUID, User Define Type ...Select /
• Support JSON (Select, Insert)• User Defined Functions, User Defined Aggregates• Collections : Map, List, Set• TTL (Time-To-Live) au niveau de la colonne• Compteurs• Lightweight Transactions (LWT) : solution pour le problème
“race condition” avec IF NOT EXISTS• Interrogation par Batch• Index Secondaire
• Très similaire à la syntaxe SQL des SGBDR• Principales commandes DDL et DML supportées : INSERT, UPDATE, DELETE, CREATE, GRANT
…
INSERT INTO sporty_league (team_name, player_name, jersey) VALUES (’PSG',’Zlatan’,10);SELECT player_name as nom_joueur FROM sporty_league WHERE team_name = ‘PSG’;
DevCenter
42
Drivers Natifs• Drivers DataStax : Java, Python, C#, C++, Ruby, NodeJS, PHP (et d’autres dans la
communauté)• Les clients utilisant les drivers natifs ont accès à différentes stratégies permettant
au client de rediriger intelligement les requêtes. En incluant:
• Répartition de Charge• Prise en compte des Data Centers• Prise en compte de la Latence• Prise en compte des Tokens
• Stratégie de Reconnexion• Stratégie de Renvoi
• Dégradation de la Cohérence• Plus d’autres ...
• http://www.datastax.com/download/clientdrivers©2014 DataStax Confidential. Do not distribute without consent.
43
DataStax Enterprise
OpsCenter - La visualisation de votre Cluster
Monitoring● Visualisation des
noeuds● Métriques & Alertes *● Activité des noeuds● Temps RéelOpérations● Configuration● Opération sur les noeuds● Opération de masse● Re-équilibrage *● Sauvegarde /
Restauration * ● Point In Time Recovery *
• Visuel, interface utilisateur Web.• Tâches d’installation, de configuration, et d’administration avec de simples clics• Support visuel des Services de Gestion Automatique DataStax• API REST permettant de scripter toutes les fonctions de OpsCenter• Fonctionne sur tout type de terminal (tablette, etc.)• Historique des métriques *• Accès sécurisé *
* Seulement dans Datastax Enterprise
DataStax Enterprise
In-MemoryOption de base de données en mémoire pour le stockage en RAM et non plus sur disque de certaines données pour un accès encore plus rapide.
SearchFonctionnaliés de recherche sur des données Cassandra via Apache Solr. Fonctionnalités avancées et performante sur de gros volumes.Analytics
Intégration de frameworks analytiques tels que Spark et Hadoop pour des analyses temps-réel ou en mode batch.
SupportSupport 24x7 avec des hot-fixes et des revues de performance.
Visual AdminUn outil visuel “DataStax OpsCenter” pour la supervision et l’administration d’un cluster Cassandra et DataStax.
Management ServicesServices d’administration automatique et suivi des performances.
Cassandra CertifiedUne version de Apache Cassandra certifiée, supportée et prête pour l’entreprise.
SecurityFonctionalités de sécurité d’entreprise comme le chiffrement des données sur disques, des traces d’audit et une authentification externe via Kerberos, LDAP/Active Directory
Puissance pour le Développement
Robustesse et Support pour la Production
46
Analytique Temps Réel - Spark• Intégration poussée avec Cassandra de Apache Spark• Spark = Traitement Distribué : “In-memory Map/Reduce”, multi-thread, meilleur pour
les itérations• GraphX, MLLib (Machine learning), SparkSQL, Spark Streaming (traitement temps réel)• Serveur Spark JDBC – Spark Job Server• Intégration de Solr• Partenariat DataStax / Databricks• x10 – x100 plus rapide que MapReduce
©2014 DataStax Confidential. Do not distribute without consent.
ReplicationCassandra
ApplicationOpérationnelle
NoeudsCassandra/Spark
Le SDK du « Big Data »
Cassandra
Executor
ExecutorSpark Worke
r(JVM)
Cassandra
Executor
ExecutorSpark Worke
r(JVM)
Architecture de l’intégration DSE / Spark
Node 1
Node 2Node 3
Node 4
Cassandra
Executor
ExecutorSpark Worke
r(JVM)
Cassandra
Executor
ExecutorSpark Worke
r(JVM)
Spark Master(JVM)
AppDrive
r
©2014 DataStax Confidential. Do not distribute without consent. 48
Enrichissement des Données
Batch Processing Machine Learning
Agrégats pré-calculésDonnées Sans ETL
Analytique Temps Réel ou Batch
Spark Use Cases
49
Load data from various sources
Analytics (join, aggregate, transform, …)
Sanitize, validate, normalize data
Schema migration,Data conversion
Le Futur de DataStax Enterprise
50
51
Demonstration : Tests, CQL, C#, Recherche avec Solr, Analytique avec Spark (PowerBI)
Confidential 52
Vérification du déploiement• DataStax OpsCenter http://clustername.westeurope.cloudapp.azure.com:8443/opscenter/• Azure Resources Explorer http://resources.azure.com• Groupe de ressource dans portail Azure http://portal.azure.com
Confidential 53
Tests de performancesOutil de stress test http://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsCStress_t.html• 1 Millions INSERT : cassandra-stress write n=1000000 -node 10.0.0.22 • 200 000 SELECT : cassandra-stress read n=200000 -node 10.0.0.22
Confidential 54
Windows et Driver C#• Cassandra 2.2 disponible pour Windowshttp://www.luketillman.com/developing-with-cassandra-on-windows/
• Support Windows pour DataStax Enterprise 5.0 (Q1 2015)• Driver C# DataStax
• GitHub https://github.com/datastax/csharp-driver
• Nuget https://www.nuget.org/packages/CassandraCSharpDriver/
• Documentation http://docs.datastax.com/en/developer/csharp-driver/2.7/csharp-driver/whatsNew2.html
Confidential 55
Recherche, DSE Search et Apache Solr• Mapping Cassandra / Solr
dsetool create_core killrvideo.videos generateResources=true• Indexation temps réel• Recherche via API REST ou via requêtes CQL• Documentation DSE Search http://docs.datastax.com/en/datastax_enterprise/4.8/
datastax_enterprise/srch/srchOverview.html
SELECT * FROM videos where solr_query='{"q":"description:cassandra"}';SELECT * FROM videos where solr_query='{"q":"tags:music","facet":{"field":"tags"}}';
Confidential 56
Analytique et Apache Spark• Connecteur Cassandra/Spark sur GitHub https://github.com/datastax/spark-cassandra-connector• Intégration et Support de Spark dans DataStax entreprise• Interface d’administration• Spark Shell, Spark Job et serveur JDBC/ODBC (SparkSQL)
Notebook Zeppelin
Confidential 57
Code Spark depuis un navigateurExemple Cassandra https://github.com/doanduyhai/incubator-zeppelinInterpréteur CQL disponible
Power BI Desktop
© 2014 DataStax, All Rights Reserved. Company Confidential 58
• Support for On-Prem Spark distributions“The new data source in this month’s release is support for On-Prem Spark distributions. Last month, we added support for Microsoft Azure HDInsight Spark, and this month we’re expanding to other Spark distributions.This new connector can be found under the “Other” category in the “Get Data” dialog.”http://blogs.msdn.com/b/powerbi/archive/2015/09/23/44-new-features-in-the-power-bi-desktop-september-update.aspx
• Ou utilisation directement du driver ODBC DataStax Cassandra (sans Spark)
59
Exemples d’Applications
Confidential 60
KillrVideo
Confidential 61
Projet ASP.NET MVC
http://www.planetcassandra.org/blog/building-an-asp-net-mvc-project-with-cassandra/
62
Conclusion
Cassandra – La Base de Données Distribuée leader
Bordeaux
Paris
Marseille
C *
C *
C *C *
Toujours DisponibleDistribution géographiquePerformance reconnue Extensibilité prédictible Simplicité OpérationnelleSéries Temporelles
63
DataStax Enterprise + DataWarehouse / Hadoop
© 2014 DataStax, All Rights Reserved. Company Confidential
Write IntensiveInternet of Things - Activity logs for fraud and recommendation
– Messages
64
Read Intensive Catalogue – Playlist –
Recommendation – Fraud Alert – Personalization
Operational Search, Dashboard and Reporting
Offline ApplicationsHistorical Analysis - OLAP -
Complex Analytics – Self Service BI
Operational Search, Dashboard and Reporting
Data WarehouseHadoop cluster Computation EngineMultidimensional Cube
Lambda Architecture – “Big Data”
65
New Data OLTP
Historic Data StoresBatch Analytics
1
3
4
5
2
Real-Time Analytics
©2014 DataStax Confidential. Do not distribute without consent.
Cas d’usage fréquents
Messagerie
Catalogue/Playlists
Détection de Fraude
Recommandation/ Personnalisation
Objets connectés/ Données de Capteurs
Confidential 67
Confidential 68
Essayez ! Testez !
69
Plus d’information• DataStax: http://www.datastax.com/
• Downloads: http://www.datastax.com/download
• Documentation: http://www.datastax.com/docs
• Developer Blog: http://www.datastax.com/dev/blog
• Academy: https://academy.datastax.com/
• Community Site: http://planetcassandra.org/
• Azure Marketplace https://azure.microsoft.com/fr-fr/marketplace/partners/datastax/datastax-enterprise-clusterbyol-production/
• Killrvideo http://www.killrvideo.com/
©2014 DataStax Confidential. Do not distribute without consent.
Merci [email protected]
We power the big data apps that transform business.
©2013 DataStax Confidential. Do not distribute without consent.