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

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

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

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

Важно!

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

Тип учетной записи хранения Поддерживаемые службы Поддерживаемые уровни производительности Неподдерживаемые уровни производительности Поддерживаемые уровни доступа
StorageV2 (учетная запись общего назначения версии 2) BLOB-объект Standard Premium Горячий, холодный или архивный*
Учетная запись хранения общего назначения версии 1 BLOB-объект Standard Premium Недоступно
BlobStorage BLOB-объект Standard Premium Горячий, холодный или архивный*

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

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

Примечание

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

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

Существует несколько способов доступа к файлам в Data Lake Storage из кластера HDInsight. Эта схема URI предоставляет как незашифрованный доступ с префиксом wasb: , так и доступ с использованием TLS-шифрования с wasbs. Мы рекомендуем использовать wasbs всегда, когда это возможно, даже при обращении к данным, которые хранятся в том же регионе Azure.

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

    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://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/
    hdfs dfs -mkdir wasbs:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Скопируйте данные из локального хранилища в хранилище кластера.

    hdfs dfs -copyFromLocal testFile.txt  wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/sampledata1/
    hdfs dfs -copyFromLocal testFile.txt  wasbs:///sampledata2/
    hdfs dfs -copyFromLocal testFile.txt  /sampledata3/
    
  4. Перечислите содержимое каталога в хранилище кластера.

    hdfs dfs -ls wasbs://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/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://CONTAINERNAME@STORAGEACCOUNT.blob.core.windows.net/example/data/';
LOCATION 'wasbs:///example/data/';
LOCATION '/example/data/';

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

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

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

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

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

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

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

    HDFS>Configs (Конфигурации) и введите blob.core.windows.net в поле фильтра.

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

Контейнеры больших двоичных объектов

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

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

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

Примечание

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

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

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

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

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

Дальнейшие действия

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

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