O Apache Doris é um sistema de análise de dados (OLAP) de alta performance baseado em uma arquitetura MPP (Massively Parallel Processing). Este guia detalha o processo de compilação utilizando ambientes isolados com Docker e as especificações de hardware recomendadas para diferentes cenários de carga.
1. Processo de Compilação com Docker
A utilização de imagens Docker para compilação é a abordagem recomendada, pois garante um ambiente com todas as dependências e toolchains necessárias pré-configuradas, evitando conflitos de bibliotecas no sistema hospedeiro.
Obtenção da Imagem de Build
Dependendo da versão do Doris que você deseja compilar, escolha a imagem apropriada no repositório oficial:
# Para versões baseadas no branch principal (master)
docker pull apache/incubator-doris:build-env-ldb-toolchain-latest
# Para uma versão específica (ex: 0.15.0)
docker pull apache/incubator-doris:build-env-for-0.15.0
Configuração do Ambiante e Execução
Para otimizar o processo e evitar downloads repetitivos de dependências do Maven, recomenda-se mapear o diretório local .m2 para dentro do container.
# Criando o diretório de trabalho
mkdir -p /opt/doris_build/maven_repo
# Iniciando o container com mapeamento de volumes
docker run -it \
-v /opt/doris_build/maven_repo:/root/.m2 \
-v /opt/doris_build/source_code:/root/doris_source \
apache/incubator-doris:build-env-for-0.15.0
Download e Construção dos Binários
Dentro do ambiente do container, proceda com a obtenção do código-fonte e a execução do script de construção:
# Acesse o diretório mapeado
cd /root/doris_source
# Obtenha o código via Git ou Wget
git clone https://github.com/apache/doris.git
cd doris
# Execução do build inicial (limpeza completa e construção de todos os módulos)
sh build.sh --clean --fe --be --ui
Após a conclusão, os artefatos resultantes estarão localizados no diretório output/.
2. Requisitos de Infraestrutura
O desempenho do Apache Doris está diretamente ligado à capacidade de processamento paralelo. Abaixo estão as diretrizes para ambientes de teste e produção.
Especificações de Hardware
| Cenário | Módulo | CPU | Memória (RAM) | Armazenamento | Rede |
|---|---|---|---|---|---|
| Desenvolvimento / Teste | Frontend (FE) | 8 Cores+ | 8 GB+ | 10 GB+ (SSD/SATA) | 1 Gbps |
| Backend (BE) | 8 Cores+ | 16 GB+ | 50 GB+ (SSD/SATA) | 1 Gbps | |
| Produção | Frontend (FE) | 16 Cores+ | 64 GB+ | 100 GB+ (SSD/RAID) | 10 Gbps |
| Backend (BE) | 16 Cores+ | 64 GB+ | 100 GB+ (SSD/SATA) | 10 Gbps |
Considerações Importantes sobre os Nós
- Frontend (FE): Responsável por armazenar metadados, processar consultas e gerenciar o cluster. Em produção, utilize no mínimo 3 instâncias do tipo Follower para garantir alta disponibilidade (HA) via protocolo de consenso.
- Backend (BE): Responsável pelo armazenamento de dados e execução dos cálculos. O espaço em disco deve ser calculado como:
(Volume de Dados Total * 3 réplicas) / 0.6, garantindo margem para compactação e arquivos temporários. - Sincronização: É crítico que os relógios de todos os servidores estejam sincronizados (máximo de 5 segundos de desvio).
- Swap: Desative o Swap em todos os nós para evitar degradação de performance em operações de memória intensiva.
3. Topologia de Alta Disponibilidade
Para ambientes críticos, a configuração de FE segue regras específicas de consenso:
- O número de nós Follower deve ser sempre ímpar (1, 3 ou 5).
- Nós do tipo Observer podem ser adicionados horizontalmente para aumentar a capacidade de leitura sem impactar o quórum de escrita.
- Um cluster básico de produção deve conter pelo menos 3 nós BE distribuídos em máquinas físicas distintas para garantir a tolerância a falhas das réplicas de dados.