Download - Kafka spark - cassandra

Transcript
Page 1: Kafka   spark - cassandra

KafkaSpark(Cassandra)

24 Avril 2015

Page 2: Kafka   spark - cassandra
Page 3: Kafka   spark - cassandra
Page 4: Kafka   spark - cassandra

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

Page 5: Kafka   spark - cassandra

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

Page 6: Kafka   spark - cassandra

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

Page 7: Kafka   spark - cassandra

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

KAFKA

Page 8: Kafka   spark - cassandra

Broker de messagesType publish/subscribe

Page 9: Kafka   spark - cassandra

Broker de messages logsType publish/subscribe

Page 10: Kafka   spark - cassandra

log séquence de messages en append-only ordonnés dans le temps

Page 11: Kafka   spark - cassandra

Producer

Producer

Producer

Consumer

Consumer

Consumer

KAFKA

Broker de messagesType publish/subscribe

Page 12: Kafka   spark - cassandra

ScalableUn Cluster Kafka est

composé de plusieurs noeuds et partitionne

les données

Producer

Producer

Producer

NOEUD 1

NOEUD 2

NOEUD 3

KAFKA

Page 13: Kafka   spark - cassandra

PerformantDes centaines de MO/s

et des milliers de clients simultanés

Page 14: Kafka   spark - cassandra

PersistentLes messages sont

stockés, en ordre, sur le disque et repliqués

dans le cluster

“On typical server hardware today, completely random memory access on a range much larger than cache size can be an order of magnitude or more slower than purely sequential access”

Page 15: Kafka   spark - cassandra

Les producers envoient des messages à des topicsex: 6play.web, shopper.ws

Page 16: Kafka   spark - cassandra

Les topics sont distribués en partitions

Page 17: Kafka   spark - cassandra

Chaque Message se voit attribuer un numéro, l’offset

Topiccomposé de 3 partitions

Page 18: Kafka   spark - cassandra

Les partitions sont distribués sur les noeuds

Page 19: Kafka   spark - cassandra
Page 20: Kafka   spark - cassandra

Les messages consommés ne sont pas supprimés

Des consumers peuvent lire plus lentement que d’autre, voir rejouer les

messages

Page 21: Kafka   spark - cassandra

Le broker n’a pas connaissance des consumers

Les consumers sont responsables de suivre leur avancées dans le flot de

messages

Page 22: Kafka   spark - cassandra

A retenir:

Kafka est un broker de message durable, performant et scalable

Page 23: Kafka   spark - cassandra

800 milliards de messagessoit 175 Terabytes ajoutés650 Terabytes de messages consommés

Kafka @ Linkedin

Page 24: Kafka   spark - cassandra

800 milliards de messagessoit 175 Terabytes ajoutés650 Terabytes de messages consomméschaque jour

Kafka @ Linkedin

Page 25: Kafka   spark - cassandra

800 milliards de messagessoit 175 Terabytes ajoutés650 Terabytes de messages consomméschaque jour

13 millions de msg /s en pointesoit 2,75Gb /s

1100 brokers60 Clusters

Kafka @ Linkedin

Page 26: Kafka   spark - cassandra

Garantie de déliverabilitéZookeeper

Rebalancing / RepartitionRéplication

Patterns de consommation

Page 27: Kafka   spark - cassandra

Garantie de déliverabilitéZookeeper

Rebalancing / RepartitionRéplication

Patterns de consommation

Page 28: Kafka   spark - cassandra
Page 29: Kafka   spark - cassandra
Page 30: Kafka   spark - cassandra

Framework de calcul distribué >> Hadoop et Map/reduce

Page 31: Kafka   spark - cassandra

Effectuer des traitements de masse sur un gros volume de données en

utilisant des machines de commodité

Page 32: Kafka   spark - cassandra
Page 33: Kafka   spark - cassandra

Analyticstop 10 des vidéos visionnées par les femmes de 25 à 30 ansen province connectée via facebook depuis un mobile entre 12H et 14H

Page 34: Kafka   spark - cassandra

ETL

Merge de 4 bases de donnéesjointes avec les 100 derniers fichiers CSVaggrégation sur 10 jourset sortie en JSON sur S3

Extract, Transform, Load

Page 35: Kafka   spark - cassandra

Analyse de Graphs

Qui connaît l’homme qui a vu l’homme qui a vu l’homme qui a vu l’ours ?

Page 36: Kafka   spark - cassandra

Machine Learning

Recommandations de contenusSegmentation / Clustering

ClassificationPublicités ciblées

Descente de gradientetc...

Page 37: Kafka   spark - cassandra

Performant car tout en mémoire

Contrairement à Hadoop/MR qui stocke sur disque les résultats intermédiaires

Page 38: Kafka   spark - cassandra

Spark manipule et transforme des RDD

Resilient Distributed Dataset

Collections immuables d’objets

distribués entre plusieurs machines

Page 39: Kafka   spark - cassandra

PHP

is

a

popular

general-purpose

scripting

language

well-suited

for

web development

RDD de strings RDD de Int

11

32

3

5

987

65

423

8

203

99

noeud 1

noeud 2

noeud 3

Page 40: Kafka   spark - cassandra

RDD de Int

11

32

3

5

987

65

423

8

203

99

noeud 1

noeud 2

noeud 3

On applique des transformations et des actions

sur les RDD

map()flatMap()reduceByKey()filter()groupByKeys()join()union()

Page 41: Kafka   spark - cassandra

RDD de Int

11

32

3

5

987

65

423

8

203

99

noeud 1

noeud 2

noeud 3

On applique des transformations et des actions

sur les RDD

top()take()collect()takeOrdered()foreach()saveAsTextFile()

Page 42: Kafka   spark - cassandra

RDD de Int

11

32

3

5

987

65

423

8

203

99

noeud 1

noeud 2

noeud 3

1038

488

310

1836

reduce(a, b: a + b)

Page 43: Kafka   spark - cassandra

file = spark.textFile("hdfs://...")

counts = file.flatMap(lambda line: line.split(" ")) \ .map(lambda word: (word, 1)) \ .reduceByKey(lambda a, b: a + b)

counts.saveAsTextFile("hdfs://...")

Word Count Python

Page 44: Kafka   spark - cassandra

streaming - micro batch - batch

Spark ⇒ Spark Streaming

Page 45: Kafka   spark - cassandra

ré-utilisation du codeVS storm + MapReduce

Spark ⇒ Spark Streaming

streaming - micro batch - batchtemps réel < 1 min min

heures

Page 46: Kafka   spark - cassandra

Spark Streaming

Le flux de données continu est découpé en RDD de 10s

t0 t1 t2 t3

RDD

10s 10s 10s 10s

RDD RDD RDD

Page 47: Kafka   spark - cassandra
Page 48: Kafka   spark - cassandra

Driver / Worker nodesStratégie de shufflingBroadcastingBlinkDBTachyonYarn / Mesos / Standalone

Page 49: Kafka   spark - cassandra

Driver / Worker nodesStratégie de shufflingBroadcastingBlinkDBTachyonYarn / Mesos / Standalone

Page 50: Kafka   spark - cassandra

A retenir:

Spark est un framework pour traiter d’importants volumes de données à grande échelle

en batch ET streaming

Page 51: Kafka   spark - cassandra

Logs HTTP

Beacons Utilisateurs

BDD Utilisateurs

DashBoards

BDD Retargeting

Twitter

Page 52: Kafka   spark - cassandra
Page 53: Kafka   spark - cassandra

BigQuery - Druid - Samza - Storm - S4 - Apache TEZ ...