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


Использование службы хранилища Azure с кластерами Azure HDInsight

Данные можно хранить в хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения. Также можно использовать сочетание этих ресурсов. Данные варианты хранилищ позволяют безопасно и без потери пользовательских данных удалять используемые для расчетов кластеры HDInsight.

В Apache Hadoop поддерживается концепция файловой системы по умолчанию. Файловая система по умолчанию подразумевает схему и полномочие по умолчанию. Она также может использоваться для разрешения относительных путей. При создании кластера HDInsight в качестве файловой системы по умолчанию можно указать контейнер BLOB в Azure Storage. Или с HDInsight 3.6 можно выбрать хранилище BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения в качестве системы файлов по умолчанию с несколькими исключениями.

Из этой статьи вы узнаете, как служба хранилища Azure работает с кластерами HDInsight.

Внимание

Тип учетной записи хранения BlobStorage можно использовать только как дополнительное хранилище кластеров HDInsight.

Вид учетной записи хранения Поддерживаемые службы Поддерживаемые уровни производительности Неподдерживаемые уровни производительности Поддерживаемые уровни доступа
StorageV2 (учетная запись общего назначения версии 2) BLOB Стандарт Премиум Горячий, холодный или архивный*
Хранилище общего назначения v1 BLOB Стандарт Премиум Н/П
BlobStorage BLOB-объект Стандарт Премиум Горячий, холодный или архивный*

Применяемый по умолчанию контейнер больших двоичных объектов не рекомендуется использовать для хранения бизнес-данных. Чтобы сократить затраты на хранение, контейнер BLOB по умолчанию рекомендуется удалять после каждого использования. Контейнер по умолчанию содержит журналы приложений и системный журнал. Обязательно извлеките эти журналы перед удалением контейнера.

Совместное использование одного контейнера объектов как файловой системы по умолчанию для нескольких кластеров не поддерживается.

Примечание.

Архивный уровень доступа — это автономный уровень с задержкой извлечения в несколько часов, который не рекомендуется использовать вместе с HDInsight. Дополнительные сведения см. в разделе Архивный уровень доступа.

Доступ к файлам из кластера

Примечание.

Команда службы хранилища Azure прекратила все активные разработки в WASB и рекомендует всем клиентам использовать драйвер ABFS для взаимодействия с BLOB-объектами и ADLS 2-го поколения. Дополнительные сведения см. в разделе Драйвер файловой системы BLOB-объектов Azure (ABFS): выделенный драйвер для службы хранилища Azure для Hadoop

  • С помощью полного доменного имени. При таком подходе необходимо указать полный путь к файлу, к которому требуется доступ.

    wasb://<containername>@<accountname>.blob.core.windows.net/<file.path>/
    wasbs://<containername>@<accountname>.blob.core.windows.net/<file.path>/
    
  • Использование сокращенного формата пути. При таком подходе путь до корня кластера заменяется на следующий:

    wasb:///<file.path>/
    wasbs:///<file.path>/
    
  • С помощью относительного пути. При таком подходе указывается только относительный путь к файлу, к которому требуется доступ.

    /<file.path>/
    

Примеры доступа к данным

Примеры основаны на SSH-подключении к головному узлу кластера. В примерах используются все три схемы URI. Замените CONTAINERNAME и STORAGEACCOUNT соответствующими значениями

Несколько команд HDFS

  1. Создайте файл в локальном хранилище.

    touch testFile.txt
    
  2. Создайте каталог в хранилище кластера.

    hdfs dfs -mkdir wasbs://[email protected]/sampledata1/
    hdfs dfs -mkdir wasbs:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Скопируйте данные из локального хранилища в хранилище кластера.

    hdfs dfs -copyFromLocal testFile.txt  wasbs://[email protected]/sampledata1/
    hdfs dfs -copyFromLocal testFile.txt  wasbs:///sampledata2/
    hdfs dfs -copyFromLocal testFile.txt  /sampledata3/
    
  4. Просмотрите содержимое директории на хранилище кластера.

    hdfs dfs -ls wasbs://[email protected]/sampledata1/
    hdfs dfs -ls wasbs:///sampledata2/
    hdfs dfs -ls /sampledata3/
    

Примечание.

При работе с большими двоичными объектами вне HDInsight большинство программ не распознают формат WASB и вместо этого ожидают формат базового пути, например example/jars/hadoop-mapreduce-examples.jar.

Создание таблицы Hive

Для наглядности показаны три расположения файлов. Для фактического выполнения используйте только одну из записей LOCATION.

DROP TABLE myTable;
CREATE EXTERNAL TABLE myTable (
    t1 string,
    t2 string,
    t3 string,
    t4 string,
    t5 string,
    t6 string,
    t7 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ' '
STORED AS TEXTFILE
LOCATION 'wasbs://[email protected]/example/data/';
LOCATION 'wasbs:///example/data/';
LOCATION '/example/data/';

Доступ к файлам из внешнего кластера

Корпорация Майкрософт предоставляет следующие инструменты для работы со службой хранилища Azure:

Инструмент Linux OS X Windows
Портал Azure
Azure CLI
Azure PowerShell
AzCopy

Указание пути к хранилищу из Ambari

  • Чтобы указать полный путь к настроенному хранилищу по умолчанию, перейдите в следующий раздел:

    HDFS>Конфигурации и введите fs.defaultFS в поле фильтра.

  • Чтобы проверить, настроено ли хранилище wasb как дополнительное, перейдите в следующий раздел:

    HDFS>Configs и введите blob.core.windows.net в поле ввода фильтра.

Сведения о том, как получить путь с помощью REST API Ambari, см. в разделе Получение хранилища по умолчанию.

контейнеров BLOB-объектов;

Чтобы использовать большие двоичные объекты, сначала создайте учетную запись службы хранилища Azure. В рамках этого шага укажите регион Azure, в котором создается учетная запись хранения. Кластер и учетная запись хранения должны размещаться в одном регионе. Базы данных SQL Server, используемые для хранилища метаданных Hive и Apache Oozie, должны располагаться в одном регионе.

Где бы ни находился созданный BLOB-объект, он принадлежит контейнеру в вашей учетной записи хранения Azure. Этот контейнер может быть существующим BLOB-объектом, созданным за пределами HDInsight. Или это может быть контейнер, созданный для кластера HDInsight.

Стандартный контейнер BLOB хранит сведения, специфичные для кластера, такие как история заданий и журналы. Не делитесь стандартным контейнером BLOB-объектов с несколькими кластерами HDInsight. Это действие может привести к повреждению журнала заданий. Для каждого кластера рекомендуется использовать отдельный контейнер. Общие данные следует поместить в связанную учетную запись хранения, указанную для всех соответствующих кластеров, а не в учетную запись хранения по умолчанию. Дополнительные сведения о настройке связанных учетных записей хранения см. в статье Создание кластеров HDInsight. Тем не менее, вы можете повторно использовать контейнер хранения по умолчанию после удаления исходного кластера HDInsight. Для кластеров HBase вы можете сохранить схему таблицы и данные, создав новый кластер HBase, используя контейнер по умолчанию, который использовался удаленным кластером HBase.

Примечание.

Функция, требующая безопасной передачи, обеспечивает принудительную передачу всех запросов к вашей учетной записи через безопасное подключение. Только кластер HDInsight версии 3.6 или более новой поддерживает эту функцию. Дополнительные сведения см. в статье Создание кластера Apache Hadoop с помощью учетных записей хранения с безопасной передачей в Azure HDInsight.

Использование дополнительных учетных записей хранения

При создании кластера HDInsight укажите учетную запись хранения Azure, которую необходимо с ним связать. Кроме того, в процессе создания или после создания кластера можно добавить дополнительные учетные записи хранения из той же или других подписок Azure. Инструкции по добавлению дополнительных учетных записей хранения см. в статье Создание кластеров Hadoop в HDInsight.

Предупреждение

Использование дополнительной учетной записи хранения в другом расположении, отличном от кластера HDInsight, не поддерживается.

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

Из этой статьи вы узнали, как использовать HDFS-совместимую службу хранилища Azure с HDInsight. В этом хранилище можно создавать адаптируемые, долгосрочные решения для получения данных архивирования, а также использовать HDInsight для разблокирования информации внутри хранимых структурированных и неструктурированных данных.

Дополнительные сведения см. в разделе: