Paris stormusergroup intrudocution
-
Upload
parisstormug -
Category
Documents
-
view
42 -
download
1
Transcript of Paris stormusergroup intrudocution
![Page 1: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/1.jpg)
Benjamin Houdu @benjaminhoudu
Architecte, Zenika
Florian Hussonnois @fhussonnois
Lead Développeur Java, Zenika
![Page 2: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/2.jpg)
Stockage
HDFS• Système BigData et Temps-réel
• Qu’est ce que Storm ?
• Les principaux concepts
• Parallélisme et fiabilité de traitement
• Architecture physique et tolérance à la panne
1
2
3
3
4
![Page 3: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/3.jpg)
![Page 4: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/4.jpg)
![Page 5: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/5.jpg)
Stockage
HDFS
Flic
kr. B
y jo
ne
l han
op
ol
Flic
kr. B
y fd
eco
mit
e
Flic
kr. B
y N
OA
A's
Nat
ion
al O
cean
Se
rvic
e
![Page 6: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/6.jpg)
![Page 7: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/7.jpg)
Données absorbées par le batch Non absorbées
Quelques heuresde données
![Page 8: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/8.jpg)
Vision erronée de la réalité
Données absorbées par le batch Non absorbées
Quelques heuresde données
![Page 9: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/9.jpg)
Capteurs / logs
Cliques web
Transactionsfinancières
1
![Page 10: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/10.jpg)
Capteurs / logs
Cliques web
Transactionsfinancières
Data Lake
2
1
![Page 11: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/11.jpg)
BatchView
(Map-Reduce)
Capteurs / logs
Cliques web
Transactionsfinancières
Data Lake
2 3
1
![Page 12: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/12.jpg)
BatchView
(Map-Reduce)
Capteurs / logs
Cliques web
Transactionsfinancières
Data Lake
Real TimeView
TraitementsAnalyses
4
2 3
1
![Page 13: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/13.jpg)
BatchView
(Map-Reduce)
Capteurs / logs
Cliques web
Transactionsfinancières
Data Lake
2 3
Real TimeView
TraitementsAnalyses
45
1
![Page 14: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/14.jpg)
BatchView
(Map-Reduce)
Capteurs / logs
Cliques web
Transactionsfinancières
Data Lake
2 3
Real TimeView
TraitementsAnalyses
45
1
![Page 15: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/15.jpg)
BatchView
(Map-Reduce)
Capteurs / logs
Cliques web
Transactionsfinancières
Data Lake
2 3
Real TimeView
TraitementsAnalyses
45
1
![Page 16: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/16.jpg)
![Page 17: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/17.jpg)
Stockage
HDFS
Créé par Nathan Marz @BackType Analyse en temps réel d'impact sur les réseaux sociaux
Open-source(Twitter) Septembre 2011 Licence Eclipse Public 1.0 V 0.5.2
Evolution rapideIncubateur Apache Septembre 2013
0.9.1 10 Février 2014
0.9.2 25 Juin 2014
0.9.3 - RC 20 Octobre 2014
« Apache Top-Level » projet depuis Septembre 2014
![Page 18: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/18.jpg)
Stockage
HDFSLogs serveurs, clicks, capteurs
Mise à jour continue de bases de données
Paralléliser d’intenses calculs
![Page 19: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/19.jpg)
Traitement au fil de l'eau et en continu de gros volumes de données issues de flux
![Page 20: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/20.jpg)
Traitement au fil de l'eau et en continu de gros volumes de données issues de flux
![Page 21: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/21.jpg)
Plusieurs milliers de workers / clustersParallélisme
![Page 22: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/22.jpg)
Plusieurs milliers de workers / clustersParallélisme
Réassignement automatique des tâches en échecs
![Page 23: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/23.jpg)
Plusieurs milliers de workers / clustersParallélisme
Réassignement automatique des tâches en échecs
Fiabilité de traitement de chaque messageSémantique : au moins une fois & exactement une fois
![Page 24: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/24.jpg)
Plusieurs milliers de workers / clustersParallélisme
Réassignement automatique des tâches en échecs
Fiabilité de traitement de chaque messageSémantique : au moins une fois & exactement une fois
Possibilité d’implémenter la logique de traitement avec n'importe quels langages
![Page 25: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/25.jpg)
![Page 26: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/26.jpg)
Stockage
HDFS
Principale structure de données
Liste de valeurs nommées – typage dynamique
Immuable
![Page 27: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/27.jpg)
Stockage
HDFS
Flux de données
Séquence illimité de tuples
Un flux de données est créé et traité en temps réel de manière distribué.
Tuple Tuple TupleTuple
![Page 28: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/28.jpg)
Stockage
HDFSSource de flux de données.
Se connecte à une source de données externe puis émet des Tuples.
Output streams
![Page 29: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/29.jpg)
Stockage
HDFSSource de flux de données.
Se connecte à une source de données externe puis émet des Tuples.
Output streams Kafka RabbitMQ Kestrel Redis - PublishSubscribe
![Page 30: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/30.jpg)
Stockage
HDFSPrincipaux composants pour manipuler les flux de données.
Encapsulent la logique des traitements à appliquer sur un où plusieurs flux.
Input stream
Flic
kr. B
y ka
vem
an74
3
![Page 31: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/31.jpg)
Stockage
HDFSInput stream
Souscrit à n’importe quels flux devant être: Transformés Filtrés Agrégés
Peut lire / écrire depuis et vers une base de données
![Page 32: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/32.jpg)
Stockage
HDFS Un bolt peut émettre de nouveaux flux.
Input stream
Output streams
![Page 33: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/33.jpg)
Stockage
HDFS Un bolt peut émettre de nouveaux flux.
Input stream
Output streams Kafka HDFS / HBase Cassandra MongoDB Elasticsearch
![Page 34: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/34.jpg)
![Page 35: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/35.jpg)
Stockage
HDFS
Graphe orienté acyclique (DAG) Modélisation d’un Workflow
Les Bolts/Spout s’exécutent en parallèle en tant que tâches.
Une topologie s’exécute indéfiniment.
![Page 36: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/36.jpg)
![Page 37: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/37.jpg)
Les tuples sont distribués aléatoirement et de manière équitable entre les tâches.
![Page 38: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/38.jpg)
Field=A
Field=B
Le flux est partitionné en fonction d’un ou plusieurs champs.
![Page 39: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/39.jpg)
Le flux est répliqué vers l’ensemble des tâches
![Page 40: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/40.jpg)
La totalité du flux est redirigé vers une unique tâche.
![Page 41: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/41.jpg)
![Page 42: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/42.jpg)
Parallélisme = 1
Parallélisme = 4
Parallélisme = 2
Chaque (instance) est exécuté par un exécuteur.
Chaque (thread) s’exécute au sein d’un (JVM).
![Page 43: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/43.jpg)
Parallélisme = 1
Parallélisme = 4
Parallélisme = 2
Storm répartit de manière égale le nombre d’executor à travers les workers.
![Page 44: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/44.jpg)
Parallélisme = 1
Parallélisme = 4
Parallélisme = 2, Tâches = 6
Chaque exécute séquentiellement 3 tâches
![Page 45: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/45.jpg)
![Page 46: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/46.jpg)
Storm garantit que chaque « tuple spout » émis sera traité dans son intégralité par la topologie.
Un tuple peut être ancré avec un ou plusieurs tuples parents.
Un tuple peut ne pas être rattaché à un arbre.
![Page 47: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/47.jpg)
Les bolts informent le système de la réussite du traitement d’un tuple
![Page 48: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/48.jpg)
Les bolts informent le système de l’échec du traitement d’un tuple
![Page 49: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/49.jpg)
Un tuple est automatiquement considéré en échec après un certain lapse de temps.
Timeout à 30 secondes par défaut
![Page 50: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/50.jpg)
![Page 51: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/51.jpg)
Un de par tuple
![Page 52: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/52.jpg)
Un de par tuple
![Page 53: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/53.jpg)
Storm utilise des bolts systèmes (ackers) pour suivre l’état de complétion d’un tuple spout.
Etat de l’arbre de tuples
![Page 54: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/54.jpg)
Le tuple B est ancré au tuple A lorsqu’il est émis.
Etat de l’arbre de tuples
![Page 55: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/55.jpg)
Le bolt transmet l’état de l’arbre à la tâche acker.
Etat de l’arbre de tuples
{A} XOR {A} XOR {B} != 0
![Page 56: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/56.jpg)
Etat de l’arbre de tuples
{A} XOR {A} XOR {B} != 0 {A} XOR {A} XOR {B} XOR {B} = 0
![Page 57: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/57.jpg)
La tâche acker notifie la tâche spoutdu succès du traitement du tuple A.
Etat de l’arbre de tuples
{A} XOR {A} XOR {B} != 0 {A} XOR {A} XOR {B} XOR {B} = 0
![Page 58: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/58.jpg)
![Page 59: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/59.jpg)
ZookeeperQuorum
WorkersWorkers
(Master node)
(Slave node)
Architecture master/slave NSPOF
(Slave node)
![Page 60: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/60.jpg)
ZookeeperQuorum
WorkersWorkers
(Master node)
(Slave node) (Slave node)
Un service centralisé pour maintenir des informations de configuration, fournir une synchronisation distribuée, etc.
Coordonne le cluster Storm
Permet à nimbus de découvrir les Supervisors
![Page 61: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/61.jpg)
ZookeeperQuorum
WorkersWorkers
(Master node)
(Slave node) (Slave node)
Distribue le code à travers le cluster
Assigne les tâches
Traite les erreurs et réassigne les tâches en conséquence
![Page 62: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/62.jpg)
ZookeeperQuorum
(Master node)
(Slave node) (Slave node)
$ /bin/storm jar
Nimbus calcule les assignements des tâches et les envoie à Zookeeper.
Les supervisors sont notifiés via Zookeeper.
Chaque supervisor récupère le code depuis nimbus (Thrift)
1
2
3
1
23
![Page 63: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/63.jpg)
ZookeeperQuorum
WorkersWorkers
(Master node)
(Slave node) (Slave node)
Les supervisors démarrent le nombre de workers nécessaires à l’exécution de la topologie
4
4
![Page 64: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/64.jpg)
![Page 65: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/65.jpg)
ZookeeperQuorum
WorkersWorkers
(Master node)
(Slave node) (Slave node)
WorkerLe supervisor redémarre le worker.Nimbus peut réassigner les tâches.
SupervisorNimbus réassigne les tâches.
NimbusLes topologies continuent de fonctionner.Les ré-assignements sont impossibles.
Heartbeat
![Page 66: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/66.jpg)
![Page 67: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/67.jpg)
Stockage
HDFS Framework au dessus de Storm
Orienté micro-batch
Sémantique « exactement une fois »
(Distributed Remote Procedure Call)
Paralléliser des calculs intenses
Topologie coordonnée via une serveur DRPC
![Page 68: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/68.jpg)
Documentation officielle: http://storm.apache.org
Mailing liste
Storm Blueprints: Patterns for Distributed Real-time Computation
P. Taylor Goetz, Brian O’Neil
Big Data - Principles and best practices of scalable realtime data systems,
Nathan Marz and James Warren
![Page 69: Paris stormusergroup intrudocution](https://reader033.fdocuments.net/reader033/viewer/2022052909/55980dab1a28ab352c8b485c/html5/thumbnails/69.jpg)
http://www.meetup.com/Paris-Storm-User-Group/