Создание Hive Metastore
Source:: https://docs.cedrusdata.ru/latest/guide/data-lakes-hms-setup.html
Данное руководство представляет инструкции по развертыванию Hive Metastore на локальном компьютере для тестирования работы CedrusData с озерами данных. Мы будем использовать локальную файловую систему для хранения данных и СУБД Postgres в Docker-контейнере для хранения метаданных.
Процесс развертывания занимает порядка 10-15 минут.
Введение
Что такое Hive Metastore
Озеро данных это совокупность файлов, хранящихся в файловой системе (например, HDFS или локальная файловая система) или облаке (например, S3). Для извлечения информации из файлов с помощью SQL необходимы метаданные, которые описывают, как представить информацию из файлов в виде реляционных таблиц. Примерами метаданных являются информация о путях к файлам, информация о колонках и типах данных, информация о partitioning. Hive Metastore представляет собой сервис управления метаданными.
Исторически Hive Metastore был частью инсталляции Hive, распределенного SQL-движка, который позволяет выполнять SQL-запросы к большим данным с помощью map-reduce задач Hadoop. Со временем популярность Hadoop и Hive снизилась, уступив место таким продуктам, как Spark и Trino. Так как Hive Metastore по-прежнему достаточно хорошо справляется с задачами управления метаданным, его продолжают использовать в инсталляциях Spark, Trino и ряда других продуктов в качестве изолированного компонента. Hive Metastore не требует развертывания Hadoop или Hive, но зависит от некоторых библиотек Hadoop.
Архитектура Hive Metastore
Hive Metastore получает запросы на чтение или изменение метаданных от сторонних приложений через встроенный сервер, который работает по протоколу Thrift.
Hive Metastore хранит метаданные в сторонней базе данных для обеспечения сохранности информации в случае перезапуска сервиса. При получении запроса, Hive Metastore получает или обновляет необходимые метаданные в базе данных через интерфейс JDBC.
Некоторые запросы к Hive Metastore требуют изменение данных непосредственно в файловой системе. Например, при получении запроса на создание схемы, необходимо директорию схемы в файловой системе, а при получении запроса на удаление таблицы, необходимо удалить соответствующие файлы.
Для выполнения операций над файловой системой, Hive использует интерфейс Hadoop FileSystem. Файловая система может требовать специфичную конфигурацию. Так, для работы с данными в локальной файловой системе необходимо знать директорию, в которой хранятся данные, а для работы с данными в S3 необходимо предоставить URL и ключи доступа к object storage.
Развертывание Hive Metastore
Инструкции ниже приведены для операционных систем Ubuntu/Debian с использованием сетевых портов по умолчанию. Адаптируйте инструкции, если вы используете другую операционную систему, или если у вас возникает конфликт портов.
- Убедитесь, что у вас установлена JDK 8 или выше. Мы рекомендуем использовать Eclipse Temurin JDK 21, которую можно установить с помощью следующих команд:
-
Убедитесь, что у вас установлен Docker Engine, и что команда
docker
не требуетsudo
. -
Запустите экземпляр Postgres в Docker-контейнере:
- Создайте директорию в локальной файловой системе, в которой будут храниться данные. Владельцем директории должен быть пользователь, от имени которого будет запущен Hive Metastore. В данном примере мы создаем директорию
/home/hive
и меняем владельца на текущего пользователя:
- Скачайте и распакуйте дистрибутив Hadoop:
- Скачайте и распакуйте дистрибутив Hive Metastore:
- Скачайте JDBC драйвер Postgres, и переместите его в поддиректорию
lib/
в директории дистрибутива Hive Metastore:
- В директории дистрибутива Hive Metastore задайте следующее содержимое файлу
conf/metastore-site.xml
. Важными значениями являются порт сервера Thrift в параметрахhive.metastore.port
иmetastore.thrift.uris
, порт Postgres в параметреjavax.jdo.option.ConnectionURL
и директория, в которой будут храниться файлы в параметреmetastore.warehouse.dir
. Измените соответствующие параметры, если вы используете другие порты или другую директорию.
- Задайте переменные окружения
JAVA_HOME
иHADOOP_HOME
:
Во многих случаях директорию установки JDK можно узнать с помощью следующей команды:
- Из директории дистрибутива Hive Metastore инициализируйте схему Hive Metastore в Postgres:
- Из директории дистрибутива Hive Metastore запустите Hive Metastore:
На этом процесс развертывания Hive Metastore завершен.
Проверка работы Hive Metastore с Trino
Docker
При запуске Trino в Docker папка в которой создаются файлы должна быть доступна внутри контейнера Trino!