kafka spark - cassandra

Post on 12-Jan-2017

265 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

KafkaSpark(Cassandra)

24 Avril 2015

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

Key-Value

Hadoop

Oracle User Tracking

Logs HTTP

Métriques Métiers

Search Social Graph

Data Warehouse Recommendations

KAFKA

Broker de messagesType publish/subscribe

Broker de messages logsType publish/subscribe

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

Producer

Producer

Producer

Consumer

Consumer

Consumer

KAFKA

Broker de messagesType publish/subscribe

ScalableUn Cluster Kafka est

composé de plusieurs noeuds et partitionne

les données

Producer

Producer

Producer

NOEUD 1

NOEUD 2

NOEUD 3

KAFKA

PerformantDes centaines de MO/s

et des milliers de clients simultanés

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”

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

Les topics sont distribués en partitions

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

Topiccomposé de 3 partitions

Les partitions sont distribués sur les noeuds

Les messages consommés ne sont pas supprimés

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

messages

Le broker n’a pas connaissance des consumers

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

messages

A retenir:

Kafka est un broker de message durable, performant et scalable

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

Kafka @ Linkedin

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

Kafka @ Linkedin

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

Garantie de déliverabilitéZookeeper

Rebalancing / RepartitionRéplication

Patterns de consommation

Garantie de déliverabilitéZookeeper

Rebalancing / RepartitionRéplication

Patterns de consommation

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

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

utilisant des machines de commodité

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

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

Analyse de Graphs

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

Machine Learning

Recommandations de contenusSegmentation / Clustering

ClassificationPublicités ciblées

Descente de gradientetc...

Performant car tout en mémoire

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

Spark manipule et transforme des RDD

Resilient Distributed Dataset

Collections immuables d’objets

distribués entre plusieurs machines

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

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()

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()

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)

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

streaming - micro batch - batch

Spark ⇒ Spark Streaming

ré-utilisation du codeVS storm + MapReduce

Spark ⇒ Spark Streaming

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

heures

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

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

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

A retenir:

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

en batch ET streaming

Logs HTTP

Beacons Utilisateurs

BDD Utilisateurs

DashBoards

BDD Retargeting

Twitter

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

top related