Apache Ozone
Armazenamento de Objetos

Ozone é um armazenamento de objetos redundante e distribuído otimizado para cargas de trabalho de Big Data. O principal ponto de design do ozone é a escalabilidade, e ele visa escalar para bilhões de objetos.
Ozone separa o gerenciamento de namespace e o gerenciamento de espaço de bloco; isso ajuda o ozone a escalar muito melhor. O namespace é gerenciado por um daemon chamado Ozone Manager (OM), e o espaço de bloco é gerenciado pelo Storage Container Manager (SCM).
Ozone consiste em volumes, buckets e chaves. Um volume é semelhante a um diretório inicial no mundo do ozone. Somente um administrador pode criá-lo.
Os volumes são usados para armazenar buckets. Depois que um volume é criado, os usuários podem criar quantos buckets forem necessários. Ozone armazena dados como chaves que vivem dentro desses buckets.
O namespace do Ozone é composto por muitos volumes de armazenamento. Os volumes de armazenamento também são usados como base para a contabilidade de armazenamento.
O diagrama de blocos mostra os principais componentes do Ozone.

O Ozone Manager é o gerenciador de namespace, o Storage Container Manager gerencia a camada física e de dados e o Recon é a interface de gerenciamento do Ozone.
Diferentes Perspectivas

Qualquer sistema distribuído pode ser visto de diferentes perspectivas. Uma maneira de olhar para o Ozone é imaginá-lo como o Ozone Manager como um serviço de namespace construído sobre o HDDS, um armazenamento de bloco distribuído.
Outra maneira de visualizar o Ozone é olhar para as camadas funcionais; temos uma camada de gerenciamento de dados de metadados, composta pelo Ozone Manager e pelo Storage Container Manager.
Temos uma camada de armazenamento de dados, que são basicamente os nós de dados e eles são gerenciados pelo SCM.
A camada de replicação, fornecida pelo Apache Ratis, é usada para replicar metadados (OM e SCM) e também usada para consistência quando os dados são modificados nos nós de dados.
Temos um servidor de gerenciamento chamado Recon, que se comunica com todos os outros componentes do Ozone e fornece uma API de gerenciamento unificada e UX para o Ozone.
Temos um barramento de protocolo que permite que o Ozone seja estendido por meio de outros protocolos. Atualmente, temos apenas suporte ao protocolo S3 construído por meio do barramento de protocolo. O barramento de protocolo fornece uma noção genérica de que você pode implementar novos protocolos de sistema de arquivos ou armazenamento de objetos que chamam o protocolo O3 Native.
Arquitetura do Apache Ozone
A arquitetura do Apache Ozone foi projetada para gerenciar bilhões de objetos com escalabilidade e resiliência. Ele separa a gestão do namespace do gerenciamento de blocos, utilizando os seguintes componentes principais:
-
Ozone Manager (OM):
- Gerencia o namespace (volumes, buckets e chaves).
- Utiliza o protocolo Ratis para garantir consistência em clusters distribuídos.
-
Storage Container Manager (SCM):
- Gerencia containers, que são a unidade de replicação.
- Coordena o posicionamento e replicação dos dados entre os DataNodes.
-
DataNodes:
- Armazenam fisicamente os dados em containers.
- Garantem alta disponibilidade e replicação eficiente.
-
Recon:
- Ferramenta de monitoramento e análise do cluster Ozone.
- 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 Ozone
-
Gravação de Dados:
- O cliente solicita ao OM a alocação de blocos nos DataNodes.
- Os dados são gravados diretamente nos DataNodes e replicados conforme necessário.
-
Leitura de Dados:
- O cliente consulta o OM para localizar os dados.
- Os dados são recuperados diretamente dos DataNodes.
-
Replicação de Dados:
- O SCM gerencia a replicação entre DataNodes para garantir tolerância a falhas.
Expectativas de Performance
O Ozone emprega técnicas avançadas para alcançar alta performance, como:
-
Replicação via RAFT para containers abertos.
-
Replicação assíncrona para containers fechados (dados frios).
Recursos do Apache Ozone
O Apache Ozone oferece um conjunto robusto de recursos para atender às demandas de armazenamento de dados massivos. Aqui estão os mais destacados:
-
Compatibilidade com S3:
APIs que permitem integração com sistemas baseados em nuvem. Ideal para migrações de dados e arquiteturas híbridas.
-
Integração com Hadoop:
Alternativa direta ao HDFS, sem necessidade de ajustes em frameworks como 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 armazenamento como sistema de arquivos ou objetos, dependendo do caso de uso.
-
Escalabilidade Horizontal:
Suporta bilhões de objetos, sendo ideal para aplicações em Big Data e Cloud Native.
-
Reconhecimento de Topologia:
Otimiza pipelines de leitura e escrita com base no posicionamento dos nós no cluster.
Detalhes do Projeto Apache Ozone
O Apache Ozone foi construído principalmente em Java, que é a linguagem base de todo o ecossistema Hadoop, incluindo HDFS, YARN e outros componentes relacionados. Essa escolha permite ao Ozone integrar-se perfeitamente ao Hadoop e aos frameworks associados, como Spark, Hive e MapReduce.
