présentation google dataflow

37
Google Dataflow

Upload: geoffrey-garnotel

Post on 12-Apr-2017

599 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Présentation Google Dataflow

Google Dataflow

Page 2: Présentation Google Dataflow

Sommaire

Origine et principe

Mise en place

Concepts

Windowing / Watermark

Page 3: Présentation Google Dataflow

Présentation GCP

Page 4: Présentation Google Dataflow

Dataflow origine

MapReduce2004

FlumeJava2010

MillWheel2013

Page 5: Présentation Google Dataflow

Présentation Dataflow

“ Se concentrer sur la logique des process plutôt que sur l’orchestration physique pour mettre des traitements en

parallèle “

Page 6: Présentation Google Dataflow

Présentation Dataflow

SDK

Job de Traitement de donnée

GCP Service

Intégration et utilisation de la Google Cloud

Platform et de ses outils

Page 7: Présentation Google Dataflow

Mise en place sur le cloud

Création Compte GCPMettre disponible les APIs :

Google Cloud Dataflow APICompute Engine API (Google Compute Engine)Google Cloud Logging APIGoogle Cloud StorageGoogle Cloud Storage JSON APIBigQuery APIGoogle Cloud Pub/SubGoogle Cloud Datastore API

Page 8: Présentation Google Dataflow

Mise en place local

Page 9: Présentation Google Dataflow

Launcher

DirectPipelineRunner : execution local

DataFlowPipelineRunner : lance l’execution / s’arrete

BlockingDataflowPipelineRunner : lance l’execution et attends qu’il se termine.

Page 10: Présentation Google Dataflow

Launcher

Cloud Storage BucketsBigQuery DatasetsPub/Sub Topics and SubscriptionsCloud Datastore

=> Go to the Pipelines World

Page 11: Présentation Google Dataflow

Concept

Source

PCollection PCollection PCollectionTransform Transform

PIPELINES

Sink

Sink

SinkSource

Page 12: Présentation Google Dataflow

Concept

Pipelines : ensemble d’opération qui lis les données, les transforme et qui écris les résultats / job PCollections : Ensemble de données (bounded / unbounded )Transforms : Action pour manipuler les données, prend N PCollection en entrée et en fournit une autre en sortieI/O sources and sinks : sources en entrée / Sink en sortie.

Page 13: Présentation Google Dataflow

Concept - Pipelines

“ensemble des opérations qui lis les données, les transforme et qui écris les résultats”

Possibilité de créer plusieurs Pipelines mais pas d’interaction entre.

Runner Cloud Dataflow Service ou autre.

Page 14: Présentation Google Dataflow

Concept - PCollections

“represents a very large data set in the cloud”

immutable pas de ramdom accessUniquement dans le pipelines

Page 15: Présentation Google Dataflow

Concept - PCollections

Bounded

Unbounded

Page 16: Présentation Google Dataflow

Transform

ParDo GroupByKey

Combine Flatten

Transform

Page 17: Présentation Google Dataflow

Transform - ParDo (“Parallel Do”)

LowerCase Filter

Data, Sfeir, Cloud, ...

data, sfeir, cloud, ...

Data, Sfeir, Cloud, ...

Sfeir, Cloud, ...

Page 18: Présentation Google Dataflow

Transform - ParDo (“Parallel Do”)

ExplodePrefixes KeyByFirstLetter

Data, Sfeir, Cloud, ...

d, da, dat, data, s, sf, sfe, sfei, sfeir, c, cl, clo, clou, cloud, ...

Data, Sfeir, Cloud, Sync ...

<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...

Page 19: Présentation Google Dataflow

Transform - GroupByKey

GroupByKey

<d, {Data}>, <s, { Sfeir, Sync}>, <c, {Cloud}>

<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...

Page 20: Présentation Google Dataflow

Transform - Combine

Combine.perKey(CountFn())

GroupByKey

<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...

<d, {Data}>, <s, { Sfeir, Sync}>, <c, {Cloud}>

CountByKey

<d, 1>, <s, 2>, <c, 1>

<d, Data>, <s, Sfeir>, <c, Cloud>, <s, Sync>...

<d, 1>, <s, 2>, <c, 1>

Page 21: Présentation Google Dataflow

Source / Sink

Page 22: Présentation Google Dataflow

Exemple

splitwords

Count

Format

Page 23: Présentation Google Dataflow

Exemple

splitwords

Count

Format TopAndBottom

Page 24: Présentation Google Dataflow
Page 25: Présentation Google Dataflow

Windowing

Combine

GroupByKey

DataSet limité

Page 26: Présentation Google Dataflow

Windowing

9:00 9:209:10 9:409:30

Page 27: Présentation Google Dataflow

Windowing - Fixed

9:00 9:209:10 9:30 9:40

Défini le temps de la Window

Time

Page 28: Présentation Google Dataflow

Windowing - Sliding

9:00 9:209:10 9:30 9:40

Défini le temps de la Window et la slide period

Time

Period

Page 29: Présentation Google Dataflow

Windowing - Session

9:00 9:209:10 9:30 9:40

Défini le temps sans élement

Page 30: Présentation Google Dataflow

Windowing

On joue avec le temps

Event Time Processing Time

Page 31: Présentation Google Dataflow

Windowing - Watermark

9:00 9:209:10 9:30 9:40

Gérer le décalage entre le time event et le processing time

Event Time

Processing Time

1

42

3

1

234

5

5

Page 32: Présentation Google Dataflow

Windowing - Watermark

9:00 9:209:10 9:30 9:40

Event Time

Processing Time

1

42

3

1

234

5

5

Le Watermark va permettre de prendre en compte la donnée 2 mais la donnée 5 sera considéré comme une donnée en retard (data late)On peut ajouter une gestion des data late au Watermark

Page 33: Présentation Google Dataflow

Trigger

Aider à gérer les late data / Récupérer des informations sur les aggrégations en cours

3 types :

Time basedData drivenCombined

Page 34: Présentation Google Dataflow
Page 35: Présentation Google Dataflow

WordCount BigQuery + TOP & MIN value

Page 36: Présentation Google Dataflow

Link

DataFlow Model http://www.vldb.org/pvldb/vol8/p1792-Akidau.pdf

Video Frances Perry : https://www.youtube.com/watch?v=3UfZN59Nsk8

Dataflow GCP : https://cloud.google.com/dataflow/

Page 37: Présentation Google Dataflow

Geoffrey GarnotelEmail : [email protected]

Twitter : @ggarnotel