Интеграция Ozone с сервисами кластера

В данной статье описан кейс интеграции сервиса Ozone с сервисами уже развернутого кластера ADH. В примерах показано, как настроить сервисы ADH (Spark3, Hive, Impala, YARN), чтобы вместо HDFS использовалась файловая система Ozone.

После переключения на Ozone сервисы ADH могут продолжать взаимодействовать с HDFS, а обе файловые системы могут использоваться вместе.

Тестовый кластер

Для приведенного сценария используется следующее окружение:

  • Развернутый кластер ADH версии 3.3.6.2 или выше. Кластер керберизирован и включает следующие сервисы:

    • Core configuration

    • ZooKeeper

    • HDFS

    • YARN

    • ADPG

    • Hive

    • Impala

    • Spark3

  • Сервис Ozone добавлен в уже функционирующий ADH-кластер. После установки сервиса Ozone необходимо выполнить действие Update Core configuration сервиса Core configuration, а также перезапустить следующие сервисы:

    • YARN

    • Hive

    • Impala

    • Spark3

    Это необходимо, чтобы подгрузить нужные зависимости Ozone в classpath.

  • Сервисы HDFS/Ozone используют следующие пространства имен (namespaces).

    Сервис/Компонент Конфигурационный параметр Значение

    HDFS

    dfs.internal.nameservices

    adh

    Ozone

    ozone.service.id

    adho

    Ozone Manager

    ozone.om.service.ids

    adho

    Ozone Storage Container Manager

    ozone.scm.service.ids

    adho

Настройка сервисов ADH для работы c Ozone

Шаг 1. Подготовка файловой системы Ozone

  1. Используя Ozone CLI, создайте том (volume) и бакет (bucket), где будут храниться данные сервисов ADH:

    $ ozone sh volume create ozone
    $ ozone sh bucket create /ozone/adh

    Проверьте созданный бакет:

    $ hdfs dfs -ls ofs://adho/ozone

    Вывод:

    drwxrwxrwx   - k_alpashkin_krb1 k_alpashkin_krb1          0 2025-02-05 15:41 ofs://adho/ozone/adh
  2. В сервисе Core configuration установите Ozone в качестве дефолтной файловой системы с помощью следующего параметра.

    Раздел настроек Конфигурационный параметр Значение

    core-site.xml

    fs.defaultFS

    ofs://adho

  3. Выполните действие Update Core configuration сервиса Core configuration.

Шаг 2. Настройка Spark3

  1. Скопируйте необходимые архивы Spark из HDFS в Ozone и создайте лог-директории:

    $ hdfs dfs -get hdfs://adh/apps/spark/spark3-yarn-archive.tgz
    $ hdfs dfs -mkdir -p ofs://adho/ozone/adh/apps/spark
    $ hdfs dfs -put spark3-yarn-archive.tgz ofs://adho/ozone/adh/apps/spark/spark3-yarn-archive.tgz
    $ hdfs dfs -mkdir -p ofs://adho/ozone/adh/var/log/spark/apps
  2. Настройте сервис Spark3 для работы с Ozone. Для этого укажите параметры конфигурации, перечисленные в таблице.

    Раздел настроек Конфигурационный параметр Значение

    spark-defaults.conf

    spark.yarn.archive

    ofs://adho/ozone/adh/apps/spark/spark3-yarn-archive.tgz

    spark.eventLog.dir

    ofs://adho/ozone/adh/var/log/spark/apps

    spark.history.fs.logDirectory

  3. Перезапустите сервис Spark3.

Шаг 3. Настройка Hive

  1. Скопируйте необходимые файлы Hive из HDFS в Ozone и создайте новую warehouse-директорию:

    $ hdfs dfs -get hdfs://adh/apps/tez/tez-0.10.3.tar.gz
    $ hdfs dfs -mkdir -p ofs://adho/ozone/adh/apps/tez
    $ hdfs dfs -put tez-0.10.3.tar.gz ofs://adho/ozone/adh/apps/tez/tez-0.10.3.tar.gz
    $ hdfs dfs -mkdir -p ofs://adho/ozone/adh/apps/hive/warehouse
  2. Настройте сервис Hive на использование новой warehouse-директории в Ozone.

    Раздел настроек Конфигурационный параметр Значение

    hive-site.xml

    hive.metastore.warehouse.dir

    ofs://adho/ozone/adh/apps/hive/warehouse

  3. (Опционально) Измените расположение файлов базы данных default.

    Изменение расположения файлов БД

     

    1. На хосте с установленным клиентом Hive запустите оболочку beeline:

      $ beeline
    2. В оболочке beeline подключитесь к Hive, используя строку JDBC для керберизированной среды, например:

      !connect jdbc:hive2://ka-adh-1.ru-central1.internal:2181,ka-adh-2.ru-central1.internal:2181,ka-adh-3.ru-central1.internal:2181/;principal=hive/ka-adh-2.ru-central1.internal@AD.RANGER-TEST;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=arenadata/cluster/17/hiveserver2
      РЕКОМЕНДАЦИЯ
      Актуальную JDBC-строку можно найти на странице сервиса Hive в ADCM (Clusters → <cluster_name> → Services → Hive → Info).
    3. Измените расположение файлов базы данных, выполнив команду:

      ALTER DATABASE default SET LOCATION 'ofs://adho/ozone/adh/apps/hive/warehouse';
    4. Проверьте новое расположение данных таблицы:

      DESCRIBE DATABASE EXTENDED default;

      Вывод:

    +----------+------------------------+--------------------------------------------+-------------------------------------------+-------------+-------------+-----------------+----------------+-------------+
    | db_name  |        comment         |                  location                  |              managedlocation              | owner_name  | owner_type  | connector_name  | remote_dbname  | parameters  |
    +----------+------------------------+--------------------------------------------+-------------------------------------------+-------------+-------------+-----------------+----------------+-------------+
    | default  | Default Hive database  | ofs://adho/ozone/adh/apps/hive/warehouse   | ofs://adho/ozone/adh/apps/hive/warehouse  | public      | ROLE        |                 |                |             |
    +----------+------------------------+--------------------------------------------+-------------------------------------------+-------------+-------------+-----------------+----------------+-------------+
  4. Перезапустите сервис Hive.

Шаг 4. Настройка YARN

  1. Создайте необходимые для работы YARN директории:

    $ hdfs dfs -mkdir -p ofs://adho/ozone/adh/system/yarn/node-labels
  2. Настройте YARN для работы с Ozone. Для этого укажите параметры конфигурации, перечисленные в таблице.

    Раздел настроек Конфигурационный параметр Значение

    Custom yarn-site.xml

    yarn.node-labels.fs-store.root-dir

    ofs://adho/ozone/adh/system/yarn/node-labels

    yarn.nodemanager.remote-app-log-dir

    ofs://adho/ozone/adh/logs

  3. Перезапустите сервис YARN.

После выполнения этих шагов сервисы Hive, Spark и Impala будут по умолчанию сохранять данные в Ozone, а не в HDFS. Кроме того, временные и пользовательские файлы, генерируемые сервисом YARN во время выполнения приложений, также будут сохраняться в Ozone.

Использование Ozone с HDFS

После переключения на файловую систему Ozone вышеупомянутые сервисы могут также взаимодействовать с HDFS.

Hive

Например, все таблицы Hive, которые были сохранены в HDFS до перехода на Ozone, остаются доступны. Для создания новых объектов Hive в HDFS, необходимо явно указать локацию. Например:

CREATE DATABASE IF NOT EXISTS db_for_hdfs
COMMENT 'This is a database in HDFS.'
LOCATION 'hdfs://adh/apps/hive/warehouse/db_for_hdfs.db';
ПРИМЕЧАНИЕ
Все таблицы, созданные в базе данных db_for_hdfs, по умолчанию будут сохраняться в HDFS.

Проверьте расположение файлов базы данных:

DESCRIBE DATABASE EXTENDED db_for_hdfs;

Вывод:

+--------------+---------------------------+------------------------------------------------+----------------------------------------------------+-------------+-------------+-----------------+----------------+-------------+
|   db_name    |          comment          |                    location                    |                  managedlocation                   | owner_name  | owner_type  | connector_name  | remote_dbname  | parameters  |
+--------------+---------------------------+------------------------------------------------+----------------------------------------------------+-------------+-------------+-----------------+----------------+-------------+
| db_for_hdfs  | This is database in hdfs  | hdfs://adh/apps/hive/warehouse/db_for_hdfs.db  | ofs://adho/ozone/adh/apps/hive/warehouse/db_for_hdfs.db | hive   | USER        |                 |                |             |
+--------------+---------------------------+------------------------------------------------+----------------------------------------------------+-------------+-------------+-----------------+----------------+-------------+

Spark3

После переключения керберизированного сервиса Spark3 на файловую систему Ozone кластер Spark3 может также работать с HDFS. Однако для этого требуется явно указать, что для доступа к HDFS необходимо пройти Kerberos-аутентификацию. Для этого используйте параметр spark.kerberos.access.hadoopFileSystems, принимающий список керберизированных файловых систем, с которыми будет работать приложение Spark. Например:

/bin/spark3-submit \
    --deploy-mode cluster \
    --master yarn \
    --conf spark.kerberos.access.hadoopFileSystems=hdfs://adh
    test.py
ПРИМЕЧАНИЕ

При использовании Ozone сервис Spark3 записывает staging-данные в бакет Ozone /user/{username}. Необходимо учитывать, что в керберизированной среде в качестве {username} используется имя Kerberos-принципала. Если имя пользователя, от которого запускается приложение Spark, не соответствует требованиям к именованию бакетов Ozone (например, содержит символы _), приложение Spark не выполнится, так как Ozone не сможет создать нужный бакет. Чтобы записать staging-данные Spark в заранее созданный бакет Ozone, используйте параметр spark.yarn.stagingDir. Данный параметр можно указать либо в настройках ADCM (Custom spark-defaults.conf), либо c помощью --conf, например:

/bin/spark3-submit \
    --deploy-mode cluster \
    --master yarn \
    --conf spark.yarn.stagingDir=ofs://adho/ozone/adh/var \
    test.py
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней