O Apache Druid é um armazenamento de dados distribuído, open source e orientado a colunas, usado para consultar e analisar problemas em grandes conjuntos de dados em tempo real. Desenvolvido inicialmente pela Metamarkets, o projeto foi doado à Apache Software Foundation na primavera de 2019.
Recursos básicos
O Apache Druid oferece os seguintes recursos:
Consultas OLAP com latência inferior a um segundo, incluindo filtragem multidimensional, agrupamento ad-hoc de atributos e agregação rápida de dados.
Consumo, coleta e consulta de dados em tempo real.
Capacidade multilocatário eficiente que permite a milhares de usuários realizar buscas online simultaneamente.
Alta escalabilidade para processar rapidamente dados na escala de petabytes, 100 bilhões de eventos e milhares de consultas simultâneas por segundo.
Disponibilidade extremamente alta e suporte a atualizações contínuas (rolling upgrades).
Cenários de uso
A análise de dados em tempo real é o cenário de uso mais típico do Apache Druid e abrange diversas áreas, como:
Monitoramento de indicadores em tempo real
Sistemas de recomendação
Plataformas de publicidade
Buscas em modelos
Esses cenários envolvem grandes volumes de dados e exigem baixa latência nas consultas. No monitoramento de indicadores em tempo real, é essencial detectar anomalias no momento da ocorrência para gerar alertas imediatos. Nos sistemas de recomendação, colete e envie prontamente os dados de comportamento do usuário ao sistema. Com apenas alguns cliques, o sistema identifica a intenção de busca e recomenda resultados mais adequados nas pesquisas futuras.
Arquitetura
O Apache Druid possui uma arquitetura robusta com múltiplos componentes que trabalham em conjunto para executar processos como coleta, indexação, armazenamento e consulta de dados.
Os componentes da camada de trabalho do Druid (responsáveis pela indexação e consulta de dados) incluem:
O componente de tempo real coleta dados em tempo real.
Na fase do broker, as tarefas de consulta são distribuídas e os resultados consolidados retornam ao usuário.
O nó histórico gerencia o armazenamento de dados já indexados. Esses dados residem no deep storage, que pode ser local ou um sistema de arquivos distribuído, como o HDFS.
-
O serviço de indexação consiste em dois componentes (não exibidos na figura).
O componente Overlord gerencia e distribui as tarefas de indexação.
O componente MiddleManager executa as tarefas de indexação.
Os componentes da camada de gerenciamento de segmentos do Druid (arquivos de índice do Druid) incluem:
O componente ZooKeeper armazena o status do cluster e descobre componentes, gerenciando informações de topologia, a eleição do líder Overlord e as tarefas de indexação.
O componente Coordinator administra os segmentos, cuidando do download, da exclusão e do balanceamento entre os nós históricos.
O armazenamento de metadados guarda as meta-informações dos segmentos e gerencia dados persistentes ou temporários do cluster, como configurações e logs de auditoria.
E-MapReduce Enhanced Druid
O E-MapReduce Druid traz diversas melhorias em relação ao Apache Druid original, incluindo integração nativa com o E-MapReduce e o ecossistema Alibaba Cloud, suporte simplificado a operações e monitoramento, além de interfaces de produto intuitivas. O serviço está pronto para uso logo após a aquisição, eliminando a necessidade de operação e manutenção 24/7.
O E-MapReduce Druid suporta os seguintes recursos:
Uso do OSS como deep storage
Uso de arquivos do OSS como source de dados para indexação em lote
Indexação de dados em streaming do Log Service com alta confiabilidade e semântica exactly-once
Armazenamento de metadados no RDS
Integração com ferramentas Superset
Scale up e scale down simplificados (o scale down aplica-se ao nó de tarefa)
Diversas métricas de monitoramento e regras de alerta
Migração de nós defeituosos
Modo de alta segurança
HA