Использование нескольких кластеров HDInsight с учетной записью Azure Data Lake Storage

Начиная с версии HDInsight 3.5, можно создавать кластеры HDInsight с учетными записями Azure Data Lake Storage в качестве файловой системы по умолчанию. Data Lake Storage поддерживает неограниченное пространство для хранения данных, поэтому оно идеально подходит не только для хранения больших объемов данных, но и для размещения нескольких кластеров HDInsight, которые совместно используют одну и ту же учетную запись Data Lake Storage. Сведения о том, как создать кластер HDInsight с хранилищем Data Lake Storage, см. в кратком руководстве по установке кластеров в HDInsight.

Эта статья содержит рекомендации для администратора Data Lake Storage по настройке единственной и общей учетной записи Data Lake Storage, которая может использоваться в нескольких активных кластерах HDInsight. Эти рекомендации применяются к размещению нескольких защищенных и небезопасных кластеров Apache Hadoop в общей учетной записи Data Lake служба хранилища.

Списки управления доступом на уровне файла и папки в Data Lake Storage

В оставшейся части этой статьи предполагается, что у вас хорошие знания списков управления доступом на уровне файла и папки в Azure Data Lake Storage, которые подробно описаны в разделе Управление доступом в Azure Data Lake Storage.

Настройка Data Lake Storage для нескольких кластеров HDInsight

Мы рассмотрим рекомендации по использованию нескольких кластеров HDInsight с учетной записью Data Lake Storage на примере двухуровневой иерархии папок. Предположим, что у вас есть учетная запись Data Lake Storage со структурой папок /clusters/finance. С такой структурой папок все кластеры, необходимые финансовой организации, могут использовать папку /clusters/finance в качестве расположения хранилища. Если другая организация (например, маркетинговая) захочет создать кластеры, использующие ту же учетную запись Data Lake Storage, для этой организации можно просто создать папку /clusters/marketing. Пока давайте использовать папку /clusters/finance.

Чтобы настроить такую структуру папок для кластеров HDInsight, администратору Data Lake Storage необходимо назначить соответствующие разрешения, как описано в следующей таблице. Разрешения, показанные в таблице, соответствуют спискам управления доступом (Access-ACL), а не спискам управления доступом по умолчанию (Default-ACL).

Папка Разрешения владельца Группа владельцев Именованный пользователь Разрешения именованного пользователя Именованная группа Разрешения именованной группы
/ rwxr-x--x администрирование администрирование Субъект-служба --x FINGRP r-x
/clusters rwxr-x--x администрирование администрирование Субъект-служба --x FINGRP r-x
/clusters/finance rwxr-x--t администрирование FINGRP Субъект-служба rwx - -

В этой таблице:

  • admin — создатель и администратор учетной записи Data Lake Storage.
  • Субъект-служба — это субъект-служба Microsoft Entra, связанный с учетной записью.
  • FINGRP — это группа пользователей, созданная в идентификаторе Microsoft Entra, который содержит пользователей из организации Finance.

Инструкции по созданию приложения Microsoft Entra (который также создает субъект-службу), см. в статье "Создание приложения Microsoft Entra". Инструкции по созданию группы пользователей в идентификаторе Microsoft Entra см. в разделе "Управление группами в идентификаторе Microsoft Entra".

Необходимо учесть следующие основные моменты.

  • Перед использованием учетной записи хранения для кластеров администратору Data Lake Storage необходимо создать и подготовить двухуровневую структуру папок (/clusters/finance/) с соответствующими разрешениями. Эта структура не создается автоматически при создании кластеров.

  • В приведенном выше примере рекомендуется установить FINGRP в качестве группы-владельца /clusters/finance и установить для FINGRP разрешения r-x для всей структуры папок начиная с корневой папки. Это позволит участникам группы FINGRP перемещаться по всей структуре папок начиная с корневой папки.

  • В случае, если разные субъекты-службы Microsoft Entra могут создавать кластеры в разделе /clusters/finance, то при установке в финансовой папке можно удалить папки, созданные одним субъектом-службой.

  • После создания структуры папок и настройки разрешений процесс создания кластера HDInsight создает расположение хранилища для кластера HDInsight в папке /clusters/finance/. Например, в качестве расположения для кластера с именем fincluster01 может использоваться папка /clusters/finance/fincluster01. В таблице ниже показаны владельцы и разрешения для папок, созданных для кластера HDInsight.

    Папка Разрешения владельца Группа владельцев Именованный пользователь Разрешения именованного пользователя Именованная группа Разрешения именованной группы
    /clusters/finanace/ fincluster01 rwxr-x--- Субъект-служба FINGRP - - - -

Рекомендации по входным и выходным данным задания

Входные и выходные данные задания рекомендуется размещать в папке за пределами папки /clusters. Даже если вы удалите папку кластера, чтобы освободить место в хранилище, все входные и выходные данные задания сохранятся для использования в будущем. В этом случае убедитесь, что иерархия папок для хранения входных и выходных данных задания обеспечивает соответствующий уровень доступа для субъекта-службы.

Ограничение на число кластеров, которые могут использовать общую учетную запись хранения

Ограничение на число кластеров, которые могут использовать общую учетную запись Data Lake Storage, зависит от рабочей нагрузки, выполняемой на этих кластерах. Наличие слишком большого количества кластеров или тяжелых рабочих нагрузок в кластерах, совместно использующих учетную запись хранения, может привести к регулированию входящего или исходящего трафика учетной записи хранения.

Поддержка списков управления доступом по умолчанию

При создании субъекта-службы с именованным доступом пользователей (как показано в таблице), рекомендуется не добавлять именованного пользователя с помощью ACL по умолчанию. При подготовке доступа именованного пользователя со списками управления доступом по умолчанию назначаются разрешения 770 для пользователя-владельца, группы-владельца и остальных пользователей. Это значение по умолчанию сохраняет все разрешения для пользователя-владельца (7) и группы-владельца (7), но удаляет все разрешения для других пользователей (0). Это приводит к известной проблеме, которая подробно описана в разделе Известные проблемы и их решения.

Известные проблемы и временные решения

В этом разделе перечислены известные проблемы, которые возникают при использовании HDInsight с Data Lake Storage, и их решения.

Открытые локализованные ресурсы Apache Hadoop YARN

При создании новой учетной записи Azure Data Lake Storage корневая папка автоматически подготавливается с разрешениями 770 для списка управления доступом. В качестве пользователя — владельца корневой папки устанавливается пользователь, который создал учетную запись (администратор Data Lake Storage), а в качестве группы-владельца — основная группа пользователя, который создал учетную запись. Доступ для других пользователей не предоставляется.

Эти параметры влияют на один из вариантов использования HDInsight, который описан в разделе YARN 247. Отправка заданий может завершиться ошибкой с сообщением об ошибке:

Resource XXXX is not publicly accessible and as such cannot be part of the public cache.

Как указано в статье YARN JIRA, ссылка на которую приведена выше, при локализации общедоступных ресурсов средство локализации проверяет, что все запрошенные ресурсы действительно являются общедоступными, анализируя их разрешения в удаленной файловой системе. Все локальные ресурсы, которые не соответствуют этому условию, исключаются из локализации. Проверка разрешений включает доступ на чтение к файлу для других пользователей. Этот сценарий не работает вне поля при размещении кластеров HDInsight в Azure Data Lake, так как Azure Data Lake запрещает доступ ко всем "другим" на уровне корневой папки.

Обходное решение

Задайте разрешения для выполнения чтения для других пользователей в иерархии, например в /разделе /clusters и /clusters/finance, как показано в таблице.

См. также