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.

Quer saber mais? Confere a talk no vídeo abaixo:

--

--