SlideShare a Scribd company logo
1 of 50
Download to read offline
Stream Processing,
uma visão geral
Data velocity, Big Data
e outras buzzwords
Otávio Carvalho
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
3
Por que precisamos
disso?
4
Dados em tempo real
5
Buzzwords à vista
6
Big Data – Modelo de 3Vs
7
Big Data – Ciclo de tendências
8
Por que
Stream Processing?
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
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
11
Investimento em P&D
12
Arquitetura Lambda
● Duas camadas
● Batch layer
● Speed layer
13
Arquitetura Kappa
● Camada única
● Speed layer
14
Quem utiliza
Stream Processing?
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
● …
16
Como isso surgiu?
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
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
19
Explosão de abordagens relacionada
● 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”
20
Como realmente
funciona?
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
22
Data Source / Data Sink
23
Data Source/Sink – Apache Kafka
24
Processing Elements - PEs
● Processamento encadeado
● Grafo Direcionado Acíclico de PEs
25
Processing Elements - PEs
● Transformações sobre os dados
Por elemento Agregação Composição
26
PEs – Apache Storm
27
Windowing
13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
28
Windowing
29
Windowing – Event/Processing
● Event time
● Momento em que o evento foi gerado
● Processing time
● Momento do processamento efetivo do evento
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
31
Windowing – Tipos de Janelas
32
Windowing – Triggers/Watermarks
33
Como programamos?
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
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 ...]
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 …]
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
38
Resultados de um time por hora
gameEvents.
[… 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 …]
39
Resultados de um time por hora
● Como?
● Resultados novos são acumulados nos resultados
anteriores
40
Resultados de um time por hora
gameEvents.
[… 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 …]
41
Como é usado em
produção?
42
Netflix - Mantis
43
Uber
44
Uber
45
O que podemos
esperar para o futuro?
46
O que é possível hoje?
d
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
Obrigado!
Para mais perguntas e sugestões:
Otávio Carvalho
ocarvalh@thoughtworks.com
@otaviocarvalho
ThoughtWorks Brazil – Porto Alegre Office
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
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)

More Related Content

Similar to Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17

Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Otávio Carvalho
 
Dev Parana - Praticas Devops aplicadas a Big Data
Dev Parana - Praticas Devops aplicadas a Big DataDev Parana - Praticas Devops aplicadas a Big Data
Dev Parana - Praticas Devops aplicadas a Big DataAlexandre Cardoso
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoRicardo Longa
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosAmbiente Livre
 
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...PGDay Campinas
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGustavo Concon
 
Splunklive! Universo Online
Splunklive! Universo OnlineSplunklive! Universo Online
Splunklive! Universo OnlineSplunk
 
Processamento de dados consiste em extrair informação de dados
Processamento de dados consiste em extrair informação de dadosProcessamento de dados consiste em extrair informação de dados
Processamento de dados consiste em extrair informação de dadosMD consultoria
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open sourceMatheus Espanhol
 
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016] Apache Cassandra Estratégias de Modelagem de DadosEiti Kimura
 
Apresentação parcial
Apresentação parcialApresentação parcial
Apresentação parcialFelipe Moraes
 
Adoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaAdoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaThiago Curvelo
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4spawally
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionaisRoberto Oliveira
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPIssac Nolis Ohasi
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaHenrique Lima
 

Similar to Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17 (20)

Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017
 
Dev Parana - Praticas Devops aplicadas a Big Data
Dev Parana - Praticas Devops aplicadas a Big DataDev Parana - Praticas Devops aplicadas a Big Data
Dev Parana - Praticas Devops aplicadas a Big Data
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenho
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
Times plataforma-tdc2020
Times plataforma-tdc2020Times plataforma-tdc2020
Times plataforma-tdc2020
 
#{GCODE}
#{GCODE}#{GCODE}
#{GCODE}
 
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
Greenplum: O banco de dados open source massivamente paralelo baseado em Post...
 
Sql Server
Sql ServerSql Server
Sql Server
 
Putting a-heat-with-thermostat
Putting a-heat-with-thermostatPutting a-heat-with-thermostat
Putting a-heat-with-thermostat
 
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de segurosGoogle AppEngine: Desafios da adoção de cloud no mercado de seguros
Google AppEngine: Desafios da adoção de cloud no mercado de seguros
 
Splunklive! Universo Online
Splunklive! Universo OnlineSplunklive! Universo Online
Splunklive! Universo Online
 
Processamento de dados consiste em extrair informação de dados
Processamento de dados consiste em extrair informação de dadosProcessamento de dados consiste em extrair informação de dados
Processamento de dados consiste em extrair informação de dados
 
Bancos de dados analíticos open source
Bancos de dados analíticos open sourceBancos de dados analíticos open source
Bancos de dados analíticos open source
 
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados[TDC2016]  Apache Cassandra Estratégias de Modelagem de Dados
[TDC2016] Apache Cassandra Estratégias de Modelagem de Dados
 
Apresentação parcial
Apresentação parcialApresentação parcial
Apresentação parcial
 
Adoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da ParaíbaAdoção do Plone no TRT da Paraíba
Adoção do Plone no TRT da Paraíba
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4
 
Big data para programadores convencionais
Big data para programadores convencionaisBig data para programadores convencionais
Big data para programadores convencionais
 
Os 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAPOs 10 Mandamentos para realizar um projeto de upgrade SAP
Os 10 Mandamentos para realizar um projeto de upgrade SAP
 
Aumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinadaAumente a performance de seu site de maneira disciplinada
Aumente a performance de seu site de maneira disciplinada
 

More from Otávio Carvalho

Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018Otávio Carvalho
 
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...Otávio Carvalho
 
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...Otávio Carvalho
 
Apache Kafka - Free Friday
Apache Kafka - Free FridayApache Kafka - Free Friday
Apache Kafka - Free FridayOtávio Carvalho
 
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...Otávio Carvalho
 
A Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event ProcessingA Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event ProcessingOtávio Carvalho
 
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemAnálise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemOtávio Carvalho
 
Utilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvemUtilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvemOtávio Carvalho
 

More from Otávio Carvalho (8)

Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018Non-Kafkaesque Apache Kafka - Yottabyte 2018
Non-Kafkaesque Apache Kafka - Yottabyte 2018
 
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
 
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
 
Apache Kafka - Free Friday
Apache Kafka - Free FridayApache Kafka - Free Friday
Apache Kafka - Free Friday
 
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
 
A Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event ProcessingA Survey of the State-of-the-art in Event Processing
A Survey of the State-of-the-art in Event Processing
 
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em NuvemAnálise e Caracterização das Novas Ferramentas para Computação em Nuvem
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
 
Utilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvemUtilização de traços de execução para migração de aplicações para a nuvem
Utilização de traços de execução para migração de aplicações para a nuvem
 

Stream Processing: Uma visão geral - TDC Porto Alegre / FISL 17

  • 1. Stream Processing, uma visão geral Data velocity, Big Data e outras buzzwords Otávio Carvalho
  • 2. 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
  • 6. 6 Big Data – Modelo de 3Vs
  • 7. 7 Big Data – Ciclo de tendências
  • 9. 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
  • 10. 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
  • 12. 12 Arquitetura Lambda ● Duas camadas ● Batch layer ● Speed layer
  • 13. 13 Arquitetura Kappa ● Camada única ● Speed layer
  • 15. 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 ● …
  • 17. 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
  • 18. 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
  • 19. 19 Explosão de abordagens relacionada ● 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”
  • 21. 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
  • 22. 22 Data Source / Data Sink
  • 23. 23 Data Source/Sink – Apache Kafka
  • 24. 24 Processing Elements - PEs ● Processamento encadeado ● Grafo Direcionado Acíclico de PEs
  • 25. 25 Processing Elements - PEs ● Transformações sobre os dados Por elemento Agregação Composição
  • 27. 27 Windowing 13:00 14:008:00 9:00 10:00 11:00 12:00 Processing Time
  • 29. 29 Windowing – Event/Processing ● Event time ● Momento em que o evento foi gerado ● Processing time ● Momento do processamento efetivo do evento
  • 30. 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
  • 34. 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
  • 35. 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 ...]
  • 36. 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 …]
  • 37. 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
  • 38. 38 Resultados de um time por hora gameEvents. [… 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 …]
  • 39. 39 Resultados de um time por hora ● Como? ● Resultados novos são acumulados nos resultados anteriores
  • 40. 40 Resultados de um time por hora gameEvents. [… 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 …]
  • 41. 41 Como é usado em produção?
  • 45. 45 O que podemos esperar para o futuro?
  • 46. 46 O que é possível hoje? d
  • 47. 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
  • 48. Obrigado! Para mais perguntas e sugestões: Otávio Carvalho ocarvalh@thoughtworks.com @otaviocarvalho ThoughtWorks Brazil – Porto Alegre Office
  • 49. 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
  • 50. 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)