Архитектура Ozone

Обзор

Apache Ozone (O3) — это распределенное хранилище объектов, использующее формат ключ/значение, оптимизированное для работы как с сервисами Hadoop, так и с хранилищами S3. Ozone обладает высокой масштабируемостью, может использовать те же политики безопасности кластера, что и HDFS, и способен эффективно обрабатывать файлы любого размера.

Основные преимущества Ozone:

  • В отличие от файловой системы HDFS, Ozone разработан для эффективной работы с большим количеством небольших файлов.

  • Хорошо интегрируется с сервисами Hadoop, такими как Hive, Spark, MapReduce, Kerberos и фреймворком Apache Ranger.

  • Поддерживает работу с удаленными объектными хранилищами через API Amazon S3.

  • Может работать с контейнерными средами, такими как Kubernetes и YARN.

Концепции

В Ozone существуют следующие основные элементы:

  • Блоки

    Как и в HDFS, блоки являются базовой единицей хранения. Каждый файл в системе состоит из блоков. Стандартный размер блока в Ozone составляет 256 МБ.

  • Контейнеры

    Контейнер — это группа блоков, которая реплицируется как единое целое.

  • Ключи

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

  • Бакеты (buckets)

    Бакеты — это директории в терминах Ozone. Они могут содержать любое количество ключей, но не могут содержать другие бакеты.

  • Том (volume)

    Том — это домашний каталог пользователя в Ozone, который может быть создан только администратором. Пространство имен Ozone может содержать любое количество томов. После создания тома пользователь может создавать контейнеры, принадлежащие этому тому.

Компоненты

Архитектура Ozone основана на следующих компонентах:

  • Ozone Manager

    Системная служба, которая управляет пространством имен таким же образом, как HDFS NameNode. Она регистрирует блоки, расположенные на узлах DataNodes, и предоставляет идентификаторы блоков по запросу.

  • Ozone Storage Container Manager

    Системная служба, которая управляет контейнерами. Она выделяет блоки и назначает их узлам DataNodes. Клиенты считывают и записывают эти блоки напрямую. Container Manager отслеживает все реплики блоков. Если происходит потеря данных или диска, он обнаруживает это и дает команду сделать копии недостающих блоков для обеспечения высокой доступности.

  • Ozone DataNode

    Служба Ozone, которая объединяет блоки в контейнеры.

  • Ozone Recon

    Сервер Ozone Recon взаимодействует со всеми другими компонентами Ozone и предоставляет единый API управления и пользовательский интерфейс.

Архитектура Ozone
Архитектура Ozone
Архитектура Ozone
Архитектура Ozone

Операции с данными

В Ozone есть три основных функциональных уровня:

  • Уровень метаданных, управляемый Ozone Manager и Storage Container Manager.

  • Уровень хранения данных, управляемый Ozone DataNodes.

  • Уровень репликации, управляемый Apache Ratis и используемый для репликации метаданных.

Ниже приведено описание того, как эти уровни взаимодействуют во время операций чтения и записи.

Операция записи

В Ozone операция записи проходит следующие этапы:

  1. Чтобы записать файл (ключ) в Ozone, клиент делает запрос в Ozone Manager. Запрос содержит информацию о бакете и томе, где будет создан ключ.

  2. Чтобы выделить блоки для нового ключа, Ozone Manager отправляет запрос в Storage Container Manager.

  3. Storage Container Manager выделяет блоки на узлах DataNode и возвращает их идентификаторы Ozone Manager.

  4. Ozone Manager записывает метаданные и возвращает токен блока (разрешение на запись данных в блок) клиенту.

  5. Клиент использует токен блока и записывает данные в DataNode.

Операция чтения

В Ozone операция чтения проходит следующие этапы:

  1. Клиент запрашивает список блоков, принадлежащих ключу, у Ozone Manager.

  2. Ozone Manager возвращает список блоков и токены блоков.

  3. Клиент подключается к DataNode и считывает данные.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней