Stream Processing: Uma visão geral
-
Upload
otavio-carvalho -
Category
Software
-
view
139 -
download
2
Transcript of Stream Processing: Uma visão geral
![Page 1: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/1.jpg)
Stream Processing,uma visão geral
Data velocity, Big Data e outras buzzwords
Otávio Carvalho
![Page 2: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/2.jpg)
2
Quem sou?● Bacharel em Ciência da Computação - UFRGS● Ex-bolsista de pesquisa no GPPD
● Grupo de Processamento Paralelo e Distribuído da UFRGS● Consultor na ThoughtWorks Brasil● Apaixonado por Sistemas Distribuídos
![Page 3: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/3.jpg)
3
Por que precisamos disso?
![Page 4: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/4.jpg)
4
Dados em tempo real
![Page 5: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/5.jpg)
5
Buzzwords à vista
![Page 6: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/6.jpg)
6
Big Data – Modelo de 3Vs
![Page 7: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/7.jpg)
7
Big Data – Ciclo de tendências
![Page 8: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/8.jpg)
8
Por que Stream Processing?
![Page 9: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/9.jpg)
9
Batch Processing
● Batch Processing no sentido de grandes operações que ocorrem sobre conjuntos de dados de forma não-interativa● Processamento de folha de pagamento
MapReduce
![Page 10: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/10.jpg)
10
Stream Processing
● Stream Processing no sentido de pipelines de dados para o processamento de fluxos de dados contínuos● Processamento dos Trending Topics do Twitter
13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
![Page 11: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/11.jpg)
11
Investimento em P&D
![Page 12: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/12.jpg)
12
Arquitetura Lambda
● Duas camadas● Batch layer● Speed layer
![Page 13: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/13.jpg)
13
Arquitetura Kappa
● Camada única● Speed layer
![Page 14: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/14.jpg)
14
Quem utilizaStream Processing?
![Page 15: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/15.jpg)
15
Quem utiliza Stream Processing?
● Apache Foundation● Apache Beam (2016)
● Google● Flume (2010)● MillWheel (2013)● Dataflow (2014)
● Twitter● Twitter Storm (2011)● Twitter Heron (2016)
● Berkeley● Spark Streaming (2013)
● LinkedIn● Apache Samza (2011)● Kafka Streams (2016)
● TU Berlin● Apache Flink (2010)
● Outras empresas● Alibaba● Netflix● Spotify● Walmart ● …
![Page 16: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/16.jpg)
16
Como isso surgiu?
![Page 17: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/17.jpg)
17
Como isso surgiu?● Dataflow relacional
● Surge como uma evolução sobre os Bancos de Dados Relacionais
● Solução de problemas específicos ● Operações financeiras● Monitoramento de logística● Monitoramento de fábricas
![Page 18: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/18.jpg)
18
Histórico● Primeira geração
● TelegraphCQ – baseado no PostgresDB● Segunda geração
● Borealis● Balanceamento de carga● Processamento distribuído
● Terceira geração: Sistemas na nuvem● Twitter Storm● Apache Spark (Berkeley)● Apache Flink (T.U. Berlin)● LinkedIn/Apache Samza (Apache Kafka)● Google Dataflow
![Page 19: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/19.jpg)
19
Explosão de abordagens relacionadas
● Complex Event Processing (CEP)● Event Sourcing
● Baseado nas idéias de DDD do ambiente corporativo● Reactive programming
● Reactive manifesto
“[…] queremos sistemas que sejam responsivos, resilientes, elásticos e orientados a mensagens. Nós chamamos esses sistemas de Sistemas Reativos”
![Page 20: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/20.jpg)
20
Como realmentefunciona?
![Page 21: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/21.jpg)
21
Como realmente funciona?● Conceitos fundamentais
● Como processar a entrada/saída de dados?● Data Source / Data Sink
● Como realizar transformações sobre os dados?● PEs (Elementos processadores)
● Como representar os passos do processamento?● DAG (Grafo direcionado acíclico)
● Como particionar o processamento? Janelas?● Windowing
● Event time● Processing time
![Page 22: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/22.jpg)
22
Data Source / Data Sink
![Page 23: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/23.jpg)
23
Data Source/Sink – Apache Kafka
![Page 24: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/24.jpg)
24
Processing Elements - PEs
● Processamento encadeado● Grafo Direcionado Acíclico de PEs
![Page 25: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/25.jpg)
25
Processing Elements - PEs
● Transformações sobre os dados
Por elemento Agregação Composição
![Page 26: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/26.jpg)
26
PEs – Apache Storm
![Page 27: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/27.jpg)
27
Windowing
13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
![Page 28: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/28.jpg)
28
Windowing
![Page 29: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/29.jpg)
29
Windowing – Event/Processing● Event time
● Momento em que o evento foi gerado
● Processing time● Momento do processamento efetivo do evento
![Page 30: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/30.jpg)
30
Windowing – Event/Processing
Event Time
Processing Time
11:0010:00 15:0014:0013:0012:00
11:0010:00 15:0014:0013:0012:00
Input
Output
Input
Output
![Page 31: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/31.jpg)
31
Windowing – Tipos de Janelas
![Page 32: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/32.jpg)
32
Windowing – Triggers/Watermarks
![Page 33: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/33.jpg)
33
Como programamos?
![Page 34: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/34.jpg)
34
Como programamos?
● Nos exemplos a seguir iremos utilizar:● Apache Beam
● Combinação de Batch e strEAM● Projeto da Apache criado em Janeiro de 2016● Esforço para unificar batch processing e stream
processing● API suportada por diversos projetos:
● Apache Spark● Apache Flink● Google Dataflow
![Page 35: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/35.jpg)
35
Resultados de um time por hora
● O quê? ● Soma de inteiros do placar, agrupados por time
gameEvents.
[… input …]
.apply(“LeaderBoardTeamFixedWindows”, Window
[…]) .apply(“ExtractTeamScore”,
new ExtractAndSumScore(“team”))
[… output ...]
![Page 36: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/36.jpg)
36
Resultados de um time por hora
● Onde? ● Dentro de janelas de tempo de uma hora
gameEvents.
[… input …]
.apply(“LeaderBoardTeamFixedWindows”, Window
.<GameActionInfo>into(FixedWindows.of(Duration.standardMinutes(Durations.minutes(60))))...)
.apply(“ExtractTeamScore”,
new ExtractAndSumScore(“team”))
[… output …]
![Page 37: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/37.jpg)
37
Resultados de um time por hora
● Quando? ● Early trigger: Cada 5 minutos de processamento● On-time trigger: Quando a watermark passa o fim da janela● Late trigger: Cada 10 minutos de processamento● Final trigger: Quando a watermark passa duas horas do fim da
janela
![Page 38: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/38.jpg)
38
Resultados de um time por horagameEvents.
[… input …].apply(“LeaderBoardTeamFixedWindows”, Window
.<GameActionInfo>into(FixedWindows.of(Duration.standardMinutes(Durations.minutes(60))))
.triggering(AfterWatermark.pastEndOfWindow() .withEarlyFirings( AfterProcessingTime.pastFirstElementInPane() .plusDelayOf(Durations.minutes(5))) .withLateFirings( AfterProcessingTime.pastFirstElementInPane() .plusDelayOf(Durations.minutes(10))) .withAllowedLateness( Duration.standardMinutes(120)) ..) .apply(“ExtractTeamScore”,
new ExtractAndSumScore(“team”))
[… output …]
![Page 39: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/39.jpg)
39
Resultados de um time por hora
● Como? ● Resultados novos são acumulados nos resultados
anteriores
![Page 40: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/40.jpg)
40
Resultados de um time por horagameEvents.
[… input …].apply(“LeaderBoardTeamFixedWindows”, Window
.<GameActionInfo>into(FixedWindows.of(Duration.standardMinutes(Durations.minutes(60))))
.triggering(AfterWatermark.pastEndOfWindow() .withEarlyFirings( AfterProcessingTime.pastFirstElementInPane() .plusDelayOf(Durations.minutes(5))) .withLateFirings( AfterProcessingTime.pastFirstElementInPane() .plusDelayOf(Durations.minutes(10))) .withAllowedLateness( Duration.standardMinutes(120))
.accumulatingFiringPanes()) .apply(“ExtractTeamScore”,
new ExtractAndSumScore(“team”))
[… output …]
![Page 41: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/41.jpg)
41
Como é usado em produção?
![Page 42: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/42.jpg)
42
Netflix - Mantis
![Page 43: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/43.jpg)
43
Uber
![Page 44: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/44.jpg)
44
Uber
![Page 45: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/45.jpg)
45
O que podemos esperar para o futuro?
![Page 46: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/46.jpg)
46
O que é possível hoje?
d
![Page 47: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/47.jpg)
47
Importância & Desafios● Importância
● Resolve diversos dos problemas no processamento de dados de diversas tecnologias emergentes, tais como:● Internet das coisas (IoT) ● Aplicações móveis em larga escala
● Desafios
● Como unificar as diferentes APIs/Vendors
● Como integrar diferentes abordagens de Stream Processing
● Confiabilidade / Semântica / Tolerância a falhas
![Page 48: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/48.jpg)
Obrigado!Para mais perguntas e sugestões:
Otávio [email protected]
@otaviocarvalho
ThoughtWorks Brazil – Porto Alegre Office
![Page 49: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/49.jpg)
49
Nomenclatura
● Stream Processing no sentido de pipelines de dados para o processamento de fluxos de dados contínuos● Menos ambiguamente Event Stream Processing
● Nomenclatura problemática, pois diversas áreas distintas compartilham da mesma origem:● Programação Dataflow
● Modelo de Dataflow Síncrono (SDF)● LUSTRE, Esterel e outros sistemas de missão crítica
● Dataflow relacional● SPL, Borealis, TelegraphCQ
● Arquiteturas Dataflow● DSPs, GPUs, alternativa à arquitetura de Von Neumann
![Page 50: Stream Processing: Uma visão geral](https://reader034.fdocuments.net/reader034/viewer/2022051503/5871a1c81a28ab044e8b6fbd/html5/thumbnails/50.jpg)
50
Links Interessantes● Michael Stonebraker
● The 8 Requirements for Stream Processing: http://cs.brown.edu/~ugur/8rulesSigRec.pdf
● The Case for Polystores: http://wp.sigmod.org/?p=1629● The World Beyond Batch, Streaming 101:
https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101● Lambda architecture: http://lambda-architecture.net/● Kappa architecture: https://www.oreilly.com/ideas/questioning-the-
lambda-architecture● Apache Beam: http://beam.incubator.apache.org/
● Obrigado especial para Frances Perry e Tyler Akidau por fornecerem material para apresentações relacionadas ao Apache Beam (que foi reutilizado nessa apresentação)