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

Paris stormusergroup intrudocution

Embed Size (px)

Citation preview

Page 1: Paris stormusergroup intrudocution

Benjamin Houdu @benjaminhoudu

Architecte, Zenika

Florian Hussonnois @fhussonnois

Lead Développeur Java, Zenika

Page 2: Paris stormusergroup intrudocution

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
Page 4: Paris stormusergroup intrudocution
Page 5: Paris stormusergroup intrudocution

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
Page 7: Paris stormusergroup intrudocution

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

Quelques heuresde données

Page 8: Paris stormusergroup intrudocution

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

Capteurs / logs

Cliques web

Transactionsfinancières

1

Page 10: Paris stormusergroup intrudocution

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2

1

Page 11: Paris stormusergroup intrudocution

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

1

Page 12: Paris stormusergroup intrudocution

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

Real TimeView

TraitementsAnalyses

4

2 3

1

Page 13: Paris stormusergroup intrudocution

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

Real TimeView

TraitementsAnalyses

45

1

Page 14: Paris stormusergroup intrudocution

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

Real TimeView

TraitementsAnalyses

45

1

Page 15: Paris stormusergroup intrudocution

BatchView

(Map-Reduce)

Capteurs / logs

Cliques web

Transactionsfinancières

Data Lake

2 3

Real TimeView

TraitementsAnalyses

45

1

Page 16: Paris stormusergroup intrudocution
Page 17: Paris stormusergroup intrudocution

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

Stockage

HDFSLogs serveurs, clicks, capteurs

Mise à jour continue de bases de données

Paralléliser d’intenses calculs

Page 19: Paris stormusergroup intrudocution

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

Page 20: Paris stormusergroup intrudocution

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

Page 21: Paris stormusergroup intrudocution

Plusieurs milliers de workers / clustersParallélisme

Page 22: Paris stormusergroup intrudocution

Plusieurs milliers de workers / clustersParallélisme

Réassignement automatique des tâches en échecs

Page 23: Paris stormusergroup intrudocution

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

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
Page 26: Paris stormusergroup intrudocution

Stockage

HDFS

Principale structure de données

Liste de valeurs nommées – typage dynamique

Immuable

Page 27: Paris stormusergroup intrudocution

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

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

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

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

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

Stockage

HDFS Un bolt peut émettre de nouveaux flux.

Input stream

Output streams

Page 33: Paris stormusergroup intrudocution

Stockage

HDFS Un bolt peut émettre de nouveaux flux.

Input stream

Output streams Kafka HDFS / HBase Cassandra MongoDB Elasticsearch

Page 34: Paris stormusergroup intrudocution
Page 35: Paris stormusergroup intrudocution

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
Page 37: Paris stormusergroup intrudocution

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

Page 38: Paris stormusergroup intrudocution

Field=A

Field=B

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

Page 39: Paris stormusergroup intrudocution

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

Page 40: Paris stormusergroup intrudocution

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

Page 41: Paris stormusergroup intrudocution
Page 42: Paris stormusergroup intrudocution

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

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

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
Page 46: Paris stormusergroup intrudocution

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

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

Page 48: Paris stormusergroup intrudocution

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

Page 49: Paris stormusergroup intrudocution

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
Page 51: Paris stormusergroup intrudocution

Un de par tuple

Page 52: Paris stormusergroup intrudocution

Un de par tuple

Page 53: Paris stormusergroup intrudocution

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

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

Etat de l’arbre de tuples

Page 55: Paris stormusergroup intrudocution

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

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

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
Page 59: Paris stormusergroup intrudocution

ZookeeperQuorum

WorkersWorkers

(Master node)

(Slave node)

Architecture master/slave NSPOF

(Slave node)

Page 60: Paris stormusergroup intrudocution

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

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

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

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
Page 65: Paris stormusergroup intrudocution

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
Page 67: Paris stormusergroup intrudocution

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

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

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