Compreender o processamento em lote e fluxo
O processamento de dados é simplesmente a conversão de dados não processados em informações relevantes através de um processo. Existem duas formas 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.
Compreender o processamento em lotes
No processamento em lote, os elementos de dados recém-chegados são coletados e armazenados, e todo o grupo é processado em conjunto como um lote. O momento exato em que cada grupo é processado pode ser determinado de várias maneiras. Pode processar dados de acordo com um intervalo de tempo agendado (por exemplo, a cada hora) ou podem ser acionados quando chegar uma determinada quantidade de dados ou como resultado de outro acontecimento.
Por exemplo, suponha que você queira analisar o tráfego rodoviário contando o número de carros em um trecho da estrada. Uma abordagem de processamento em lote para isso exigiria que você coletasse os carros em um estacionamento e, em seguida, os contasse em uma única operação enquanto eles estão em repouso.
Se a estrada estiver movimentada, com um grande número de carros circulando em intervalos frequentes, essa abordagem pode ser impraticável; E note que você não obtém nenhum resultado até ter estacionado um lote de carros e contado.
Um exemplo real de processamento em lote é a forma como as empresas de cartão de crédito lidam com a faturação. O cliente não recebe uma fatura para cada compra individual com o cartão de crédito, mas sim uma fatura mensal de todas as compras do mês.
Eis algumas vantagens do processamento em lotes:
- Podem ser processados grandes volumes de dados numa altura conveniente.
- Pode ser agendado para ser executado quando os computadores ou os sistemas estejam inativos, tal como durante a noite ou fora das horas de maior utilização.
Eis algumas desvantagens do processamento em lotes:
- O atraso entre a ingestão de dados e a obtenção dos resultados.
- Todos os dados introduzidos de uma tarefa de lote têm de estar prontos antes de um lote poder ser processado. Tal significa que os dados têm de ser verificados com cuidado. Os problemas com os dados, erros e falhas de programa que ocorrem durante tarefas de lote interrompem todo o processo. Os dados introduzidos têm de ser verificados com cuidado antes de a tarefa ser executada novamente. Mesmo pequenos erros de dados podem impedir a execução de um trabalho em lote.
Compreender o processamento de fluxo
No processo de transmissão em fluxo, cada novo elemento de dados é processado à chegada. Ao contrário do processamento em lote, não há espera até o próximo intervalo de processamento em lote - os dados são processados como unidades individuais em tempo real, em vez de serem processados um lote de cada vez. O processamento de dados de fluxo é benéfico em cenários em que novos dados dinâmicos são gerados continuamente.
Por exemplo, uma abordagem melhor para o nosso hipotético problema de contagem de carros pode ser aplicar uma abordagem de streaming , contando os carros em tempo real à medida que passam:
Nessa abordagem, você não precisa esperar até que todos os carros tenham estacionado para começar a processá-los, e você pode agregar os dados em intervalos de tempo; por exemplo, contando o número de carros que passam a cada minuto.
Exemplos reais de streaming de dados incluem:
- Uma instituição financeira que monitoriza as alterações no mercado de ações em tempo real, calcula o valor em risco e reequilibra automaticamente os portefólios com base nos movimentos do preço das ações.
- Uma empresa de jogos online que recolhe dados em tempo real das interações dos jogadores com o jogo e fornece os dados à respetiva plataforma de jogos. Em seguida, analisa os dados em tempo real, oferece incentivos e experiências dinâmicas para cativar os jogadores.
- Um site imobiliário que rastreia um subconjunto de dados de dispositivos móveis e faz recomendações de propriedades em tempo real para visitar com base em sua localização geográfica.
O processamento de transmissão em fluxo é ideal para operações de temporização crítica que requerem uma resposta instantânea em tempo real. Por exemplo, um sistema que monitoriza fumo e calor num edifício necessita de acionar alarmes e destrancar portas para permitir que os moradores consigam fugir imediatamente em caso de incêndio.
Compreender as diferenças entre dados de transmissão em fluxo e em lotes
Para além da forma como o processamento em lotes e o processamento de transmissão em fluxo processam dados, existem outras diferenças:
Escopo de dados: o processamento em lote pode processar todos os dados no conjunto de dados. O processamento de transmissão em fluxo normalmente só tem acesso aos dados recebidos mais recentes ou dentro de um intervalo de tempo (por exemplo, nos últimos 30 segundos).
Tamanho dos dados: O processamento em lote é adequado para lidar com grandes conjuntos de dados de forma eficiente. O processamento de transmissão em fluxo destina-se a registos individuais ou micro lotes com poucos registos.
Desempenho: 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 transmissão em fluxo geralmente ocorre no imediato, com uma latência de segundos ou milissegundos.
Análise: Normalmente, você usa o processamento em lote para executar análises complexas. O processamento de transmissão em fluxo é utilizado para funções de resposta mais simples, agregações ou cálculos como médias móveis.
Combinar processamentos de fluxos e em lotes
Muitas soluções de análise de grande escala incluem uma combinação de processamento em lote e fluxo, permitindo a análise de dados históricos e em tempo real. É comum que as soluções de processamento de fluxo capturem dados em tempo real, processem-nos filtrando-os ou agregando-os e apresentem-nos através de painéis e visualizações em tempo real (por exemplo, mostrando o total de carros que passaram por uma estrada dentro da hora atual), enquanto também persistem os resultados processados em um armazenamento de dados para análise histórica ao lado de dados processados em lote (por exemplo, para permitir a análise dos volumes de tráfego ao longo do último ano).
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 é o equivalente a redirecionar todos os carros que viajam ao longo de uma estrada para um estacionamento antes de contá-los).
O diagrama a seguir mostra algumas maneiras pelas quais o processamento em lote e fluxo pode ser combinado em uma arquitetura de análise de dados em grande escala.
- Os eventos de dados de uma fonte de dados de streaming são capturados em tempo real.
- Os dados de outras fontes são ingeridos em um armazenamento de dados (geralmente um data lake) para processamento em lote.
- 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.
- 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; muitas vezes filtrando ou agregando os dados em janelas temporais.
- Os dados sem streaming são periodicamente processados em lote para prepará-los para análise, e os resultados são mantidos em um armazenamento de dados analíticos (muitas vezes referido como um data warehouse) para análise histórica.
- Os resultados do processamento de fluxo também podem ser mantidos no armazenamento de dados analíticos para dar suporte à análise histórica.
- Ferramentas analíticas e de visualização são usadas para apresentar e explorar os dados históricos e em tempo real.
Nota
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 lote em larga escala e processamento de fluxo em tempo real para criar uma solução analítica de ponta a ponta.