Entender o processamento em lotes e de fluxo

Concluído

O processamento de dados é simplesmente a conversão de dados brutos em informações relevantes por meio de um processo. Há duas maneiras gerais de processar dados:

  • Processamento em lote, no qual vários registros de dados são coletados e armazenados antes de serem processados ​​juntos em uma única operação.
  • Processamento de fluxo, no qual uma fonte de dados é constantemente monitorada e processada em tempo real à medida que novos eventos de dados ocorrem.

Entender o processamento em lotes

No processamento em lotes, os elementos de dados que chegam recentemente são coletados e armazenados e o grupo inteiro é processado juntos como um lote. Há várias maneiras de determinar o momento exato em que cada grupo é processado. Por exemplo, você pode processar dados com base em um intervalo de tempo agendado (por exemplo, a cada hora), ou o processamento pode ser disparado quando determinada quantidade de dados tiver chegado ou ainda como resultado de algum outro evento.

Por exemplo, suponha que você queira analisar o tráfego rodoviário contando o número de carros em um trecho de estrada. Uma abordagem de processamento em lotes para isso exigiria que você reunisse os carros em um estacionamento e os contasse em uma única operação enquanto eles estivessem parados.

Cars being counted in a parking lot

Se a estrada estiver movimentada, com um grande número de carros circulando em intervalos frequentes, essa abordagem poderá ser impraticável; e observe que você não obterá nenhum resultado até que tenha estacionado um lote de carros e os tenha contado.

Um exemplo real de processamento em lotes é a maneira como as empresas de cartão de crédito lidam com as cobranças. O cliente não recebe uma fatura para cada compra de cartão de crédito separada, mas uma fatura mensal para todas as compras do mês.

As vantagens do processamento em lotes incluem:

  • Grandes volumes de dados podem ser processados em um momento conveniente.
  • Ele pode ser agendado para execução em momentos em que os computadores ou os sistemas estão ociosos, como durante a noite ou fora do horário de pico.

As desvantagens do processamento em lotes incluem:

  • O intervalo de tempo existente entre a ingestão dos dados e a obtenção dos resultados.
  • Todos os dados de entrada de um trabalho em lotes devem estar prontos para que o lote seja processado. Isso significa que os dados devem ser cuidadosamente verificados. Eventuais problemas com erros, dados e falhas do programa durante os trabalhos em lotes levam todo o processo a uma parada. Os dados de entrada devem ser cuidadosamente verificados para que o trabalho possa ser executado novamente. Mesmo pequenos erros de dados podem impedir a execução de um trabalho em lotes.

Entender o processamento de fluxo

No processamento de streaming, cada parte dos dados é processada ao chegar. Ao contrário do processamento em lotes, não há espera até o próximo intervalo de processamento de lotes — os dados são processados como unidades individuais em tempo real, em vez de serem processados um lote por vez. O processamento de dados de streaming é benéfico nos cenários em que dados dinâmicos são gerados de maneira contínua.

Por exemplo, uma abordagem melhor para nosso problema hipotético de contagem de carros pode ser aplicar uma abordagem de streaming, contando os carros em tempo real conforme eles passam:

Cars being counted as they pass

Nessa abordagem, você não precisa esperar até que todos os carros estejam estacionados para começar a processá-los e pode agregar os dados em intervalos de tempo; por exemplo, contando o número de carros que passam a cada minuto.

Exemplos do mundo real de dados de streaming incluem:

  • Uma instituição financeira controla as alterações do mercado de ações em tempo real, computa o valor em risco e reequilibra automaticamente os portfólios com base nos movimentos de preço das ações.
  • Uma empresa de jogos online coleta dados em tempo real sobre as interações do jogador com os jogos e alimenta os dados na plataforma de jogos. Então, a empresa analisa os dados em tempo real e oferece incentivos e experiências dinâmicas para envolver os jogadores.
  • Um site de imóveis que acompanha um subconjunto de dados dos dispositivos móveis e faz recomendações em tempo real sobre propriedades a serem visitadas com base na localização geográfica do consumidor.

O processamento de streaming é ideal para operações de tempo crítico que exigem resposta instantânea em tempo real. Por exemplo, um sistema que monitora um edifício quanto a presença de fumaça e fogo precisa ser ágil ao disparar alarmes e desbloquear portas para permitir que os residentes escapem imediatamente em caso de incêndio.

Entender as diferenças entre dados de lote e dados de streaming

Além da maneira como o processamento em lotes e o processamento de streaming lidam com os dados, há outras diferenças:

  • Escopo de dados: o processamento em lotes pode processar todos os dados no conjunto de dados. O processamento de streaming normalmente só tem acesso aos dados mais recentes recebidos ou aos dados que estão dentro de uma janela de tempo contínua (os últimos 30 segundos, por exemplo).

  • Tamanho dos dados: o processamento em lotes é adequado para lidar de maneira eficiente com grandes conjuntos de dados. O processamento de streaming destina-se a registros individuais ou micro lotes, formados por poucos registros.

  • Desempenho: a latência é o tempo necessário para que os dados sejam recebidos e processados. A latência do processamento em lotes normalmente é de algumas horas. O processamento de streaming normalmente ocorre imediatamente, com latência na ordem de segundos ou milissegundos.

  • Análise: normalmente você usa o processamento em lotes para executar análises complexas. O processamento de streaming é usado para funções de resposta simples, agregações ou cálculos como médias móveis.

Combinar processamento em lotes e de fluxo

Muitas soluções de análise em larga escala incluem uma combinação de processamento em lotes e de fluxo, permitindo a análise de dados históricos e em tempo real. É comum para soluções de processamento de fluxo capturar dados em tempo real, processá-los filtrando ou agregando-os, e apresentá-los por meio de painéis e visualizações em tempo real (por exemplo, mostrando o total em execução de carros que passaram por uma estrada na hora atual), enquanto também persiste os resultados processados em um armazenamento de dados para análise histórica junto com os dados processados em lote (por exemplo, para habilitar a análise de volumes de tráfego no ano passado).

Mesmo quando a análise ou visualização de dados em tempo real não é necessária, as tecnologias de streaming são frequentemente usadas para capturar dados em tempo real e armazená-los em um armazenamento de dados para processamento em lote subsequente (isso equivale a redirecionar todos os carros que viajam uma estrada para um estacionamento antes de contá-los).

O diagrama a seguir mostra algumas maneiras pelas quais o processamento em lotes e de fluxo pode ser combinado em uma arquitetura de análise de dados em grande escala.

A data analytics architecture that includes batch and stream processing

  1. Eventos de dados de uma fonte de dados de streaming são capturados em tempo real.
  2. Os dados de outras fontes são ingeridos em um armazenamento de dados (geralmente um data lake) para processamento em lotes.
  3. Se a análise em tempo real não for necessária, os dados de streaming capturados serão gravados no armazenamento de dados para processamento em lote subsequente.
  4. Quando a análise em tempo real é necessária, uma tecnologia de processamento de fluxo é usada para preparar os dados de streaming para análise ou visualização em tempo real; geralmente filtrando ou agregando os dados em janelas temporais.
  5. Os dados que não são de streaming são processados periodicamente em lotes para prepará-los para análise e os resultados são mantidos em um armazenamento de dados analíticos (geralmente chamado de data warehouse) para análise histórica.
  6. Os resultados do processamento de fluxo também podem ser mantidos no armazenamento de dados analíticos para dar suporte à análise histórica.
  7. Ferramentas analíticas e de visualização são usadas para apresentar e explorar os dados históricos e em tempo real.

Observação

As arquiteturas de solução comumente usadas para processamento combinado de dados em lote e fluxo incluem arquiteturas lambda e delta. Os detalhes dessas arquiteturas estão além do escopo deste curso, mas incorporam tecnologias para processamento de dados em lotes em grande escala e processamento de fluxo em tempo real para criar uma solução analítica de ponta a ponta.