HDFS#
CedrusData Catalog поддерживает работу с файловой системой HDFS.
Для интеграции с HDFS вам необходимо получить требуемые для подключения файлы (файлы конфигурации, файлы Kerberos),
и положить их в директорию ресурсов каталога, задаваемую параметром конфигурации resource-dir
.
Обычно это директория <data-dir>/resource
при запуске из распакованного архива,
и /data/catalog/resource
при запуске из Docker-образа.
Аутентификация#
Интеграция с HDFS по умолчанию выполняет операции от имени пользователя, запустившего процесс CedrusData Catalog. Вы можете включить имперсонацию, чтобы работа с файловой системой происходила от имени пользователя каталога, запустившего текущую операцию каталога.
В обоих режимах работы (с и без имперсонации) вы можете использовать аутентификацию через Kerberos.
Конфигурация#
Параметр |
Описание |
---|---|
|
Список файлов конфигурации HDFS (например, core-site.xml, hdfs-site.xml), перечисленных через запятую. Файлы конфигурации могут содержать внутри пути к другим файлам. Если такие пути присутствуют, вам необходимо убедиться, что процесс каталога имеет доступ на чтение этих файлов. |
|
Включает или отключает имперсонацию. Значение по умолчанию: |
|
Principal, который будет использован для аутентификации через Kerberos.
Если имперсонация отключена, все операции над файловой системой будут выполнены от имени principal.
Если имперсонация включена, HDFS клиент сначала осуществит аутентификацию от имени principal,
но операции над файловой системой будут совершены от имени пользователя каталога.
Если параметр |
|
Путь к keytab относительно |
|
Путь к Kerberos credential cache относительно |
Пример интеграции с HDFS#
В данном примере мы развернем HDFS и настроим подключение к нему из CedrusData Catalog.
Мы будем использовать специальный Docker-образ Hadoop,
который является частью тестовой инфраструктуры Trino. Данный образ запускает внутри себя множество сервисов Hadoop, в том числе HDFS.
Скачивание образа может занять некоторое время.
Убедитесь, что у вас установлен Docker Server, и команда
docker
не требуетsudo
Создайте сеть Docker, которая будет использована CedrusData Catalog и HDFS:
Запустите Docker-контейнер Hadoop. Контейнер обязательно должен иметь имя
hadoop-master
:Создайте пустой файл в HDFS. В дальнейшем мы попытаемся получить его статус с помощью каталога для проверки работоспособности интеграции:
Создайте директорию
data/resource/myhdfs
, и перенесите в нее файлы конфигурации HDFS из образа:Запустите Docker-контейнер CedrusData Catalog, осуществив mount директории data на директорию контейнера
/data/catalog
. Таким образом файлы конфигурации HDFS станут доступны контейнеру CedrusData Catalog в директории/data/catalog/resource/myhdfs
:Создайте файловую систему HDFS. Единственным обязательным параметром является
config-resources
, в котором мы должны перечислить пути к файлам конфигурации HDFS. Разрешение путей происходит относительноresource-dir
каталога, который при запуске контейнера по умолчанию установлен в/data/catalog/resource
. Мы будем ссылаться на конкретный файл конфигурации HDFS по путиmyhdfs/<имя_файла>
, который будет разрешен в/data/catalog/resource/myhdfs/<имя_файла>
. Данный файл, в свою очередь, является файлом$PWD/data/resource/myhdfs/<имя_файла>
на хосте:Убедитесь, что каталог может получить статус объекта с помощью команды file-system check:
(при необходимости) Остановите контейнеры и удалите ненужные ресурсы: