Использование Azure Data Lake Storage 2-го поколения с кластерами Azure HDInsight

Azure Data Lake Storage 2-го поколения — это служба облачного хранения, созданная на основе хранилища BLOB-объектов Azure и предназначенная для анализа больших данных. Data Lake Storage 2-го поколения сочетает в себе возможности хранилища BLOB-объектов Azure и Azure Data Lake Storage 1-го поколения. Семантику файловой системы, безопасность на уровне каталогов и файлов и адаптируемость — из Azure Data Lake Storage 1-го поколения. А также низкую стоимость, многоуровневое хранение и функции обеспечения высокой доступности и аварийного восстановления — из хранилища BLOB-объектов Azure.

Полное сравнение вариантов создания кластера с использованием Data Lake Storage 2-го поколения см. в статье Сравнение вариантов хранилищ для использования с кластерами Azure HDInsight.

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

Счета за кластеры HDInsight выставляются пропорционально в минутах, независимо от их использования. Обязательно удалите кластер, когда завершите его использование. Дополнительные сведения см. в статье Удаление кластера HDInsight с помощью браузера, PowerShell или классического интерфейса Azure CLI.

Доступность Azure Data Lake Storage 2-го поколения

Data Lake Storage 2-го поколения можно использовать в качестве хранилища почти для всех типов кластеров Azure HDInsight — как учетную запись по умолчанию и как дополнительную учетную запись. При этом HBase может иметь только одну учетную запись Data Lake Storage 2-го поколения.

Примечание

Если вы выбрали Data Lake Storage 2-го поколения в качестве основного хранилища, то не сможете выбрать Data Lake Storage 1-го поколения в качестве дополнительного.

Создание кластеров HDInsight, использующих Data Lake Storage 2-го поколения

По ссылкам ниже вы найдете подробные инструкции по созданию кластеров HDInsight с доступом к Data Lake Storage 2-го поколения.

Управление доступом для Data Lake Storage 2-го поколения в HDInsight

Какие типы разрешений поддерживаются в Azure Data Lake Storage 2-го поколения?

Data Lake Storage 2-го поколения использует модель управления доступом, которая поддерживает как управление доступом на основе ролей в Azure (Azure RBAC), так и POSIX-подобные списки управления доступом (ACL). В Data Lake Storage 1-го поколения списки управления доступом применяются только для управления доступом к данным.

В Azure RBAC используются роли для эффективного назначения наборов разрешений к пользователям, группам и субъектам-службам для ресурсов Azure. Обычно подобные ресурсы Azure ограничиваются ресурсами верхнего уровня (например, учетными записями хранилища BLOB-объектов Azure). Для хранилища BLOB-объектов Azure и Data Lake Storage 2-го поколения этот механизм также был расширен на ресурсы файловой системы.

Сведения о разрешениях для файлов при использовании Azure RBAC см. в разделе Управление доступом на основе ролей в Azure (Azure RBAC).

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

Как контролировать доступ к своим данным в Data Lake Storage 2-го поколения?

Для контроля доступа вашего кластера HDInsight к файлам в Data Lake Storage 2-го поколения используются управляемые удостоверения. Управляемое удостоверение — это удостоверение, которое регистрируется в Azure Active Directory (Azure AD) и учетными данными которого управляет Azure. При использовании управляемых удостоверений вам не требуется регистрировать субъекты-службы в Azure AD или сохранять учетные данные, например сертификаты.

В службах Azure есть управляемые удостоверения двух типов: назначаемые системой и назначаемые пользователем. Для доступа к Data Lake Storage 2-го поколения HDInsight использует управляемые удостоверения, назначаемые пользователем. user-assigned managed identity создается как изолированный ресурс Azure. При этом Azure создает удостоверение в доверенном клиенте Azure AD используемой подписки. После создания удостоверения оно может быть назначено одному или нескольким экземплярам служб Azure.

Управление жизненным циклом назначаемого пользователем удостоверения осуществляется отдельно от жизненного цикла экземпляров служб Azure, для которых оно назначено. Сведения об управляемых удостоверениях см. в статье Что такое управляемые удостоверения для ресурсов Azure?.

Как задать разрешения для пользователей Azure AD, чтобы они могли запрашивать данные из Data Lake Storage 2-го поколения с помощью Hive или других служб?

Чтобы задать для пользователей разрешения на запрос данных, используйте группы безопасности Azure AD в качестве назначенного субъекта в списках управления доступом. Не назначайте разрешения на доступ к файлам напрямую отдельным пользователям или субъектам-службам. Используя группы безопасности Azure AD для управления потоком разрешений, вы можете добавлять и удалять пользователей или субъекты-службы. При этом не потребуется многократно применять списки управления доступом ко всей структуре каталогов. Нужно просто добавить пользователей в соответствующую группу безопасности Azure AD или удалить их из нее. Списки управления доступом не наследуются, поэтому при их повторном применении нужно обновить список для каждого файла и подкаталога.

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

Из кластера HDInsight Есть к файлам в Data Lake Storage 2-го поколения можно получить доступ разными способами.

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

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

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

    /<file.path>/
    

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

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

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

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

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

    hdfs dfs -mkdir abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/
    hdfs dfs -mkdir abfs:///sampledata2/
    hdfs dfs -mkdir /sampledata3/
    
  3. Скопируйте данные из локального хранилища в хранилище кластера.

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

    hdfs dfs -ls abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/sampledata1/
    hdfs dfs -ls abfs:///sampledata2/
    hdfs dfs -ls /sampledata3/
    

Создание таблицы 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 'abfs://CONTAINERNAME@STORAGEACCOUNT.dfs.core.windows.net/example/data/';
LOCATION 'abfs:///example/data/';
LOCATION '/example/data/';

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