Ir para o conteúdo

FlumenData

FlumenData logo

Lakehouse componível baseado em Docker Compose, unindo Spark 4, Delta Lake 4, Trino, Superset e MinIO.

Trino SQL JupyterLab Superset BI Tiers saudáveis

Status do Projeto

Tier 0 está validado: PostgreSQL e MinIO possuem healthchecks, volumes nomeados e configurações em /config. Tier 1 está operacional: Apache Spark 4.0.1, Hive Metastore 4.1.0 e Delta Lake 4.0 estão implantados e testados. Tier 2 e Tier 3 estão ativos: JupyterLab, Trino e Superset prontos para demonstrações.

Início Rápido

# 1) Clone o repositório
git clone https://github.com/lucianomauda/FlumenData.git
cd FlumenData

# 2) Inicialize o ambiente completo
python3 flumen init

# 3) Verifique que todos os serviços estão saudáveis
python3 flumen health

# 4) Visualize o resumo do ambiente
python3 flumen summary

Arquitetura

FlumenData implementa uma arquitetura lakehouse moderna com:

graph TD
    subgraph Tier0
        MINIO[MinIO S3]
        POSTGRES[PostgreSQL]
    end
    subgraph Tier1
        SPARK[Spark 4.0.1]
        HIVE[Hive Metastore]
        DELTA[Tabelas Delta Lake]
    end
    subgraph Tier2
        JUPYTER[JupyterLab]
    end
    subgraph Tier3
        TRINO[Trino]
        SUPERSET[Superset]
    end

    MINIO --> DELTA
    POSTGRES --> HIVE
    HIVE --> SPARK
    SPARK --> DELTA
    TRINO --> HIVE
    TRINO --> MINIO
    SUPERSET --> TRINO
    JUPYTER --> SPARK

Stack Tecnológico

Camada de Armazenamento: - MinIO - Armazenamento de objetos compatível com S3 para o data lake - Delta Lake 4.0 - Formato de tabela ACID com capacidades de viagem no tempo

Camada de Metadados: - Hive Metastore 4.1.0 - Catálogo padrão da indústria (namespace de 2 níveis: database.table) - PostgreSQL - Backend para metadados do Hive Metastore

Camada de Computação: - Apache Spark 4.0.1 - Motor de processamento e consultas distribuído (Master + 2 Workers)

Camada de Analytics: - JupyterLab - IDE PySpark acessível via navegador

Camada de SQL & BI: - Trino - Gateway SQL distribuído sobre o lakehouse - Apache Superset - Dashboards, gráficos e SQL Lab

Estrutura do Projeto

/FlumenData/
├── config/             # Configurações renderizadas (auto-geradas, não editar)
├── docker/             # Dockerfiles customizados
├── docs/               # Documentação MkDocs Material (EN + PT)
├── makefiles/          # Módulos Makefile específicos de serviços
├── templates/          # Templates de configuração
├── .env                # Variáveis de ambiente
├── docker-compose.tier0.yml  # Serviços de fundação
├── docker-compose.tier1.yml  # Serviços de plataforma de dados
└── Makefile            # Orquestração principal

Serviços

Tier 0 - Fundação

  • PostgreSQL 17.6 – Armazenamento de metadados relacional postgres:17.6-alpine3.22

  • MinIO – Armazenamento de objetos compatível com S3 minio/minio:RELEASE.2025-09-07T16-13-09Z

Tier 1 - Plataforma de Dados

  • Hive Metastore 4.1.0 – Catálogo do lakehouse Imagem customizada: flumendata/hive:standalone-metastore-4.1.0

  • Apache Spark 4.0.1 – Motor de computação distribuída Imagem customizada: flumendata/spark:4.0.1-health

Tier 2 - Analytics & Desenvolvimento

Tier 3 - SQL & BI

  • Trino 450 – Motor SQL federado Imagem: trinodb/trino:450

  • Apache Superset 5.0.0 – Dashboards e SQL Lab Imagem customizada: flumendata/superset:5.0.0

Recursos Principais

Integração Delta Lake

  • Transações ACID em armazenamento de objetos
  • Viagem no tempo (consultas históricas)
  • Evolução de schema
  • Batch e streaming unificados

Catálogo Hive Metastore

  • Namespace de 2 níveis (database.table)
  • Backend PostgreSQL para confiabilidade
  • Compatível com Spark, Presto, Trino
  • API Thrift padrão (porta 9083)

Cluster Spark

  • 1 Master + 2 Workers
  • Pré-configurado para Delta Lake
  • Integração S3A com MinIO
  • Cache Ivy para resolução rápida de dependências

Comandos Python CLI

Inicialização

python3 flumen init          # Configuração completa do ambiente
python3 flumen config        # Gerar todos os arquivos de configuração
python3 flumen up            # Iniciar todos os serviços

Gerenciamento de Serviços

python3 flumen up --tier 0      # Iniciar serviços de fundação
python3 flumen up --tier 1      # Iniciar serviços de plataforma de dados
python3 flumen down          # Parar todos os serviços
python3 flumen restart       # Reiniciar todos os serviços

Saúde e Validação

python3 flumen health        # Verificar saúde de todos os serviços
python3 flumen health --tier 0  # Verificar serviços Tier 0
python3 flumen health --tier 1  # Verificar serviços Tier 1

Testes

python3 flumen test          # Executar todos os testes
python3 flumen test --tier 0    # Testar serviços de fundação
python3 flumen test --tier 1    # Testar serviços de plataforma de dados

Verificação

python3 flumen verify-hive   # Verificar configuração do Hive Metastore
python3 flumen summary       # Exibir resumo do ambiente
python3 flumen ps            # Mostrar contêineres em execução

Logs

python3 flumen logs          # Mostrar logs de todos os serviços
python3 flumen logs --tier 0    # Mostrar logs do Tier 0
python3 flumen logs --tier 1    # Mostrar logs do Tier 1
python3 flumen logs --service spark-master    # Mostrar logs do Spark
python3 flumen logs --service hive-metastore     # Mostrar logs do Hive Metastore

Desenvolvimento

python3 flumen shell-postgres    # Abrir shell do PostgreSQL
python3 flumen shell-spark       # Abrir shell do Spark
python3 flumen shell-pyspark     # Abrir shell do PySpark
python3 flumen shell-spark-sql   # Abrir shell do Spark SQL
python3 flumen shell-mc                # Abrir cliente MinIO

Manutenção

python3 flumen rebuild         # Reconstrói imagens customizadas
python3 flumen clean         # Parar e remover tudo (PERIGOSO)

Convenções

  • Todo código e comentários estão em Inglês
  • Configuração é gerada via CLI Python em /config/ - nunca edite arquivos renderizados manualmente
  • Cada serviço deve ter healthcheck, volumes nomeados e configuração estática em /config/
  • Documentação é mantida em Inglês (docs/*.md) e Português (docs/*.pt.md)

Interfaces Web

Após executar python3 flumen init, acesse essas UIs:

  • Interface Spark Master: http://localhost:8080
  • Console MinIO: http://localhost:9001 (minioadmin / minioadmin123)
  • Buckets: lakehouse (tabelas Delta) e storage (arquivos para ingestão)
  • JupyterLab: http://localhost:8888 (execute python3 flumen token-jupyterlab para obter o token)
  • Console Trino: http://localhost:${TRINO_PORT}
  • Superset: http://localhost:${SUPERSET_PORT} (login: admin / admin123)

Roteiro

  • Tier 0 – Fundação: PostgreSQL, MinIO
  • Tier 1 – Plataforma de Dados: Spark, Hive Metastore, Delta Lake
  • Tier 2 – Analytics & Desenvolvimento: JupyterLab
  • Tier 3 – SQL & BI: Trino, Superset