Рекомендации по использованию Azure Data Lake Storage 2-го поколенияBest practices for using Azure Data Lake Storage Gen2

Из этой статьи вы узнаете о лучших методиках и рекомендациях по использованию Azure Data Lake Storage 2-го поколения.In this article, you learn about best practices and considerations for working with Azure Data Lake Storage Gen2. В этой статье приводятся сведения о безопасности, производительности, отказоустойчивости и мониторинге для Data Lake Storage 2-го поколения.This article provides information around security, performance, resiliency, and monitoring for Data Lake Storage Gen2. До появления Data Lake Storage 2-го поколения работа с большими данными в таких службах, как Azure HDInsight, представляла значительные сложности.Before Data Lake Storage Gen2, working with truly big data in services like Azure HDInsight was complex. Нужно было сегментировать данные в нескольких учетных записях хранения больших двоичных объектов, чтобы обеспечить хранение петабайтовых файлов и оптимальную производительность в этом масштабе.You had to shard data across multiple Blob storage accounts so that petabyte storage and optimal performance at that scale could be achieved. Data Lake Storage 2-го поколения поддерживает отдельные размеры файлов как 5 ТБ и большинство жестких ограничений производительности были удалены.Data Lake Storage Gen2 supports individual file sizes as high as 5TB and most of the hard limits for performance have been removed. В этой статье рассматриваются некоторые рекомендации по обеспечению высокой производительности при работе с Data Lake Storage 2-го поколения.However, there are still some considerations that this article covers so that you can get the best performance with Data Lake Storage Gen2.

Вопросы безопасностиSecurity considerations

Azure Data Lake Storage 2-го поколения предлагает элементы управления доступом POSIX для пользователей, групп и субъектов-служб Azure Active Directory (AAD).Azure Data Lake Storage Gen2 offers POSIX access controls for Azure Active Directory (Azure AD) users, groups, and service principals. Эти элементы управления доступом можно настроить для имеющихся файлов и каталогов.These access controls can be set to existing files and directories. Их также можно использовать для создания разрешений по умолчанию, чтобы применять их к новым файлам или каталогам.The access controls can also be used to create default permissions that can be automatically applied to new files or directories. См. дополнительные сведения о списках управления доступом для Data Lake Storage 2-го поколения.More details on Data Lake Storage Gen2 ACLs are available at Access control in Azure Data Lake Storage Gen2.

Сравнение использования групп безопасности и отдельных пользователейUse security groups versus individual users

При работе с большими данными в Data Lake Storage 2-го поколения, скорее всего, субъект-служба используется, чтобы разрешить службам, таким как Azure HDInsight, работать с данными.When working with big data in Data Lake Storage Gen2, it is likely that a service principal is used to allow services such as Azure HDInsight to work with the data. Однако встречаются случаи, когда доступ к данным также необходимо предоставить отдельным пользователям.However, there might be cases where individual users need access to the data as well. В любом случае старайтесь использовать группы безопасности Azure Active Directory вместо того, чтобы назначать отдельным пользователям права для каталогов и файлов.In all cases, strongly consider using Azure Active Directory security groups instead of assigning individual users to directories and files.

Когда группе безопасности назначены разрешения, для добавления или удаления пользователей в группе не требуются какие-либо изменения в параметрах Data Lake Storage 2-го поколения.Once a security group is assigned permissions, adding or removing users from the group doesn’t require any updates to Data Lake Storage Gen2. Это также поможет не превысить максимальное число записей управления доступом для списка управления доступом (ACL).This also helps ensure you don't exceed the maximum number of access control entries per access control list (ACL). Сейчас действует ограничение в 32 записи (включая четыре ACL типа POSIX, которые всегда связаны c каждым файлом и каталогом): владелец, группа владельцев, маска и прочие.Currently, that number is 32, (including the four POSIX-style ACLs that are always associated with every file and directory): the owning user, the owning group, the mask, and other. Каждый каталог может содержать ACL двух типов: ACL для доступа и ACL по умолчанию, что дает вам в общей сложности 64 записи управления доступом.Each directory can have two types of ACL, the access ACL and the default ACL, for a total of 64 access control entries. Дополнительные сведения о списках управления доступом в Azure Data Lake Storage 2-го поколения см. в этой статье.For more information about these ACLs, see Access control in Azure Data Lake Storage Gen2.

Безопасность для группSecurity for groups

Если вам или вашим пользователям требуется доступ к данным в учетной записи хранения, для которой включено иерархическое пространство имен, лучше всего использовать группы безопасности Azure Active Directory.When you or your users need access to data in a storage account with hierarchical namespace enabled, it’s best to use Azure Active Directory security groups. Некоторые Рекомендуемые группы для начала работы могут быть реадонлюсерс, вритеакцессусерс и фуллакцессусерс для корня контейнера, и даже разделять их для ключевых подкаталогов.Some recommended groups to start with might be ReadOnlyUsers, WriteAccessUsers, and FullAccessUsers for the root of the container, and even separate ones for key subdirectories. Если есть другие ожидаемые группы пользователей, которые нужно будет добавить позже, но они еще не определены, можно рассмотреть создание пустых групп безопасности с доступом к определенным папкам.If there are any other anticipated groups of users that might be added later, but have not been identified yet, you might consider creating dummy security groups that have access to certain folders. Использование группы безопасности позволит позднее обойтись без длительной обработки при назначении новых разрешений тысячам файлов.Using security group ensures that you can avoid long processing time when assigning new permissions to thousands of files.

Безопасность для субъектов-службSecurity for service principals

Субъекты-службы Azure Active Directory обычно используются такими службами, как Azure Databricks, для доступа к данным в Data Lake Storage 2-го поколения.Azure Active Directory service principals are typically used by services like Azure Databricks to access data in Data Lake Storage Gen2. Для многих клиентов может быть достаточно одного субъекта-службы Azure Active Directory, и он может иметь полные разрешения в корне контейнера Data Lake Storage 2-го поколения.For many customers, a single Azure Active Directory service principal might be adequate, and it can have full permissions at the root of the Data Lake Storage Gen2 container. Другим клиентам может потребоваться несколько кластеров с разными субъектами-службами, где у одного кластера будет полный доступ к данным, а у другого — только доступ на чтение.Other customers might require multiple clusters with different service principals where one cluster has full access to the data, and another cluster with only read access.

Включение брандмауэра для Data Lake Storage 2-го поколения с доступом к службе AzureEnable the Data Lake Storage Gen2 firewall with Azure service access

Data Lake Storage 2-го поколения позволяет включить брандмауэр и ограничить доступ только службами Azure, что очень полезно для сужения вектора внешних атак.Data Lake Storage Gen2 supports the option of turning on a firewall and limiting access only to Azure services, which is recommended to limit the vector of external attacks. Брандмауэр можно включить в учетной записи хранения в портал Azure через брандмауэр > включить брандмауэр (вкл.) > Разрешить доступ к параметрам служб Azure .Firewall can be enabled on a storage account in the Azure portal via the Firewall > Enable Firewall (ON) > Allow access to Azure services options.

Чтобы получить доступ к учетной записи хранения из Azure Databricks, разверните Azure Databricks в виртуальной сети, а затем добавьте эту виртуальную сеть в брандмауэр.To access your storage account from Azure Databricks, deploy Azure Databricks to your virtual network, and then add that virtual network to your firewall. См. раздел Настройка брандмауэров службы хранилища Azure и виртуальных сетей.See Configure Azure Storage firewalls and virtual networks.

Рекомендации по обеспечению устойчивостиResiliency considerations

При разработке системы с применением Data Lake Storage 2-го поколения или любой облачной службы следует оценить требования к доступности и способы реагирования на возможные перерывы в обслуживании.When architecting a system with Data Lake Storage Gen2 or any cloud service, you must consider your availability requirements and how to respond to potential interruptions in the service. Проблему можно локализовать на уровне конкретного экземпляра или даже всего региона, поэтому важно учесть все в комплексе.An issue could be localized to the specific instance or even region-wide, so having a plan for both is important. В зависимости от соглашений об уровне обслуживания в отношении целевого времени восстановления и целевой точки восстановления для вашей рабочей нагрузки вы можете выбрать более или менее агрессивную стратегию для обеспечения высокого уровня доступности и аварийного восстановления.Depending on the recovery time objective and the recovery point objective SLAs for your workload, you might choose a more or less aggressive strategy for high availability and disaster recovery.

Высокая доступность и аварийное восстановлениеHigh availability and disaster recovery

Высокий уровень доступности (HA) и аварийное восстановление (DR) иногда можно сочетать, хотя связанные стратегии немного отличаются, особенно при работе с данными.High availability (HA) and disaster recovery (DR) can sometimes be combined together, although each has a slightly different strategy, especially when it comes to data. Data Lake Storage 2-го поколения уже выполняет трехкратную репликацию в фоновом режиме для защиты от локальных сбоев оборудования.Data Lake Storage Gen2 already handles 3x replication under the hood to guard against localized hardware failures. Кроме того, другие параметры репликации, такие как ZRS или ГЗРС, улучшают высокий уровень доступности, а GRS & RA-GRS улучшают аварийное восстановление.Additionally, other replication options, such as ZRS or GZRS, improve HA, while GRS & RA-GRS improve DR. Составляя план для обеспечения высокого уровня доступности, в случае прерывания работы службы нужно как можно быстрее предоставить для рабочей нагрузки доступ к последним данным, выполнив переключение на отдельно реплицированный экземпляр в локальной среде или новом регионе.When building a plan for HA, in the event of a service interruption the workload needs access to the latest data as quickly as possible by switching over to a separately replicated instance locally or in a new region.

Чтобы подготовиться к маловероятному событию катастрофического отказа целого региона, в стратегию аварийного восстановления следует включить репликацию данных в другой регион с помощью GRS или RA-GRS.In a DR strategy, to prepare for the unlikely event of a catastrophic failure of a region, it is also important to have data replicated to a different region using GRS or RA-GRS replication. Также стоит оценить требования для таких пограничных случаев, как повреждение данных. Для них могут потребоваться периодические моментальные снимки, к которым можно будет вернуться в случае сбоя.You must also consider your requirements for edge cases such as data corruption where you may want to create periodic snapshots to fall back to. В зависимости от важности и размера данных рассмотрите возможность развертывания разностных моментальных снимков с интервалом времени 1, 6 и 24 часа в соответствии с допусками риска.Depending on the importance and size of the data, consider rolling delta snapshots of 1-, 6-, and 24-hour periods, according to risk tolerances.

Для обеспечения устойчивости данных в Azure Data Lake Storage 2-го поколения мы рекомендуем выполнять с помощью GRS или RA-GRS георепликацию данных в отдельный регион с частотой, которая соответствует вашим требованиям к высокой доступности и аварийному восстановлению.For data resiliency with Data Lake Storage Gen2, it is recommended to geo-replicate your data via GRS or RA-GRS that satisfies your HA/DR requirements. Обдумайте также, как организовать для приложения, которое использует Data Lake Storage 2-го поколения, автоматическую отработку отказа в дополнительный регион на основе триггеров мониторинга или длительности завершившихся сбоем попыток, или по меньшей мере отправку уведомлений администраторам для устранения неполадок вручную.Additionally, you should consider ways for the application using Data Lake Storage Gen2 to automatically fail over to the secondary region through monitoring triggers or length of failed attempts, or at least send a notification to admins for manual intervention. Имейте в виду, что есть компромисс — выполнить отработку отказа, а не ждать, когда служба снова станет работоспособной.Keep in mind that there is tradeoff of failing over versus waiting for a service to come back online.

Использование программы Distcp для перемещения данных между двумя расположениямиUse Distcp for data movement between two locations

DistCp (сокращение от distributed copy — распределенное копирование) представляет собой программу командной строки Linux, которая входит в состав Hadoop и обеспечивает распределенное перемещение данных между двумя расположениями.Short for distributed copy, DistCp is a Linux command-line tool that comes with Hadoop and provides distributed data movement between two locations. Этими расположениями могут быть Data Lake Storage 2-го поколения, HDFS или S3.The two locations can be Data Lake Storage Gen2, HDFS, or S3. В программе используются задания MapReduce в кластере Hadoop (например, HDInsight) для масштабирования на всех узлах.This tool uses MapReduce jobs on a Hadoop cluster (for example, HDInsight) to scale out on all the nodes. Distcp считается самым быстрым способом перемещения больших данных без специальных устройств сетевого сжатия.Distcp is considered the fastest way to move big data without special network compression appliances. Это средство также позволяет обновлять разностные данные между двумя расположениями, обрабатывать автоматические повторные попытки, а также применять динамическое масштабирование к вычислениям.Distcp also provides an option to only update deltas between two locations, handles automatic retries, as well as dynamic scaling of compute. Этот подход невероятно эффективен, когда, например, речь идет о реплицировании таблиц Hive и Spark, которые могут содержать много файлов больших размеров в одном каталоге, и вы хотите копировать только измененные данные.This approach is incredibly efficient when it comes to replicating things like Hive/Spark tables that can have many large files in a single directory and you only want to copy over the modified data. Именно поэтому Distcp является наиболее рекомендуемым инструментом для копирования данных между хранилищами больших данных.For these reasons, Distcp is the most recommended tool for copying data between big data stores.

Задания копирования могут запустить рабочие процессы Apache Oozie, использующие триггеры частоты или данных, а также задания Cron в Linux.Copy jobs can be triggered by Apache Oozie workflows using frequency or data triggers, as well as Linux cron jobs. Для интенсивных задач репликации рекомендуется развернуть отдельный кластер HDInsight Hadoop, который можно настроить и масштабировать специально для заданий копирования.For intensive replication jobs, it is recommended to spin up a separate HDInsight Hadoop cluster that can be tuned and scaled specifically for the copy jobs. Таким образом задания копирования и критические задания не будут влиять на работу друг друга.This ensures that copy jobs do not interfere with critical jobs. При выполнении репликации с достаточно широким интервалом кластер может прекращать работу между выполнением каждого задания.If running replication on a wide enough frequency, the cluster can even be taken down between each job. При выполнении отработки отказа в дополнительный регион в этом регионе нужно развернуть другой кластер для репликации новых данных обратно в основную учетную запись Data Lake Storage 2-го поколения, когда она возобновит свою работу.If failing over to secondary region, make sure that another cluster is also spun up in the secondary region to replicate new data back to the primary Data Lake Storage Gen2 account once it comes back up. Примеры применения DistCp см. в руководстве по использованию DistCp для копирования данных между BLOB-объектами хранилища Azure и Data Lake Storage 2-го поколения.For examples of using Distcp, see Use Distcp to copy data between Azure Storage Blobs and Data Lake Storage Gen2.

Использование фабрики данных Azure для планирования заданий копированияUse Azure Data Factory to schedule copy jobs

Фабрику данных Azure можно также использовать для планирования заданий копирования с помощью действия копирования или даже настроить выполнение с определенной частотой через мастер копирования.Azure Data Factory can also be used to schedule copy jobs using a Copy Activity, and can even be set up on a frequency via the Copy Wizard. Имейте в виду, что для фабрики данных Azure есть ограничение единиц перемещения облачных данных (DMU) и в конечном итоге ограничение пропускной способности или вычислительной мощности рабочих нагрузок с большими данными.Keep in mind that Azure Data Factory has a limit of cloud data movement units (DMUs), and eventually caps the throughput/compute for large data workloads. Кроме того, Фабрика данных Azure сейчас не предлагает обновление разностных данных между учетными записями Data Lake Storage 2-го поколения, поэтому для таких каталогов, как таблицы Hive, требуется полная репликация.Additionally, Azure Data Factory currently does not offer delta updates between Data Lake Storage Gen2 accounts, so directories like Hive tables would require a complete copy to replicate. Дополнительные сведения о копировании с помощью Фабрики данных см. в статье Загрузка данных в Azure Data Lake Storage Gen2 (предварительная версия) с помощью фабрики данных Azure.Refer to the data factory article for more information on copying with Data Factory.

Рекомендации по мониторингуMonitoring considerations

Data Lake Storage 2-го поколения предоставляет метрики на портале Azure в учетной записи Data Lake Storage 2-го поколения, а также в Azure Monitor.Data Lake Storage Gen2 provides metrics in the Azure portal under the Data Lake Storage Gen2 account and in Azure Monitor. Сведения о доступности Data Lake Storage 2-го поколения отображаются на портале Azure.Availability of Data Lake Storage Gen2 is displayed in the Azure portal. Чтобы получить самое актуальное состояние доступности для учетной записи Data Lake Storage 2-го поколения, следует выполнить собственные искусственные тесты для проверки доступности.To get the most up-to-date availability of a Data Lake Storage Gen2 account, you must run your own synthetic tests to validate availability. Также доступны и другие метрики, например общий занятый объем хранилища, запросы на чтение и запись, исходящий и входящий трафик. Они позволяют отслеживать приложения и активировать оповещения при превышении пороговых значений (например, среднего времени задержки или количества ошибок в минуту).Other metrics such as total storage utilization, read/write requests, and ingress/egress are available to be leveraged by monitoring applications and can also trigger alerts when thresholds (for example, Average latency or # of errors per minute) are exceeded.

Рекомендации в отношении структуры каталогаDirectory layout considerations

При размещении данных в Data Lake важно заранее спланировать структуру данных, чтобы можно было эффективно использовать безопасность, секционирование и обработку.When landing data into a data lake, it’s important to pre-plan the structure of the data so that security, partitioning, and processing can be utilized effectively. Многие из приведенных ниже рекомендаций применимы для всех рабочих нагрузок с большими данными.Many of the following recommendations are applicable for all big data workloads. Каждая рабочая нагрузка включает разные требования к способу использования данных. Ниже приводятся некоторые общие шаблоны, которые следует учесть при работе с пакетными сценариями и Центром Интернета вещей.Every workload has different requirements on how the data is consumed, but below are some common layouts to consider when working with IoT and batch scenarios.

Структура Центра Интернета вещейIoT structure

В рабочих нагрузках Центра Интернета вещей большое количество данных может размещаться в хранилище данных, которое охватывает множество продуктов, устройств, организаций и клиентов.In IoT workloads, there can be a great deal of data being landed in the data store that spans across numerous products, devices, organizations, and customers. Важно заранее спланировать структуру каталога для организации, обеспечения безопасности и эффективной обработки данных для нисходящих потребителей.It’s important to pre-plan the directory layout for organization, security, and efficient processing of the data for down-stream consumers. Ниже приведен общий шаблон, который стоит рассмотреть.A general template to consider might be the following layout:

{Region}/{Субжектматтер}/{ИИИИ}/{мм}/{дд}/{ХХ}/{Region}/{SubjectMatter(s)}/{yyyy}/{mm}/{dd}/{hh}/

Например, каталог размещения телеметрии для авиационного двигателя в Великобритании может выглядеть так:For example, landing telemetry for an airplane engine within the UK might look like the following structure:

Великобритания/плоскости/BA1293/Engine1/2017/08/11/12/UK/Planes/BA1293/Engine1/2017/08/11/12/

Есть важная причина размещать дату в конце структуры каталога.There's an important reason to put the date at the end of the directory structure. Если вы хотите заблокировать определенные регионы и типы данных для пользователей или групп, это можно легко сделать с помощью разрешений POSIX.If you want to lock down certain regions or subject matters to users/groups, then you can easily do so with the POSIX permissions. В противном случае, если возникнет необходимость ограничить определенную группу безопасности (например, просмотр данных только по Великобритании или по определенным самолетам), размещение структуры даты в начале потребует создавать отдельное разрешение для каждого из множества вложенных каталогов в каталогах за каждый час.Otherwise, if there was a need to restrict a certain security group to viewing just the UK data or certain planes, with the date structure in front a separate permission would be required for numerous directories under every hour directory. Кроме того, при наличии структуры даты в начале количество каталогов будет экспоненциально увеличиваться с течением времени.Additionally, having the date structure in front would exponentially increase the number of directories as time went on.

Структура пакетных заданийBatch jobs structure

На высоком уровне широко используемым подходом в пакетной обработке является размещение данных во вложенном каталоге.From a high-level, a commonly used approach in batch processing is to land data in an “in” directory. Как только данные будут обработаны, поместите новые данные во внешний каталог для использования нисходящими процессами.Then, once the data is processed, put the new data into an “out” directory for downstream processes to consume. Эта структура каталогов иногда наблюдается в случае заданий, требующих обработки отдельных файлов и не требующих массовой параллельной обработки больших наборов данных.This directory structure is seen sometimes for jobs that require processing on individual files and might not require massively parallel processing over large datasets. Как и рекомендованная выше структура Центра Интернета вещей, оптимальная структура каталога использует каталоги родительского уровня для региона и предметной области (например, организации, продукта или производителя).Like the IoT structure recommended above, a good directory structure has the parent-level directories for things such as region and subject matters (for example, organization, product/producer). Эта структура помогает обеспечить безопасность данных в организации и оптимизировать управление данными в рабочих нагрузках.This structure helps with securing the data across your organization and better management of the data in your workloads. Кроме того, рассмотрите дату и время в структуре, чтобы обеспечить лучшую организацию, отфильтрованные поисковые запросы, безопасность и автоматизацию в процессе обработки.Furthermore, consider date and time in the structure to allow better organization, filtered searches, security, and automation in the processing. Уровень детализации структуры даты определяется интервалом, с которым данные загружаются или обрабатываются, например ежечасно, ежедневно или даже ежемесячно.The level of granularity for the date structure is determined by the interval on which the data is uploaded or processed, such as hourly, daily, or even monthly.

Иногда обработка файлов завершается сбоем из-за повреждения данных или непредвиденных форматов.Sometimes file processing is unsuccessful due to data corruption or unexpected formats. В таких случаях в структуре каталога целесообразно использовать папку /bad, чтобы перемещать в нее файлы для дальнейшей проверки.In such cases, directory structure might benefit from a /bad folder to move the files to for further inspection. Пакетное задание также может обрабатывать отчет или уведомление об этих недопустимых файлах для устранения проблем вручную.The batch job might also handle the reporting or notification of these bad files for manual intervention. Рассмотрите следующую структуру:Consider the following template structure:

{Region}/{Субжектматтер}/ин/{ИИИИ}/{мм}/{дд}/{ХХ}/{Region}/{SubjectMatter(s)}/In/{yyyy}/{mm}/{dd}/{hh}/
{Region}/{Субжектматтер}/аут/{ИИИИ}/{мм}/{дд}/{ХХ}/{Region}/{SubjectMatter(s)}/Out/{yyyy}/{mm}/{dd}/{hh}/
{Region}/{Субжектматтер}/Бад/{ИИИИ}/{мм}/{дд}/{ХХ}/{Region}/{SubjectMatter(s)}/Bad/{yyyy}/{mm}/{dd}/{hh}/

Например, маркетинговая фирма ежедневно получает извлечения данных клиентских обновлений от своих клиентов в Северной Америке.For example, a marketing firm receives daily data extracts of customer updates from their clients in North America. Она может выглядеть, как приведенный ниже фрагмент кода, перед обработкой и после нее:It might look like the following snippet before and after being processed:

НД/извлекает/Акмепаперко/in/2017/08/14/updates_08142017.csvNA/Extracts/ACMEPaperCo/In/2017/08/14/updates_08142017.csv
НД/извлекает/Акмепаперко/out/2017/08/14/processed_updates_08142017.csvNA/Extracts/ACMEPaperCo/Out/2017/08/14/processed_updates_08142017.csv

В общем случае пакетных данных, обрабатываемых непосредственно в таких базах данных, как Hive или традиционных базах данных SQL, нет необходимости в папке /in или /out, так как результаты уже выводятся в отдельную папку для таблицы Hive или внешней базы данных.In the common case of batch data being processed directly into databases such as Hive or traditional SQL databases, there isn’t a need for an /in or /out folder since the output already goes into a separate folder for the Hive table or external database. Например, ежедневные извлечения данных от клиентов будут размещаться в их соответствующих папках, а при управлении с помощью фабрики данных Azure, Apache Oozie или Apache Airflow будет ежедневно выполняться задание Hive или Spark для обработки и записи данных в таблицу Hive.For example, daily extracts from customers would land into their respective folders, and orchestration by something like Azure Data Factory, Apache Oozie, or Apache Airflow would trigger a daily Hive or Spark job to process and write the data into a Hive table.