Datastax Cassandra + Spark Streaming

32
Cassandra et Spark Streaming Architecture événementielle et Analytique temps réel Victor Coustenoble Petit Déjeuner OCTO Technology Ingénieur Solutions 14/04/15 [email protected] @vizanalytics

Transcript of Datastax Cassandra + Spark Streaming

Page 1: Datastax Cassandra + Spark Streaming

Cassandra et Spark Streaming

Architecture événementielle et Analytique temps réel

Victor Coustenoble Petit Déjeuner OCTO TechnologyIngénieur Solutions 14/04/[email protected]@vizanalytics

Page 2: Datastax Cassandra + Spark Streaming

Agenda

Confidential 2

• Cassandra / DataStax

• Spark / Spark Streaming

• Architecture / Cas métiers

• Démonstrations

Page 3: Datastax Cassandra + Spark Streaming

3

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.

Page 4: Datastax Cassandra + Spark Streaming

Cas d’usage fréquents

Messagerie

Collections/

Playlists

Détection de

Fraude

Recommandation/

Personnalisation

Objets connectés/

Données de Capteurs

Page 5: Datastax Cassandra + Spark Streaming

DataStax

Fondé en avril 2010

~35 500+

Santa Clara, Austin, New York, London, Paris, Sydney

400+Employés Pourcent Clients

5

Page 6: Datastax Cassandra + Spark Streaming

Straightening the road

RELATIONAL DATABASES

CQL SQL

OpsCenter / DevCenter Management tools

DSE for search & analytics Integration

Security Security

Support, consulting & training 30 years ecosystem

Page 7: Datastax Cassandra + Spark Streaming

• Sans Maître-Esclave (peer-to-peer), sans Point Unique de Défaillance (No SPOF)

• Distribuée avec la possibilité de Data Center

• 100% Disponible (replication)

• Massivement scalable

• Montée en charge linéaire

• Haute Performance (lecture ET écriture)

• Multi Data Center

• Séries Temporelles

• Multi Modèle

• Simple à Exploiter

• Language CQL (comme SQL)

• Outils OpsCenter / DevCenter

Apache Cassandra™

7

Page 8: Datastax Cassandra + Spark Streaming

Confidential 8

DataStax Enterprise

Confiance

d’utilisatio

n

Fonctionnalités

d’entreprise

Page 9: Datastax Cassandra + Spark Streaming

DataStax Enterprise

DataStax supporte la communauté open source et les entreprises

9

Open Source/Communauté Enterprise Software

• DataStax emploie le président du

projet Apache et développe 80+% du

code de Apache Cassandra

• DataStax Community Edition

• DataStax Simple OpsCenter

• DataStax DevCenter

• DataStax Drivers/Connecteurs

• Documentation en ligne

• Formation en ligne

• Mailing lists et forums

• DataStax Enterprise Edition

• Cassandra Certifié

• In-Memory

• Analytique intégré (Hadoop, Spark)

• Recherche intégrée (Solr)

• Securité d’entreprise

• DataStax OpsCenter Avancé

• Services d’Administration Automatique

• Support Expert

• Aide et Consulting

• Formation Professionnelle

Page 10: Datastax Cassandra + Spark Streaming

Confidential 10

Pourquoi Spark + Cassandra ?

Page 11: Datastax Cassandra + Spark Streaming

Analytique Opérationnelle / Temps Réel

©2014 DataStax Confidential. Do not distribute without consent. 11

Enrichissement des Données

Contraintes d’intégrité

Détection de dépassement de seuil

Batch Processing

Machine Learning

Agrégats pré-calculés

Création de KPI

Données

Traitement

Flux

Page 12: Datastax Cassandra + Spark Streaming

Cassandra a besoin d’un framework de traitement distribué

Pour des requêtes indépendates du modèle de données

Pour des opérations cross-table (JOIN, UNION)

Pour des analyses complexes (machine learning)

Pour des transformation, des aggrégations

Pour des traitements de flux

Page 13: Datastax Cassandra + Spark Streaming

• Spark = Traitement Distribué

• “In-memory Map/Reduce”, multi-thread, caching

• Intégration poussée de Spark avec Cassandra

• Partenariat DataStax / Databricks

• x10 – x100 plus rapide que Hadoop MapReduce

©2014 DataStax Confidential. Do not distribute without consent. 13

Replication

Cassandra

Application

Opérationnelle

Noeuds

Spark

Le SDK du « Big Data »

Page 14: Datastax Cassandra + Spark Streaming

Cas d’utilisation de Spark pour Cassandra

14

Load data from various

sources

Analytics (join, aggregate, transform, …)

Sanitize, validate, normalize data

Schema migration,

Data conversion

Page 15: Datastax Cassandra + Spark Streaming

©2013 DataStax Confidential. Do not distribute without consent. 15

• Fast, distributed, scalable and fault

tolerant cluster compute system

• Enables Low-latency with complex

analytics

• Developed in 2009 at UC Berkeley

AMPLab, open sourced in 2010, and

became a top-level Apache project in

February, 2014

Page 16: Datastax Cassandra + Spark Streaming

Spark – Représentation Conceptuelle

©2013 DataStax Confidential. Do not distribute without consent. 16

RDDRDD

RDDRDD

Transformations

Action Value

counts = lines.flatMap(lambda s: s.split(“ ”)) \.map(lambda word: (word, 1)) \.reduceByKey(lambda x, y: x + y)

counts.saveAsTextFile(sys.argv[2])

lines = sc.textFile(sys.argv[1])

1

2

3

Resilient Distributed Datasets (RDDs) – Spark’s datasets

Fault tolerant collection of elements that enable parallel processing

Transformation and Actions are executed against RDDs

Can persist in Memory, on Disk, or both

Can be partitioned to control parallel processing

Can be reused

Page 17: Datastax Cassandra + Spark Streaming

Composants Spark + Cassandra

Shark

or

Spark SQLStructured

Spark

StreamingReal-time

MLlibMachine learning

Spark (General execution engine)

GraphXGraph

Cassandra

Page 18: Datastax Cassandra + Spark Streaming

Connecteur Cassandra Spark

C*

C*

C*C*

Spark Executor

C* Java Driver

Spark-Cassandra Connector

User Application

Cassandra

Page 19: Datastax Cassandra + Spark Streaming

Connecteur Cassandra Spark

•Tables Cassandra tables exposées en temps que RDDs Spark

•Chargement des données depuis Cassandra vers Spark

•Ecriture des données depuis Spark vers Cassandra

•Object mapper : Mapping des tables Cassandra en objets Scala/Java

•Conversions des types Cassandra en type Scala/Java

•Sélection et filtres des données au niveau de Cassandra

•API Scala, Java et Pyhton

Page 20: Datastax Cassandra + Spark Streaming

Lecture des données

val table_rdd = sc

.cassandraTable[CassandraRow]("db", "tweets")

.select("user_name", "message")

.where("user_name = ?", "ewa")

row

representation keyspace table

server side column

and row selection

Page 21: Datastax Cassandra + Spark Streaming

Ecriture des données

CREATE TABLE test.words(word TEXT PRIMARY KEY, count INT);

val collection_rdd = sc.parallelize(Seq(("foo", 2), ("bar", 5)))

collection_rdd.saveToCassandra("test", "words", SomeColumns("word", "count"))

cqlsh:test> select * from words;

word | count

------+-------

bar | 5

foo | 2

(2 rows)

Page 22: Datastax Cassandra + Spark Streaming

“Je veux des résultats en continue depuis un flux de données”

“Je veux une garantie que mes messages soient traités une seule fois”

DStream (Discretized Stream)

Flux continu de micro batchs pour:

• Traitements complexes avec un minimal d’effort

• Calculs sur des flux dans un petit interval de temps

Une transformation sur DStream = transformations sur ses RDDs

Quand le batch n’est plus suffisant

Page 23: Datastax Cassandra + Spark Streaming

Spark Streaming Input

Données en entrée depuis:

• une socket TCP

• des messages depuis Kafka

• des logs depuis Flume

• des fichiers depuis HDFS (monitorer la création de

nouveaux fichiers)

• une file MQ (type ZeroMQ)

• des tweets depuis Twitter (API Twitter4J)

• …

Page 24: Datastax Cassandra + Spark Streaming

Utilisation de Spark Streaming

L’API de Spark Streaming est identique à l’API classique de Spark

=> Des portions de code batch et de flux peuvent être partagés

import com.datastax.spark.connector.streaming._

// Spark connection optionsval conf = new SparkConf(true)...

// streaming with 1 second batch windowval ssc = new StreamingContext(conf, Seconds(1))

// stream inputval lines = ssc.socketTextStream(serverIP, serverPort)

// count wordsval wordCounts = lines.flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)

// stream outputwordCounts.saveToCassandra("test", "words")

// start processingssc.start() ssc.awaitTermination()

Page 25: Datastax Cassandra + Spark Streaming

Et dans une architecture ?

Page 26: Datastax Cassandra + Spark Streaming

Cassandra + Spark = Recommandation + Analytique

©2014 DataStax Confidential. Do not distribute without consent. 26

Enrichissement des Données

Batch Processing

Machine Learning

Agrégats pré-calculésDonnéesPas d’ETL

Page 27: Datastax Cassandra + Spark Streaming

“Pour du calcul de prévisions, j’ai besoin d’un accès rapide à

mes données historiques couplé à des données en temps réel

provenant d’un flux”

Page 28: Datastax Cassandra + Spark Streaming

Architecture Lambda

Une architecture de traitement de données conçue pour gérer des énormes

quantités de données en tirant avantage à la fois des méthodes de traitement batch

et des traitements de flux.

Page 29: Datastax Cassandra + Spark Streaming

Architecture Lambda

Page 30: Datastax Cassandra + Spark Streaming

Confidential 30

Applications Capteurs Web Mobiles

Détection

d’intrusion

Détection de

panne

Analyse de

navigation

Analyse de

métriques

réseaux

Détection de

fraude

Optimisation

dynamique de

processus

Recommandatio

ns

Publicité

géolocalisée

Traitement de LogPlanning de

logistique

Analyse de

sentiment

Analyse et traitement temps réel

Page 31: Datastax Cassandra + Spark Streaming

Démonstrations Spark Streaming + Cassandra

Twitter

• Dans des intervals de 5 secondes, comptage et stockage du nombre de Tweetscontenant les mots "love", "hate", "cat" ou "lol"

• https://github.com/doanduyhai/Cassandra-Spark-Demo

Meetup RSVP

• Nombre total de participants par pays (depuis le démarrage de l’application). Rafraichissement toutes les 5 secondes, traitement simple d’un flux.

• Les sujets des Meetups les plus populaires dans les 5 dernières minutes. Rafraichissement toutes les 10 secondes, traitement dans une plage de temps.

• https://github.com/rstml/datastax-spark-streaming-demo

© 2014 DataStax, All Rights Reserved. Company Confidential 31

Page 32: Datastax Cassandra + Spark Streaming

Merci, Questions ?

We power the big data apps that transform business.

©2013 DataStax Confidential. Do not distribute without consent.

[email protected]

@vizanalytics