Перейти к основному содержимому

4.1. Пространства имен - Buckets и Volumes

Основные концепции хранения данных в Apache Ozone: Пространства имен (Buckets и Volumes)

Apache Ozone предоставляет гибкую и масштабируемую систему хранения данных, организованную с помощью пространств имён. Данные структурируются через иерархическую модель, включающую Volumes (тома), Buckets (бакеты) и Keys (ключи). Такая модель позволяет эффективно управлять большими объёмами данных и распределять ресурсы между различными пользователями и приложениями.


1. Иерархия хранения в Ozone

Иерархия в Ozone имеет следующий вид:

Volume -> Bucket -> Key
  • Volume (Том): Верхний уровень пространства имён. Обычно используется для разделения ресурсов между пользователями или проектами.
  • Bucket (Бакет): Логическая единица хранения внутри тома, содержащая объекты (ключи). Бакет аналогичен бакету в S3.
  • Key (Ключ): Основной объект хранения данных (например, файл или блок). Ключи находятся внутри бакетов.

2. Volume (Том)

Том — это контейнер, используемый для управления доступом и разделения данных на уровне проектов, отделов или пользователей. Каждому тому можно назначить владельца и настроить квоты на использование ресурсов.

Создание тома

bin/ozone sh volume create /myvolume

Просмотр свойств тома

bin/ozone sh volume info /myvolume

Назначение квоты на объём данных и количество бакетов

bin/ozone sh volume setquota /myvolume --space-quota=100GB --bucket-quota=10
  • space-quota: Максимальный объём данных, который можно хранить в томе.
  • bucket-quota: Максимальное количество бакетов внутри тома.

3. Bucket (Бакет)

Бакет — это контейнер для ключей (объектов) внутри тома. Бакеты служат для организации данных и могут быть настроены с разными политиками хранения, такими как репликация и версионирование.

Создание бакета

bin/ozone sh bucket create /myvolume/mybucket

Просмотр информации о бакете

bin/ozone sh bucket info /myvolume/mybucket

Настройка политики репликации для бакета

bin/ozone sh bucket setreplication /myvolume/mybucket --replication=3
  • Репликация: Определяет количество копий данных для обеспечения отказоустойчивости.

Включение версионирования (опционально)

bin/ozone sh bucket setversioning /myvolume/mybucket --enabled

Версионирование позволяет сохранять несколько версий одного ключа.


4. Key (Ключ)

Ключ — это основной объект хранения данных в Ozone. Ключи находятся внутри бакетов и представляют собой файлы или блоки данных. Система Ozone позволяет добавлять, обновлять и извлекать ключи.

Добавление ключа в бакет

echo "Пример данных" > example.txt
bin/ozone sh key put /myvolume/mybucket/mykey example.txt

Получение содержимого ключа

bin/ozone sh key get /myvolume/mybucket/mykey

Удаление ключа

bin/ozone sh key delete /myvolume/mybucket/mykey

5. Основные концепции пространств имен

  1. Квоты и ограничения: Томам и бакетам можно назначать квоты на объём данных и количество объектов. Это позволяет контролировать использование ресурсов.

  2. Изоляция данных: Том используется для логической изоляции данных между пользователями или проектами. Внутри тома можно создавать несколько бакетов для структурирования данных.

  3. Политики репликации: Репликация обеспечивает отказоустойчивость системы. Реплики данных распределяются между различными узлами кластера для минимизации риска потери данных.

  4. Совместимость с S3: Бакеты в Ozone поддерживают API, совместимый с S3. Это позволяет использовать инструменты и приложения, работающие с S3, для доступа к данным в Ozone.


6. Пример использования: Сценарий организации данных

Допустим, у вас есть два проекта — ProjectA и ProjectB. Вы можете создать два тома для каждого проекта и организовать данные внутри них:

  1. Создание томов для проектов:

    bin/ozone sh volume create /projectA
    bin/ozone sh volume create /projectB
  2. Создание бакетов для хранения файлов:

    bin/ozone sh bucket create /projectA/logs
    bin/ozone sh bucket create /projectB/data
  3. Добавление файлов в соответствующие бакеты:

    bin/ozone sh key put /projectA/logs/log1.txt log1.txt
    bin/ozone sh key put /projectB/data/dataset.csv dataset.csv

Итог

Apache Ozone использует иерархическую структуру хранения данных, состоящую из Volumes, Buckets и Keys, что позволяет организовывать данные гибко и масштабируемо. Такая модель упрощает управление данными, обеспечивает изоляцию между проектами и пользователями и поддерживает гибкую настройку политик хранения.