Обзор службы хранилища Azure в HDInsight
Служба хранилища Azure — это надежное, универсальное решение, которое полностью интегрируется с HDInsight. HDInsight может использовать контейнер больших двоичных объектов в службе хранилища Azure в качестве файловой системы по умолчанию для кластера. С помощью интерфейса HDFS все компоненты HDInsight могут напрямую взаимодействовать со структурированными или неструктурированными данными, хранящимися как большие двоичные объекты.
Мы рекомендуем использовать отдельные контейнеры хранилища для хранилища кластера по умолчанию и бизнес-данных. Это позволит изолировать журналы HDInsight и временные файлы от ваших бизнес-данных. Мы также рекомендуем после каждого использования удалять контейнер больших двоичных объектов по умолчанию, который содержит журналы приложений и системные журналы. Это позволит сократить затраты на хранение. Обязательно извлеките эти журналы перед удалением контейнера.
Если вы решили защитить учетную запись хранения с помощью ограничений брандмауэров и виртуальных сетей для выбранных сетей, обязательно включите исключение Разрешить доверенным службам Майкрософт... Это исключение позволит HDInsight получать доступ к вашей учетной записи хранения.
Архитектура хранилища HDInsight
Следующая схема является абстрактным представлением архитектуры HDInsight службы хранилища Azure:
HDInsight предоставляет доступ к распределенной файловой системе, которая локально присоединена к вычислительным узлам. Доступ к этой файловой системе может осуществляться с использованием полного универсального кода ресурса (URI), например:
hdfs://<namenodehost>/<path>
HDInsight также обеспечивает доступ к данным в службе хранилища Azure. Синтаксис выглядит следующим образом:
wasb://<containername>@<accountname>.blob.core.windows.net/<path>
Для учетных записей с иерархическим пространством имен (Azure Data Lake Storage 2-го поколения) используется следующий синтаксис:
abfs://<containername>@<accountname>.dfs.core.windows.net/<file.path>/
Рассмотрите некоторые рекомендации для использования учетной записи хранения Azure с кластерами HDInsight.
Контейнеры в учетных записях хранения, подключенные к кластеру. Поскольку имя учетной записи и ключ связываются с кластером во время создания, вы получаете полный доступ к BLOB-объектам в этих контейнерах.
Общедоступные контейнеры или общедоступные BLOB-объекты в учетных записях хранения, не подключенные к кластеру. Вы получаете разрешение только на чтение BLOB-объектов в контейнерах.
Примечание.
Общедоступные контейнеры позволяют получить список всех доступных в этом контейнере больших двоичных объектов, а также метаданные контейнера. Общедоступные BLOB-объекты позволяют получить доступ к BLOB-объектам только при условии, что вам известен точный URL-адрес. Дополнительные сведения см. в статье Управление анонимным доступом на чтение к контейнерам и большим двоичным объектам.
Частные контейнеры в учетных записях хранения, не подключенные к кластеру. Вы не сможете получить доступ к большим двоичным объектам в контейнерах, пока не определите учетную запись хранения при отправке заданий WebHCat.
Определенные на этапе создания учетные записи хранения и их ключи хранятся в файле %HADOOP_HOME%/conf/core-site.xml на узлах кластера. По умолчанию HDInsight будет использовать учетные записи хранения, определенные в файле core-site.xml. Этот параметр можно изменить с помощью Apache Ambari. Дополнительные сведения о параметрах учетной записи хранения, которые можно изменить или поместить в файл core-site.xml, см. в следующих статьях:
- Поддержка Hadoop Azure: служба хранилища больших двоичных объектов Azure
- Поддержка Hadoop Azure: Azure Data Lake Storage 2-го поколения
Несколько заданий WebHCat, включая Apache Hive, MapReduce, потоковую передачу Apache Hadoop и Apache Pig, содержат описание учетных записей хранения и метаданные. (В настоящее время задания Pig содержат только описание учетных записей хранения, но не метаданные.) Дополнительные сведения см. в статье Using an HDInsight cluster with alternate storage accounts and metastores (Использование кластера HDInsight с альтернативными учетными записями хранения и хранилищами метаданных).
Большие двоичные объекты могут использоваться для хранения как структурированных, так и неструктурированных данных. В контейнерах больших двоичных объектов данные хранятся в виде пар "ключ — значение" и отсутствует иерархия каталогов. Тем не менее, в имени ключа может использоваться знак косой черты "/", чтобы оно выглядело так, будто файл хранится в структуре каталогов. Например, ключ большого двоичного объекта может выглядеть следующим образом: input/log1.txt
. Фактического каталога input
не существует, но из-за косой черты в имени ключа, ключ выглядит как путь к файлу.
Преимущества службы хранилища Azure
Вычислительные кластеры и ресурсы хранилища, которые не являются совместно размещенными, подразумевают затраты производительности. Эти затраты компенсируются благодаря созданию вычислительных кластеров близко к ресурсам учетной записи хранения в регионе Azure. В этом регионе эти вычислительные узлы могут получать эффективный доступ к данным по высокоскоростной сети в службе хранилища Azure.
При хранении данных в службе хранилища Azure вместо HDFS вы получаете ряд преимуществ:
Повторное использование данных и общий доступ к данным. Данные в файловой системе HDFS расположены внутри вычислительного кластера. Только приложения, имеющие доступ к вычислительному кластеру, могут использовать данные через API HDFS. Доступ к данным в службе хранилища Azure, напротив, может осуществляться через API HDFS или через REST API хранилища BLOB-объектов. Из за этого для создания и использования данных можно применять больший набор приложений (включая другие кластеры HDInsight) и средств.
Архивация данных. Сохранение данных в службе хранилища Azure позволяет безопасно (без потери пользовательских данных) удалять используемые для расчетов кластеры HDInsight.
Затраты на хранение данных. Хранение данных в файловой системе DFS в долгосрочной перспективе является более затратным, чем хранение данных в службе хранилища Azure, так как стоимость вычислительного кластера превышает стоимость службы хранилища Azure. Кроме того, так как данные не требуется повторно загружать при создании каждого вычислительного кластера, вы экономите также на загрузке данных.
Гибкое масштабирование. Хотя HDFS и представляет собой масштабируемую файловую систему, масштаб определяется количеством узлов, создаваемых для кластера. Изменение масштаба может оказаться более сложным, чем использование гибких возможностей масштабирования службы хранилища Azure, которые вы получаете автоматически.
Георепликация. Доступна функция георепликации службы хранилища Azure. Хотя это обеспечивает возможность географического восстановления и избыточность данных, переход в расположение геореплицированных данных при отработке отказа заметно влияет на производительность, что может привести к дополнительным затратам. Поэтому мы рекомендуем взвешенно подходить к использованию георепликации, применяя ее, только когда стоимость данных окупает дополнительные затраты.
Определенные задания и пакеты MapReduce могут создавать промежуточные результаты, которые нет нужды хранить в службе хранилища Azure. В таком случае можно выбрать хранение данных в локальной системе HDFS. HDInsight использует DFS для некоторых таких промежуточных результатов в заданиях Hive и других процессах.
Примечание.
Большинство команд HDFS (например, ls
, copyFromLocal
и mkdir
) работают правильно в службе хранилища Azure. В службе хранилища Azure будет отличаться поведение только тех команд, которые относятся к стандартной реализации HDFS (под названием DFS), например fschk
и dfsadmin
.