Sobre o projeto
A Plataforma de Análise de Clickstream E-Commerce é um projeto full-stack de engenharia de dados que processa aproximadamente 285 milhões de eventos de clickstream de um dataset do Kaggle, abrangendo outubro a novembro de 2019.
## Visão Geral
A plataforma ingere dados brutos de eventos em CSV (~14 GB) em um armazenamento de objetos compatível com S3 (MinIO), executa análises batch via Apache Spark, realiza streaming ao vivo através do Kafka e Spark Structured Streaming, executa trabalhos Hadoop MapReduce e fornece os resultados por meio de uma API FastAPI para um frontend React.
## Componentes da Arquitetura
**Ingestão e Armazenamento:**
- MinIO (armazenamento de objetos compatível com S3) guarda CSVs brutos e saídas Parquet
- PostgreSQL 16.3 armazena KPIs agregados e resultados prontos para consulta
- Redis 7.4.1 fornece a camada de cache
- Apache Kafka 3.9 (modo KRaft) atua como barramento de mensagens para dados em streaming
**Processamento:**
- Apache Spark 3.5 realiza ETL batch com cinco jobs PySpark: cálculo diário de KPIs, análise de funil, detecção de abandono de carrinho, pontuação de afinidade de produtos e preparação de dados para MapReduce
- Apache Hadoop 3.4.1 executando YARN Streaming rodou dois trabalhos MapReduce (contagem de eventos por categoria e agregação de receita por marca)
- Spark Structured Streaming consome do Kafka, agregando sessões ativas a cada 5 segundos e fazendo upsert no PostgreSQL
**Orquestração e API:**
- Apache Airflow 2.9.3 orquestra o pipeline batch completo como um DAG
- FastAPI (com asyncpg) expõe endpoints REST para o dashboard
- Templates Terraform cobrem deploy na AWS e GCP
**Frontend:**
- React 18.3 com TypeScript, Tailwind CSS e Recharts renderiza quatro páginas:
- Visão Geral: cartões de KPI e gráficos de tendência diária
- Análise de Funil: fluxo visualização-carrinho-compra e abandono por categoria
- Análise de Produtos: top produtos, marcas e categorias
- Monitor ao Vivo: rastreamento de sessões em tempo real via Server-Sent Events
## Pipeline de Dados
1. **Análise Batch**: O CSV bruto é lido do MinIO; métricas diárias (eventos, usuários, receita, taxa de conversão), top produtos/marcas/categorias são computados e gravados no PostgreSQL. Um job separado calcula taxas de funil por categoria, identifica abandono de carrinho e calcula scores de lift de afinidade de produtos (amostragem em 10% para performance).
2. **MapReduce**: Arquivos Parquet preparados são convertidos para CSV e enviados ao HDFS, onde jobs Hadoop Streaming contam eventos por categoria/event_type e somam receita por marca.
3. **Streaming ao Vivo**: Um producer do Kafka reexecuta o CSV em uma taxa configurável (padrão: 200 eventos/segundo). Um consumidor Spark Streaming agrega sessões ativas em micro-batches de 5 segundos e persiste na tabela `live_sessions`.
## Deploy
Todos os 13 serviços rodam via Docker Compose. Os pré-requisitos incluem Docker Desktop >= 4.30 com pelo menos 16 GB de RAM e 30 GB de espaço em disco. Usuários Windows precisam do WSL2 com pelo menos 12 GB de memória. O Makefile oferece targets para iniciar serviços, fazer upload de dados, executar pipelines e rodar testes.
URLs de acesso após o startup: Dashboard (porta 3000), FastAPI docs (porta 8000), Airflow (porta 8080), MinIO Console (porta 9001), Spark Master UI (porta 8081), HDFS NameNode (porta 9870) e YARN (porta 8088).
## Estrutura do Repositório
Os principais diretórios incluem `spark/jobs/` para os cinco scripts PySpark batch, `spark/streaming/` para o consumer do Kafka, `kafka/producer/` para o producer de replay, `api/` para o serviço FastAPI com endpoints roteados, `frontend/` para a aplicação React, `hadoop/mapreduce/` para os scripts de jobs de streaming, `airflow/dags/` para orquestração, `terraform/` para templates IaC e `docker/` para definições dos serviços Hadoop e Kafka.
Licença: MIT
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.