Como processar 4 bilhões de eventos em 3 horas — Thiago Chiarato
Todas (ou quase todas) as quintas-feiras na Resultados Digitais, temos um evento chamado Thursday Demo Beer. Não tem muitas regras, nem burocracia, o principal objetivo é compartilhar uma demostração de qualquer coisa, pode ser desde algo que foi feito pelo time ou um conhecimento.
Como processar 4 bilhões de eventos em 3 horas — Thiago Chiarato
Se tem uma coisa que importa para nós na RD, são os dados. O Thiago Chiarato é um dos responsáveis pela construção de um dos componentes que fazem parte da plataforma de dados da RD, o Data Lake. Nesse ano tivemos muitos aprendizados em relação às ferramentas, técnicas e como fazer na prática para processar bilhões de dados.
É nesse cenário que compartilhamos com você a talk “Como processar 4 bilhões de eventos em 3 horas”, onde o Thiago Chiarato vai contar a sua experiência com o Dataflow para confecção do Data Lake e porque escolheu o Dataflow ao invés do Spark.
O conteúdo está organizado em 3 tópicos:
- #1 Cloud Dataflow
- #2 Apache Beam
- #3 Stream Processing
Para começar vamos do fim para o início.
#3 Stream Processing
Um processamento de dados baseado em Stream, tem o benefício em relação ao processamento Batch, muito por conta da latência. Então se você precisa processar dados e exibir informação com baixa latência, o processamento baseado em Stream é muito mais indicado.
Quando vai processar dados em Batch, você está segregando um determinado período de tempo que tem um tamanho de dado que vai ser processado só naquele momento, e quando você trabalha com Stream, você está dividindo esse tamanho de dado que você está recebendo durante todo o período de processamento.
Ao falarmos de Stream, é necessário entender a diferença entre “Processing Time” e “Event Time” .
Processing Time, é basicamente o tempo ao qual o evento chegou e você observou ele, é o momento que você está processando o evento.
Event Time, é o horário em que o evento realmente aconteceu e pode haver um intervalo entre o evento acontecer e você observar que o evento aconteceu dentro do pipeline.
Então podemos resumir que Stream processing, é quando você tem micro batchs por janela de tempo e você só sabe o início.
No vídeo o Thiago passa mais detalhes e exemplo visuais comparando o processamento Batch x Stream.
O tema Stream Processing é complexo mesmo, mas é a base de ferramentas novas de processamento de dados massivos e distribuídos.
#2 Apache Beam
É a ferramenta ou framework que eu uso para codificar algo para rodar dentro do dataflow.
Por definição, é um modelo unificado de programação, eficiente e tem como benefício a portabilidade.
Imagina que você pode escrever um código / pipeline e pode rodar em vários runner diferentes (Dataflow, Spark), se você decidir mudar do Google para a AWS, você consegue portar o mesmo pipeline de dados sem mudar absolutamente nada.
O Apache Beam é um framework por trás do dataflow que fornece todo o tratamento e ferramental para codificar e realizar o processamento Stream.
#1 Cloud Dataflow
Dado esse contexto, entramos no tema principal que é mostrar como foi o uso do DataFlow dentro do Data Lake.
O Dataflow permite você tratar dados tanto em Stream quanto em Batch, de forma totalmente gerenciável e com confiabilidade.
O mais incrível é o quão simples e transparente é a escalabilidade que ele trás para dentro do teu pipeline, sem precisar fazer configurações e você paga só pelo que você usa e no momento que você usa.
Um exemplo é que processamos com essa tecnologia 1,5 Terabytes em 1 hora e conseguimos processar 4 bilhões de eventos em 3 horas.
Em resumo o Dataflow trás simplicidade para o processamento de grandes volumes de dados, com garantia de escalabilidade e se integra muito bem com Spanner, Big Query ou Cloud Storage. Isso tudo abre muitas possibilidades de uso e aplicações.