Поделиться через


Миграция локальных кластеров Apache Hadoop в HDInsight Azure — рекомендации по использованию миграции данных

В этой статье представлены рекомендации по миграции данных в Azure HDInsight. Это часть цикла, где приведены лучшие методики, применимые при перемещении локальных систем Apache Hadoop в Azure HDInsight.

Перенести локальные данные в Azure

Существует два основных способа для миграции данных из локальной среды Azure.

  • Передача данных по сети с помощью протокола TLS

    • Через Интернет: данные можно перенести в службу хранилища Azure, используя обычное интернет-подключение и любое из средств, таких как Обозреватель службы хранилища Azure, AzCopy, Azure Powershell и Azure CLI. Дополнительные сведения см. в статье Перемещение данных в службу хранилища Azure и обратно.

    • ExpressRoute. ExpressRoute — это служба Azure, которая позволяет создавать частные подключения между центрами обработки данных Microsoft и инфраструктурой вашей локальной среды или среды для совместной работы. Подключения ExpressRoute не осуществляются через общедоступный Интернет и обеспечивают повышенный уровень безопасности, надежности и быстродействия с низким уровнем задержки по сравнению с обычными подключениями через Интернет. Дополнительные сведения см. в руководстве по созданию и изменению канала ExpressRoute.

    • Data Box. Data Box Edge и Шлюз Data Box — это продукты для сетевой передачи данных, которые работают подобно шлюзам сетевого хранилища для управления данными между сайтом и Azure. Data Box Edge (локальное сетевое устройство) передает данные в Azure и обратно и использует вычисления Edge с поддержкой искусственного интеллекта (ИИ) для обработки данных. Шлюз Azure Data Box — это виртуальный модуль с возможностями шлюза хранилища. Дополнительные сведения см. в документации по сетевой передаче данных с помощью Azure Data Box.

  • Отправка данных в автономном режиме

    Data Box. Устройства Data Box, Диск Data Box и Data Box Heavy позволяют передавать большие объемы данных в Azure, когда отсутствует доступ к сети. Эти устройства для автономной передачи данных доставляются из организации в центр обработки данных Azure и обратно. Они используют шифрование AES для защиты передаваемых данных и проходят тщательный процесс очистки после отправки для удаления данных с устройства. Дополнительные сведения об устройствах Data Box для автономной передачи данных см. на странице Документация по Azure Data Box. Автономная передача данных. Дополнительные сведения о миграции кластеров Hadoop см. в статье Использование Azure Data Box для миграции из локального хранилища HDFS в службу хранилища Azure.

В следующей таблице приведены приблизительные данные времени передачи, в основе которых лежат данные тома и пропускная способность сети. Используйте Data Box, если предполагается, что миграция данных займет более трех недель.

Количество данных Сеть Bandwidth
из
45 Мбит/с (T3)
Сеть Bandwidth
из
100 Мбит/с
Сеть Bandwidth
из
1 Гбит/с
Сеть Bandwidth
из
10 Гбит/с
1 TБ 2 дней 1 день 2 часа 14 минут
10 ТБ 22 дня 10 дней 1 день 2 часа
35 ТБ 76 дней 34 дня 3 дней 8 часов
80 ТБ 173 дня 78 дней 8 дней 19 часов
100 ТБ 216 дней 97 дней 10 дней 1 день
200 ТБ 1 год 194 дня 19 дней 2 дня
500 TБ 3 года 1 год 49 дней 5 дней
1 ПБ 6 лет 3 года 97 дней 10 дней
2 ПБ 12 год 5 лет 194 дня 19 дней

Для передачи данных по сети можно использовать средства, встроенные в Azure (например, Apache Hadoop DistCp, Фабрика данных Azure и AzureCp). Независимый инструмент WANDisco можно также использовать с той же целью. Apache Kafka Mirrormaker и Apache Sqoop можно использовать для передачи текущих данных из локальной системы хранения Azure.

Рекомендации по производительности при использовании Apache Hadoop DistCp

DistCp — проект Apache, который использует задание сопоставления MapReduce для передачи данных, обработки и восстановления ошибок. Для каждой задачи сопоставления он назначает список исходных файлов. Задача сопоставления копирует все присвоенные файлы в назначение. Существует несколько методов, которые позволяют повысить производительность DistCp.

Увеличение количества модулей сопоставления

DistCp пытается создать задачу сопоставления таким образом, чтобы каждый из них копировал примерно одинаковое число байтов. По умолчанию задания DistCp используют 20 модулей сопоставления. Использование большего количества модулей сопоставления для Distcp (с параметром "m" в командной строке) увеличивает параллелизм во время процесса передачи данных и уменьшает объем передаваемых данных. При увеличении числа модулей сопоставления необходимо учитывать следующие две вещи.

  • Наименьшая степень детализации DistCp — один файл. Указывать количество модулей сопоставления больше, чем количество исходных файлов, бесполезно, к тому же будут тратиться доступные кластерные ресурсы.

  • Чтобы определить количество модулей сопоставления, рассмотрите доступную память Yarn в кластере. Каждая задача сопоставления запускается как контейнер Yarn. Если в кластере нет других тяжелых рабочих нагрузок, количество средств сопоставления можно определить следующими формулами: m = (число рабочих узлов * памяти YARN для каждого рабочего узла) / размер контейнера YARN. Если другие приложения используют память, то для заданий DistCp можно использовать только часть памяти YARN.

Использование нескольких заданий DistCp

Используйте несколько заданий DistCp в том случае, если размер перемещаемого набора данных больше 1 ТБ. Использование более одного задания сокращает влияние сбоев. В случае сбоя любого задания необходимо перезапустить только это задание.

Рассмотрим возможность разделения файлов

При наличии небольшого количества больших файлов попробуйте разбить их на фрагменты по 256 МБ, чтобы с помощью модулей сопоставления получить повышения степени параллелизма.

Использование "стратегии" параметров командной строки

Используйте параметр strategy = dynamic в командной строке. Значение параметра strategy по умолчанию — uniform size, в этом случае каждое сопоставление копирует примерно одинаковое число байтов. Если этот параметр изменяется на dynamic. Файл листинга разбивается на несколько блоков файлов. Количество блоков файлов — это любое количество сопоставлений. Каждой задачи сопоставления назначается один из блоков файлов. После обработки всех путей в блоке текущий блок удаляется, а новый — запрашивается. Процесс продолжается до тех пор, пока доступны блоки. Этот "динамический" подход позволяет быстрым задачам сопоставления использовать другие пути, в отличие от медленных, которые тем самым ускоряют общее задание DistCp.

Увеличение количества потоков

См., улучшается ли производительность при увеличении параметра -numListstatusThreads. Этот параметр управляет количеством потоков, используемых для создания списка файлов (максимальное значение — 40).

Использование алгоритма разработчика выходных данных

См., улучшается ли производительность при передачи параметра -Dmapreduce.fileoutputcommitter.algorithm.version=2. Этот алгоритм разработчика выходных данных выполняет оптимизацию написания выходных файлов в назначение. Ниже приведен пример команды, в котором показано использование различных параметров.

hadoop distcp -Dmapreduce.fileoutputcommitter.algorithm.version=2 -numListstatusThreads 30 -m 100 -strategy dynamic hdfs://nn1:8020/foo/bar wasb://<container_name>@<storage_account_name>.blob.core.windows.net/foo/

Миграция метаданных

Apache Hive

Хранилище метаданных Hive можно перенести с помощью сценариев или с помощью репликации базы данных.

Миграция хранилища метаданных Hive с помощью сценариев

  1. Создайте инструкции DDL Hive из локального хранилища метаданных Hive. Это действие можно выполнить, используя оболочку скрипта Bash.
  2. Измените сформированный код DDL, чтобы заменить URL-адрес HDFS URL-адресами WASB/ADLS/ABFS.
  3. Запустите обновленный код DDL в хранилище метаданных из кластера HDInsight.
  4. Убедитесь, что версия хранилища метаданных Hive совместима с локальной средой и облаком.

Миграция хранилища метаданных Hive с помощью репликации базы данных

  • Настройте репликацию базы данных между локальным хранилищем метаданных Hive DB и хранилищем метаданных HDInsight DB.

  • Используйте Hive MetaTool, чтобы заменить URL-адрес HDFS URL-адресами WASB/ADLS/ABFS (пример см. ниже).

    ./hive --service metatool -updateLocation hdfs://nn1:8020/ wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
    

Apache Ranger

  • Экспортируйте локальные политики Ranger для XML-файлов.
  • Преобразуйте пути HDFS для локальной среды в WASB/ADLS с помощью средства XSLT.
  • Импортируйте политики Range, запущенные на HDInsight

Следующие шаги

Прочитайте следующую статью в этом цикле: