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
BigQuery - Druid - Samza - Storm - S4 - Apache TEZ ...
Top Related