Интеграция 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
-
Используя 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
-
В сервисе Core configuration установите Ozone в качестве дефолтной файловой системы с помощью следующего параметра.
Раздел настроек Конфигурационный параметр Значение core-site.xml
fs.defaultFS
ofs://adho
-
Выполните действие Update Core configuration сервиса Core configuration.
Шаг 2. Настройка Spark3
-
Скопируйте необходимые архивы 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
-
Настройте сервис 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
-
Перезапустите сервис Spark3.
Шаг 3. Настройка Hive
-
Скопируйте необходимые файлы 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
-
Настройте сервис Hive на использование новой warehouse-директории в Ozone.
Раздел настроек Конфигурационный параметр Значение hive-site.xml
hive.metastore.warehouse.dir
ofs://adho/ozone/adh/apps/hive/warehouse
-
(Опционально) Измените расположение файлов базы данных
default
.Изменение расположения файлов БД-
На хосте с установленным клиентом Hive запустите оболочку
beeline
:$ beeline
-
В оболочке
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). -
Измените расположение файлов базы данных, выполнив команду:
ALTER DATABASE default SET LOCATION 'ofs://adho/ozone/adh/apps/hive/warehouse';
-
Проверьте новое расположение данных таблицы:
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 | | | | +----------+------------------------+--------------------------------------------+-------------------------------------------+-------------+-------------+-----------------+----------------+-------------+
-
-
Перезапустите сервис Hive.
Шаг 4. Настройка YARN
-
Создайте необходимые для работы YARN директории:
$ hdfs dfs -mkdir -p ofs://adho/ozone/adh/system/yarn/node-labels
-
Настройте 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
-
Перезапустите сервис 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}.
Необходимо учитывать, что в керберизированной среде в качестве
|