Миграция#
Данный документ описывает способы миграции на CedrusData Catalog с других продуктов (например, Hive Metastore).
Миграция с помощью Iceberg Catalog Migrator#
Iceberg Catalog Migrator — это утилита командной строки с открытым исходным кодом для миграции таблиц Apache Iceberg между каталогами различных типов.
Iceberg Catalog Migrator поддерживает миграцию с каталогов Hive Metastore, REST, JDBC, Hadoop, Nessie, и других.
Примечание
Iceberg Catalog Migrator поддерживает миграцию объектов Iceberg namespace и table, но не поддерживает миграцию view.
Рекомендуем ознакомиться с документацией Iceberg Catalog Migrator перед началом работы.
Подготовка#
Убедитесь, что у вас установлена Java 21 (или более поздняя версия)
Скачайте Iceberg Catalog Migrator по ссылке и проверьте его работоспособность:
java -jar iceberg-catalog-migrator-cli-0.3.0.jar --version
Убедитесь, что каталог, с которого будет происходить миграция доступен по сети с текущего компьютера
Убедитесь, что CedrusData Catalog запущен и доступен по сети с текущего компьютера
Определите, в какой логический каталог CedrusData Catalog будет происходить миграция. Если логического каталога еще нет, создайте его с помощью команды iceberg catalog create
Убедитесь, что у вас есть постоянный токен доступа, владелец которого имеет права работы с объектами Iceberg
Убедитесь, что каталог-источник и каталог-приемник настроены на работу с одной и той же файловой системой
Миграция#
Выберите стратегию миграции:
register
— новые таблицы будет созданы в CedrusData Catalog;migrate
— новые таблицы будет созданы в CedrusData Catalog и удалены в каталоге-источнике. Мы рекомендуем использовать стратегиюregister
Определите список таблиц, подлежащих миграции. Для этого создайте файл, в котором будут перечислены имена таблиц в формате
namespace.table
, по одной таблице на каждую строку. Вы также можете получить список всех объектов, запустив Iceberg Catalog Migrator с опцией--dry-run
(см. инструкции ниже). В результате в текущей директории будет создан файлdry_run_identifiers.txt
, содержащий имена всех таблиц. Отредактируйте при необходимости данный файл, оставив только те таблицы, которые нужно мигрироватьЗапустите процесс миграции с помощью следующей команды:
java -jar iceberg-catalog-migrator-cli-0.3.0.jar register \ --source-catalog-type <тип_каталога_источника> \ --source-catalog-properties <свойства_каталога_источника> \ --target-catalog-type REST \ --target-catalog-properties uri=<сетевой_адрес_CedrusData_Catalog>/catalog/iceberg,ref=main,warehouse=<имя_логического_каталога>,credential=<постоянный_токен_доступа> \ --identifiers-from-file=<путь_к_файлу_с_идентификаторами_таблиц> \ --disable-safety-prompts \ --stacktrace
Ознакомьтесь с результатами работы команды. Если в консоли напечатано сообщение об успешной миграции, значит все таблицы успешно мигрированы в CedrusData Catalog. Если миграция не удалась, будет отображено сообщение об ошибке. Если произошла частичная миграция, будут созданы файлы
failed_identifiers.txt
иfailed_to_delete_at_source.txt
, содержащие список объектов, которые не удалось мигрировать
Пример миграции с Hive Metastore#
Ниже приведен пример команды для миграции таблиц в S3 с Hive Metastore в CedrusData Catalog.
В качестве свойств каталога-источника необходимо указать следующие параметры:
uri
— адрес Hive Metastore в форматеthrift://<host>:<port>
io-impl
— реализация файловой системы. В данном примере мы предполагаем, что данные хранятся в S3, поэтому значение параметра должно бытьorg.apache.iceberg.aws.s3.S3FileIO
s3.endpoint
— путь к S3. Например:https://s3.yandexcloud.net
илиhttp://minio:9000
s3.access-key-id
иs3.secret-access-key
— статические ключи доступа к S3s3.path-style-access
— использовать ли path-style режим формирования URL файлов S3. В большинстве случаев данный параметр должен иметь значениеtrue
client.region
— регион S3. Например:us-east-1
,ru-central1-a
Пример команды для формирования списка мигрируемых таблиц с помощью опции --dry-run
. В результате работы команды будет создан файл dry_run_identifiers.txt
со списком таблиц:
java -jar iceberg-catalog-migrator-cli-0.3.0.jar register \
--source-catalog-type HIVE \
--source-catalog-properties uri=thrift://hms_host:9083,io-impl=org.apache.iceberg.aws.s3.S3FileIO,s3.endpoint=https://minio:9000,s3.access-key-id=<s3_access_key>,s3.secret-access-key=<s3_secret_key>,s3.path-style-access=true,client.region=us-east-1 \
--target-catalog-type REST \
--target-catalog-properties uri=http://cedrusdata_catalog_host:9080/catalog/iceberg,ref=main,warehouse=my_catalog,credential=<постоянный_токен_доступа> \
--dry-run \
--stacktrace
Пример команды для миграции таблиц Hive Metastore, указанных в файле dry_run_identifiers.txt
в CedrusData Catalog:
java -jar iceberg-catalog-migrator-cli-0.3.0.jar register \
--source-catalog-type HIVE \
--source-catalog-properties uri=thrift://hms_host:9083,io-impl=org.apache.iceberg.aws.s3.S3FileIO,s3.endpoint=https://minio:9000,s3.access-key-id=<s3_access_key>,s3.secret-access-key=<s3_secret_key>,s3.path-style-access=true,client.region=us-east-1 \
--target-catalog-type REST \
--target-catalog-properties uri=http://cedrusdata_catalog_host:9080/catalog/iceberg,ref=main,warehouse=my_catalog,credential=<постоянный_токен_доступа> \
--identifiers-from-file=dry_run_identifiers.txt \
--disable-safety-prompts \
--stacktrace