69
Benjamin Houdu @benjaminhoudu Architecte, Zenika Florian Hussonnois @fhussonnois Lead Développeur Java, Zenika

Apache Storm - Introduction au traitement temps-réel avec Storm

Embed Size (px)

DESCRIPTION

Introduction au traitement temps-réel avec Storm

Citation preview

Page 1: Apache Storm - Introduction au traitement temps-réel avec Storm

Benjamin Houdu @benjaminhoudu

Architecte, Zenika

Florian Hussonnois @fhussonnois

Lead Développeur Java, Zenika

Page 2: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 4: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 5: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 7: Apache Storm - Introduction au traitement temps-réel avec Storm

Données absorbées par le batch Non absorbées

Quelques heuresde données

Page 8: Apache Storm - Introduction au traitement temps-réel avec Storm

Vision erronée de la réalité

Données absorbées par le batch Non absorbées

Quelques heuresde données

Page 9: Apache Storm - Introduction au traitement temps-réel avec Storm

Capteurs / logs

Cliques web

Transactionsfinancières

1

Page 10: Apache Storm - Introduction au traitement temps-réel avec Storm

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2

1

Page 11: Apache Storm - Introduction au traitement temps-réel avec Storm

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

1

Page 12: Apache Storm - Introduction au traitement temps-réel avec Storm

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

Real TimeView

TraitementsAnalyses

4

2 3

1

Page 13: Apache Storm - Introduction au traitement temps-réel avec Storm

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

Real TimeView

TraitementsAnalyses

45

1

Page 14: Apache Storm - Introduction au traitement temps-réel avec Storm

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

Real TimeView

TraitementsAnalyses

45

1

Page 15: Apache Storm - Introduction au traitement temps-réel avec Storm

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

Real TimeView

TraitementsAnalyses

45

1

Page 16: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 17: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Stockage

HDFSLogs serveurs, clicks, capteurs

Mise à jour continue de bases de données

Paralléliser d’intenses calculs

Page 19: Apache Storm - Introduction au traitement temps-réel avec Storm

Traitement au fil de l'eau et en continu de gros volumes de données issues de flux

Page 20: Apache Storm - Introduction au traitement temps-réel avec Storm

Traitement au fil de l'eau et en continu de gros volumes de données issues de flux

Page 21: Apache Storm - Introduction au traitement temps-réel avec Storm

Plusieurs milliers de workers / clustersParallélisme

Page 22: Apache Storm - Introduction au traitement temps-réel avec Storm

Plusieurs milliers de workers / clustersParallélisme

Réassignement automatique des tâches en échecs

Page 23: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 26: Apache Storm - Introduction au traitement temps-réel avec Storm

Stockage

HDFS

Principale structure de données

Liste de valeurs nommées – typage dynamique

Immuable

Page 27: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Stockage

HDFSSource de flux de données.

Se connecte à une source de données externe puis émet des Tuples.

Output streams

Page 29: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Stockage

HDFS Un bolt peut émettre de nouveaux flux.

Input stream

Output streams

Page 33: Apache Storm - Introduction au traitement temps-réel avec Storm

Stockage

HDFS Un bolt peut émettre de nouveaux flux.

Input stream

Output streams Kafka HDFS / HBase Cassandra MongoDB Elasticsearch

Page 34: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 35: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 37: Apache Storm - Introduction au traitement temps-réel avec Storm

Les tuples sont distribués aléatoirement et de manière équitable entre les tâches.

Page 38: Apache Storm - Introduction au traitement temps-réel avec Storm

Field=A

Field=B

Le flux est partitionné en fonction d’un ou plusieurs champs.

Page 39: Apache Storm - Introduction au traitement temps-réel avec Storm

Le flux est répliqué vers l’ensemble des tâches

Page 40: Apache Storm - Introduction au traitement temps-réel avec Storm

La totalité du flux est redirigé vers une unique tâche.

Page 41: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 42: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Parallélisme = 1

Parallélisme = 4

Parallélisme = 2, Tâches = 6

Chaque exécute séquentiellement 3 tâches

Page 45: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 46: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Les bolts informent le système de la réussite du traitement d’un tuple

Page 48: Apache Storm - Introduction au traitement temps-réel avec Storm

Les bolts informent le système de l’échec du traitement d’un tuple

Page 49: Apache Storm - Introduction au traitement temps-réel avec Storm

Un tuple est automatiquement considéré en échec après un certain lapse de temps.

Timeout à 30 secondes par défaut

Page 50: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 51: Apache Storm - Introduction au traitement temps-réel avec Storm

Un de par tuple

Page 52: Apache Storm - Introduction au traitement temps-réel avec Storm

Un de par tuple

Page 53: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Le tuple B est ancré au tuple A lorsqu’il est émis.

Etat de l’arbre de tuples

Page 55: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

Etat de l’arbre de tuples

{A} XOR {A} XOR {B} != 0 {A} XOR {A} XOR {B} XOR {B} = 0

Page 57: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 59: Apache Storm - Introduction au traitement temps-réel avec Storm

ZookeeperQuorum

WorkersWorkers

(Master node)

(Slave node)

Architecture master/slave NSPOF

(Slave node)

Page 60: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 65: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm
Page 67: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

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: Apache Storm - Introduction au traitement temps-réel avec Storm

http://www.meetup.com/Paris-Storm-User-Group/