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

4.2. Файловые и объектные интерфейсы

Основные концепции хранения данных в Apache Ozone: Файловые и объектные интерфейсы

Apache Ozone предоставляет два интерфейса для работы с данными: файловый интерфейс и объектный интерфейс. Эти интерфейсы позволяют работать с Ozone как с объектным хранилищем (аналогичным Amazon S3) и как с файловой системой, совместимой с HDFS. Такая гибкость делает Ozone универсальной платформой для различных сценариев использования данных.


1. Файловый интерфейс (Hadoop Compatible File System – HCFS)

Файловый интерфейс в Ozone позволяет использовать систему как аналог HDFS (Hadoop Distributed File System). Это обеспечивает бесшовную интеграцию с экосистемой Apache Hadoop и позволяет приложениям, таким как Spark, Hive и MapReduce, работать с Ozone как с файловой системой.

Основные особенности:

  • Совместимость с HDFS API: Ozone можно использовать вместо HDFS для хранения файлов и выполнения распределённых вычислений.
  • Интеграция с экосистемой Hadoop: Поддерживаются приложения, использующие стандартные Hadoop-интерфейсы.
  • HCFS (Hadoop Compatible File System): Ozone реализует стандарт HCFS, что позволяет использовать знакомые команды для работы с данными.

Пример настроек для использования HCFS:

В файле core-site.xml добавьте следующую конфигурацию:

<configuration>
<property>
<name>fs.defaultFS</name>
<value>o3fs://mybucket.myvolume.om1.example.com/</value>
</property>
</configuration>

Теперь можно использовать стандартные команды Hadoop для взаимодействия с Ozone.

Пример работы с файловым интерфейсом:

  • Загрузка файла:

    hadoop fs -put localfile.txt o3fs://mybucket.myvolume.om1.example.com/
  • Чтение файла:

    hadoop fs -cat o3fs://mybucket.myvolume.om1.example.com/localfile.txt
  • Удаление файла:

    hadoop fs -rm o3fs://mybucket.myvolume.om1.example.com/localfile.txt

2. Объектный интерфейс (S3 API)

Ozone поддерживает объектный интерфейс, который позволяет работать с данными через API, совместимый с Amazon S3. Это делает Ozone привлекательным для пользователей, разрабатывающих приложения, работающие с S3 API, и обеспечивает переносимость данных между локальной инфраструктурой и облачными провайдерами.

Основные особенности:

  • Совместимость с S3 API: Приложения, использующие Amazon S3, могут работать с Ozone без изменений в коде.
  • S3 Gateway (S3G): Компонент, предоставляющий API-совместимость с S3.
  • Возможность работы с бакетами и ключами: Данные в Ozone структурированы как объекты в S3.

Пример настройки S3 Gateway:

Добавьте следующую конфигурацию в ozone-site.xml:

<configuration>
<property>
<name>ozone.s3g.address</name>
<value>s3g.example.com:9874</value>
</property>
<property>
<name>ozone.s3g.bucket.layout</name>
<value>OBJECT_STORE</value>
</property>
</configuration>

Запустите S3 Gateway на нужном узле:

bin/ozone s3g --daemon start

Пример работы с S3-интерфейсом:

  • Создание бакета с использованием AWS CLI:

    aws s3api create-bucket --bucket mybucket --endpoint-url http://s3g.example.com:9874
  • Загрузка файла в бакет:

    aws s3 cp localfile.txt s3://mybucket/ --endpoint-url http://s3g.example.com:9874
  • Скачивание файла:

    aws s3 cp s3://mybucket/localfile.txt ./ --endpoint-url http://s3g.example.com:9874
  • Просмотр списка файлов в бакете:

    aws s3 ls s3://mybucket/ --endpoint-url http://s3g.example.com:9874

3. Сравнение файлового и объектного интерфейсов

ПараметрФайловый интерфейс (HCFS)Объектный интерфейс (S3 API)
Тип данныхФайлы и директорииОбъекты и бакеты
Протоколo3fsS3 API
Интеграция с HadoopПолнаяОграниченная
Поддержка версионированияНетДа
Типы клиентовHadoop-приложенияПриложения, использующие S3 API
Примеры использованияАналитические задачи (Spark, Hive)Облачные и веб-приложения

4. Использование интерфейсов в разных сценариях

  • Файловый интерфейс:

    • Подходит для аналитики и машинного обучения.
    • Используется для выполнения вычислительных задач в кластере Hadoop.
    • Удобен при переносе существующих приложений Hadoop на Ozone.
  • Объектный интерфейс:

    • Идеален для веб-приложений, резервного копирования и архивирования.
    • Подходит для сценариев, где требуется совместимость с S3.
    • Используется для интеграции с облачными сервисами и создания гибридных решений.