Apache Ozone
Object Storage

Ozone é um sistema de armazenamento de objetos redundante e distribuído, otimizado para cargas de trabalho de Big Data. O principal foco do design do Ozone é a escalabilidade, visando crescer até milhares de milhões de objetos.
Ozone separa a gestão do namespace da gestão do espaço de blocos, o que lhe permite escalar de forma muito mais eficiente. O namespace é gerido por um daemon chamado Ozone Manager (OM), enquanto o espaço de blocos é gerido pelo Storage Container Manager (SCM).
Ozone é composto por volumes, buckets e chaves. Um volume é semelhante a um diretório pessoal no ecossistema Ozone. Apenas um administrador pode criá-lo.
Os volumes são utilizados para armazenar buckets. Uma vez criado um volume, os utilizadores podem criar quantos buckets forem necessários. Ozone armazena os dados como chaves que residem dentro destes buckets.
O namespace do Ozone é composto por múltiplos volumes de armazenamento, que também são usados como base para a contabilização do armazenamento.
O diagrama de blocos abaixo ilustra os principais componentes do Ozone.

O Ozone Manager é responsável pela gestão do namespace, o Storage Container Manager gere a camada física e de dados, e o Recon funciona como a interface de gestão do Ozone.
Diferentes Perspetivas

Qualquer sistema distribuído pode ser analisado sob diferentes perspetivas. Uma forma de ver o Ozone é imaginá-lo como o Ozone Manager, um serviço de namespace construído sobre o HDDS, um sistema de armazenamento de blocos distribuído.
Outra maneira de visualizar o Ozone é através das suas camadas funcionais. Existe uma camada de gestão de metadados, composta pelo Ozone Manager e pelo Storage Container Manager.
Existe também uma camada de armazenamento de dados, que é constituída pelos nós de dados e gerida pelo SCM.
A camada de replicação, fornecida pelo Apache Ratis, é usada para replicar metadados (OM e SCM) e garantir consistência quando os dados são modificados nos nós de dados.
Existe um servidor de gestão chamado Recon, que comunica com todos os outros componentes do Ozone e fornece uma API de gestão unificada e uma interface de utilizador para o Ozone.
Ozone possui um barramento de protocolo que permite a sua extensão através de outros protocolos. Atualmente, suporta apenas o protocolo S3, que foi implementado através do barramento de protocolo. Este barramento fornece um mecanismo genérico que possibilita a implementação de novos protocolos de sistema de ficheiros ou de armazenamento de objetos que interagem com o protocolo O3 Native.
Arquitetura do Apache Ozone
A arquitetura do Apache Ozone foi concebida para gerenciar milhares de milhões de objectos com escalabilidade e resiliência. Ela separa o gerenciamento de namespace do gerenciamento de blocos, usando os seguintes componentes principais:
Ozone Manager (OM):
-
Gerencia o namespace (volumes, buckets e chaves).
-
Utiliza o protocolo Ratis para garantir a consistência em clusters distribuídos.
-
Storage Container Manager (SCM)**:
-
Gere os contentores, que são a unidade de replicação.
-
Coordena o posicionamento e a replicação de dados entre DataNodes.
-
-
DataNodes:
-
Armazenam fisicamente os dados em contentores.
-
Garantem alta disponibilidade e replicação eficiente.
-
-
Recon:
-
Ferramenta de monitorização e análise do cluster de Ozono.
-
Coleta métricas detalhadas para administração e diagnóstico.
-
-
Protocolo Ratis**:
- Implementa consenso distribuído para garantir replicação consistente.
Fluxo de operações no Ozono
-
Registo de dados
-
O cliente solicita ao OM a alocação de blocos nos DataNodes.
-
Os dados são escritos diretamente nos DataNodes e replicados conforme necessário.
-
-
Leitura de dados**:
-
O cliente pede ao OM para localizar dados.
-
Os dados são recuperados diretamente dos DataNodes.
-
-
Replicação de dados**:
- O SCM gere a replicação entre os DataNodes para garantir a tolerância a falhas.
Expectativas de desempenho
O Ozono emprega técnicas avançadas para atingir um elevado desempenho, tais como:
Replicação via RAFT para contentores abertos.
Replicação assíncrona para contentores fechados (dados frios).
Caraterísticas do Apache Ozone
O Apache Ozone oferece um conjunto robusto de recursos para atender às demandas de armazenamento massivo de dados. Aqui estão os destaques:
Compatibilidade S3:
APIs que permitem a integração com sistemas baseados em nuvem.
Ideal para migrações de dados e arquitecturas híbridas.
- Integração com o Hadoop**:
Alternativa direta ao HDFS, sem necessidade de adaptações a frameworks como o Apache Spark, Hive e YARN.
- Alta disponibilidade:
Baseado no Hadoop Distributed Data Store (HDDS), garante replicação consistente e tolerância a falhas.
- Suporte multimodal:
Permite o armazenamento como um sistema de ficheiros ou objetos, dependendo do caso de uso.
- Escalabilidade horizontal**:
Suporta milhares de milhões de objectos, tornando-o ideal para aplicações de Big Data e Cloud Native.
- Reconhecimento de topologia**:
Otimiza os pipelines de leitura e gravação com base no posicionamento dos nós no cluster.
Detalhes do Projeto Apache Ozone
O Apache Ozone é construído principalmente em Java, que é a linguagem de base para todo o ecossistema Hadoop, incluindo HDFS, YARN e outros componentes relacionados. Essa escolha permite que o Ozone se integre perfeitamente ao Hadoop e às estruturas associadas, como Spark, Hive e MapReduce.
