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)

Mais conteúdo relacionado

PDF
Ténicas de Database Refactoring para ambientes 24x7
PDF
Building a Growth Engine for Startups (cezary.co)
PDF
Stripe CTF3 wrap-up
PDF
SF Rebels of Recruiting Roadshow | Jennifer Trendler from Nitro
PDF
Building a Growth Engine for Startups v2 (cezary.co)
PDF
Building Real Time Systems on MongoDB Using the Oplog at Stripe
PDF
EDGE EdTech Accelerator - Marketing & Growth Program
KEY
Payments using Stripe.com
Ténicas de Database Refactoring para ambientes 24x7
Building a Growth Engine for Startups (cezary.co)
Stripe CTF3 wrap-up
SF Rebels of Recruiting Roadshow | Jennifer Trendler from Nitro
Building a Growth Engine for Startups v2 (cezary.co)
Building Real Time Systems on MongoDB Using the Oplog at Stripe
EDGE EdTech Accelerator - Marketing & Growth Program
Payments using Stripe.com

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

PDF
Stream Processing - ThoughtWorks Architecture Group - 2017
PDF
Processamento de Eventos Complexos com Spark
PDF
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
PDF
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
PPTX
Tutorial do-software-bizagi
PPT
Apresentação TUTORIAL-DO-SOFTWARE-BIZAGI.ppt
PDF
Data Lakes com Hadoop e Spark: Agile Analytics na prática
PDF
Qcon Rio 2015 - Data Lakes Workshop
PDF
Introducao_BPMN.pdf
PDF
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
PDF
Sintese BizAgi.pdf - apostila detalhada
PDF
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
PDF
CPBSB 2022 - Big Data e Machine Learning na Prática Construindo um Data Lake...
PPTX
GS1-Data_Archtecture v2.pptx
PPTX
Produzindo e consumindo um stream de eventos
PPTX
Azure Event Hubs: processando eventos em tempo real | MVPConf Latam 2021
PDF
Apache Spark: Casos de uso e escalabilidade
PDF
Bigadata casese opotunidades
PDF
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
PDF
Tecnologias para mineração de dados nas nuvens
Stream Processing - ThoughtWorks Architecture Group - 2017
Processamento de Eventos Complexos com Spark
TDC2017 | POA Trilha BigData - Arquitetura Big Data para Gestão de Regras de ...
Análise e Caracterização das Novas Ferramentas para Computação em Nuvem
Tutorial do-software-bizagi
Apresentação TUTORIAL-DO-SOFTWARE-BIZAGI.ppt
Data Lakes com Hadoop e Spark: Agile Analytics na prática
Qcon Rio 2015 - Data Lakes Workshop
Introducao_BPMN.pdf
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
Sintese BizAgi.pdf - apostila detalhada
[Datafest 2018] Apache Spark Structured Stream - Moedor de dados em tempo qua...
CPBSB 2022 - Big Data e Machine Learning na Prática Construindo um Data Lake...
GS1-Data_Archtecture v2.pptx
Produzindo e consumindo um stream de eventos
Azure Event Hubs: processando eventos em tempo real | MVPConf Latam 2021
Apache Spark: Casos de uso e escalabilidade
Bigadata casese opotunidades
[DEVFEST] Apache Spark Casos de Uso e Escalabilidade
Tecnologias para mineração de dados nas nuvens
Anúncio

Mais de Otávio Carvalho (7)

PDF
Non-Kafkaesque Apache Kafka - Yottabyte 2018
PDF
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
PDF
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
PDF
Apache Kafka - Free Friday
PDF
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
PDF
A Survey of the State-of-the-art in Event Processing
PDF
Utilização de traços de execução para migração de aplicações para a nuvem
Non-Kafkaesque Apache Kafka - Yottabyte 2018
GaruaGeo: Global Scale Data Aggregation in Hybrid Edge and Cloud Computing En...
IoT Workload Distribution Impact Between Edge and Cloud Computing in a Smart ...
Apache Kafka - Free Friday
Distributed Near Real-Time Processing of Sensor Network Data Flows for Smart ...
A Survey of the State-of-the-art in Event Processing
Utilização de traços de execução para migração de aplicações para a nuvem
Anúncio

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 [email protected] @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)