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


Использование DistCp для копирования данных между BLOB-объектами службы хранилища Azure и Azure Data Lake Storage 1-го поколения

Если у вас есть кластер HDInsight с доступом к Azure Data Lake Storage 1-го поколения, вы можете использовать такие средства экосистемы Hadoop, как DistCp, для копирования данных в хранилище кластеров HDInsight (WASB) в учетную запись Data Lake Storage 1-го поколения. В этой статье показано, как использовать средство DistCp.

Предпосылки

Использование Distcp из кластера HDInsight на платформе Linux

Кластер HDInsight поставляется с инструментом DistCp, который можно использовать для копирования данных из разных источников в кластер HDInsight. Если кластер HDInsight настроен для использования Data Lake Storage Gen1 в качестве дополнительного хранилища, вы можете использовать DistCp из коробки для копирования данных в и из учетной записи Data Lake Storage Gen1. В этом разделе мы рассмотрим, как использовать средство DistCp.

  1. На рабочем столе используйте SSH для подключения к кластеру. См. Подключение к кластеру HDInsight под управлением Linux. Выполните команды из командной строки SSH.

  2. Проверьте, можно ли получить доступ к BLOB-объектам службы хранилища Azure (WASB). Выполните следующую команду:

    hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
    

    Выходные данные предоставляют список содержимого в объекте хранения.

  3. Аналогичным образом проверьте, можно ли получить доступ к учетной записи Data Lake Storage 1-го поколения из кластера. Выполните следующую команду:

    hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/
    

    Выходные данные содержат список файлов и папок в учетной записи Data Lake Storage 1-го поколения.

  4. Используйте DistCp для копирования данных из WASB в учетную запись Data Lake Storage 1-го поколения.

    hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder
    

    Команда копирует содержимое папки /example/data/gutenberg/ в WASB в папку /myfolder в учетной записи Data Lake Storage первого поколения.

  5. Аналогичным образом используйте DistCp для копирования данных из учетной записи Data Lake Storage 1-го поколения в WASB.

    hadoop distcp adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg
    

    Команда копирует содержимое /myfolder в учетной записи Data Lake Storage 1-го поколения в папку </example/data/gutenberg/ в WASB.

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

Так как наименьшая степень детализации средства DistCp является одним файлом, установка максимального количества одновременных копий является наиболее важным параметром для оптимизации для Data Lake Storage 1-го поколения. Вы можете контролировать количество одновременных копий, задав количество параметров mappers (m) в командной строке. Этот параметр указывает максимальное количество мэпперов, которые используются для копирования данных. Значение по умолчанию — 20.

Пример:

 hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder -m 100

Как определить количество мапперов для использования

Ниже представлены некоторые полезные рекомендации.

  • Шаг 1: Определение общего объема памяти YARN - Первый шаг — определить объем памяти YARN, доступный кластеру, на котором выполняется задание DistCp. Эта информация доступна на портале Ambari, связанном с кластером. Перейдите к YARN и просмотрите вкладку конфигураций, чтобы просмотреть память YARN. Чтобы получить общую память YARN, умножьте память YARN на узел с количеством узлов, которые у вас есть в кластере.

  • Шаг 2. Расчет количества мапперов. Значение m равно частному от деления общего объема памяти YARN на размер контейнера YARN. Сведения о размере контейнера YARN также доступны на портале Ambari. Перейдите к YARN и просмотрите вкладку конфигураций. Размер контейнера YARN отображается в этом окне. Уравнение для вычисления числа картографов (m) выглядит следующим образом:

    m = (number of nodes * YARN memory for each node) / YARN container size

Пример:

Предположим, что у вас есть четыре узла D14v2s в кластере, и вы хотите передать 10 ТБ данных из 10 разных папок. Эти папки содержат различные объемы данных, и размеры файлов в каждой папке отличаются.

  • Общая память YARN — на портале Ambari вы определяете, что память YARN составляет 96 ГБ для узла D14. Таким образом, общий объем памяти YARN для кластера из четырех узлов равен:

    YARN memory = 4 * 96GB = 384GB

  • Количество карт — на портале Ambari вы определяете, что размер контейнера YARN равен 3072 для узла кластера D14. Итак, число картографов:

    m = (4 nodes * 96GB) / 3072MB = 128 mappers

Если другие приложения используют память, вы можете использовать только часть памяти YARN кластера для DistCp.

Копирование больших наборов данных

Если размер перемещаемого набора данных велик (например, > 1 ТБ) или если у вас есть несколько разных папок, рассмотрите возможность использования нескольких заданий DistCp. Скорее всего, нет повышения производительности, но оно распределяет задания таким образом, чтобы при сбое любого задания необходимо перезапустить только конкретное задание вместо всего задания.

Ограничения

  • DistCp пытается создать мапперы похожего размера для оптимизации производительности. Увеличение количества мапперов не всегда приводит к повышению производительности.

  • DistCp ограничивается одним маппером на файл. Поэтому вам нет необходимости иметь больше модулей сопоставления, чем файлов. Так как DistCp может назначить файлу только один сопоставитель, это ограничивает объем параллелизма, который можно использовать для копирования больших файлов.

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

  • При копировании из учетной записи хранения BLOB-объектов Azure задание копирования может регулироваться на стороне хранилища BLOB-объектов. Это снижает производительность задания копирования. Дополнительные сведения об ограничениях хранилища BLOB-объектов Azure см. в статье о лимитах Azure Storage на странице Лимиты подписки Azure и службы.

См. также