Пакетная обработка

Кодирование

Типичный сценарий работы с большими данными — это пакетная обработка неактивных данных. В этом случае исходные данные загружаются в хранилище данных либо самим исходным приложением, либо рабочим процессом оркестрации. Затем данные параллельно обрабатываются на месте с помощью задания, которое также может быть инициировано рабочим процессом оркестрации. В рамках обработки может выполняться несколько итеративных шагов до того, как преобразованные результаты будут загружены в хранилище аналитических данных для последующего запроса компонентами аналитики и отчетов.

Например, журналы с веб-сервера могут быть скопированы в папку, а затем обработаны за ночь для формирования ежедневных отчетов о веб-действии.

Diagram of a batch processing pipeline

Когда следует использовать это решение

Пакетная обработка используется в различных сценариях — от простых преобразований данных до полного конвейера ETL (извлечение, преобразование и загрузка). В контексте больших данных пакетная обработка может выполняться для очень больших наборов данных, которые вычисляются длительное время. (Например, см. лямбда-архитектуру.) Пакетная обработка обычно приводит к дальнейшему интерактивному исследованию, предоставляет готовые к моделированию данные для машинного обучения или записывает данные в хранилище данных, оптимизированное для аналитики и визуализации.

Одним из примеров пакетной обработки является преобразование большого набора плоских, полуструктурированных CSV- или JSON-файлов в схематизированный и структурированный формат, который можно запрашивать. Обычно данные преобразуются из необработанных форматов, используемых для приема (например, CSV), в двоичные форматы, которые более эффективны для запросов, так как хранят данные в формате столбцов и часто предоставляют индексы и встроенную статистику данных.

Сложности

  • Формат данных и кодирование. Некоторые из самых сложных проблем возникают, когда файлы используют непредвиденный формат или кодирование. Например, исходные файлы могут использовать сочетание кодировки UTF-16 и UTF-8, содержать непредвиденные разделители (пробел вместо знака табуляции) или символы. Другим распространенным примером являются текстовые поля, содержащие вкладки, пробелы или запятые, которые интерпретируются как разделители. Логика загрузки и анализа данных должна быть достаточно гибкой, чтобы обнаруживать и обрабатывать такие проблемы.

  • Оркестрация временных срезов. Часто исходные данные помещаются в иерархию папок, которая отображает окна обработки, упорядоченные по годам, месяцам, дням, часам и т. д. В некоторых случаях данные могут быть получены позднее. Например, предположим, что веб-сервер выходит из строя, а журналы за 7 марта не попадают в папку для обработки до 9 марта. Они просто пропускаются, так как получены слишком поздно? Может ли подчиненная логика обработки обрабатывать записи, полученные в неправильном порядке?

Архитектура

Архитектура пакетной обработки имеет следующие логические компоненты, показанные на схеме выше.

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

  • Пакетная обработка. Так как наборы данных очень велики, часто в решении обрабатываются длительные пакетные задания. Для них выполняется фильтрация, статистическая обработка и другие процессы подготовки данных к анализу. Обычно в эти задания входит чтение исходных файлов, их обработка и запись выходных данных в новые файлы.

  • Хранилище аналитических данных. Многие решения по обработке больших данных спроектированы так, чтобы подготавливать данные к анализу и предоставлять их в структурированном формате для запросов через средства аналитики.

  • Анализ и создание отчетов. Большинство решений по обработке больших данных предназначены для анализа и составления отчетов, что позволяет получить важную информацию.

  • Оркестрация. При пакетной обработке обычно требуется выполнить оркестрацию для переноса или копирования данных в хранилище, самой обработки, хранения аналитических данных и создания отчетов.

Выбор технологий

Мы рекомендуем применять следующие технологии для пакетной обработки данных в Azure.

Хранилище данных

  • Контейнеры больших двоичных объектов хранилища Azure. Многие существующие бизнес-процессы Azure уже используют хранилище BLOB-объектов Azure, что делает его удобным решением для хранения больших данных.
  • Azure Data Lake Store Azure Data Lake Store предлагает практически неограниченное хранилище для файлов любого размера и широкие возможности обеспечения безопасности, что удобно для хранения чрезвычайно крупных решений обработки больших данных, для которых требуется централизованное хранилище содержимого в гетерогенных форматах.

Дополнительные сведения см. в статье Выбор технологии хранения больших данных в Azure.

Пакетная обработка

  • U-SQL. Это язык обработки запросов, используемый в Azure Data Lake Analytics. Он сочетает декларативный характер SQL с процедурной расширяемостью C# и обеспечивает эффективную обработку данных в значительном масштабе за счет параллелизма.
  • Hive. Это SQL-подобный язык, который поддерживается в большинстве дистрибутивов Hadoop, включая HDInsight. Он может использоваться для обработки данных из любого хранилища, совместимого с HDFS, включая хранилище BLOB-объектов Azure и Azure Data Lake Store.
  • Pig. Это декларативный язык обработки больших данных, используемый во многих дистрибутивах Hadoop, включая HDInsight. Он особенно удобен для обработки данных, которые не структурированы или структурированы частично.
  • Spark. Платформа Spark поддерживает программы пакетной обработки, написанные на разных языках, включая Java, Scala и Python. Spark использует распределенную архитектуру для параллельной обработки данных в нескольких рабочих узлах.

Дополнительные сведения см. в статье о пакетной обработке.

Хранилище аналитических данных

  • Azure Synapse Analytics. Azure Synapse является управляемой службой на основе технологий баз данных SQL Server, которая оптимизирована для поддержки крупномасштабных рабочих нагрузок хранения данных.
  • Spark SQL. Spark SQL представляет собой API на базе Spark, позволяющий создавать блоки данных и таблицы, к которым можно обращаться через запросы с синтаксисом SQL.
  • HBase. Это хранилище NoSQL с малой задержкой, которое позволяет выполнять высокопроизводительные, гибкие запросы к структурированным и частично структурированным данным.
  • Hive. Помимо полезных возможностей для пакетной обработки, Hive предлагает архитектуру базы данных, концептуально похожую на структуру типичной системы управления реляционной базой данных. Благодаря усовершенствованиям производительности запросов Hive за счет таких инноваций, как обработчик Tez и инициатива Stinger, таблицы Hive можно эффективно использовать в качестве источников для аналитических запросов в некоторых сценариях.

Дополнительные сведения см. в статье о хранилище аналитических данных.

Аналитика и отчетность

  • Службы Azure Analysis Services. Многие решения для больших данных эмулируют традиционные корпоративные архитектуры бизнес-аналитики за счет использования централизованной модели данных оперативной аналитической обработки (OLAP), часто называемой кубом, на которой могут быть основаны отчеты, панели мониторинга и интерактивный анализ событий. Службы Azure Analysis Services поддерживают создание табличных моделей для этих целей.
  • Power BI. Power BI позволяет аналитикам данных создавать интерактивные визуализации на основе моделей данных в модели OLAP или непосредственно из хранилища аналитических данных.
  • Microsoft Excel. Это одно из наиболее широко используемых программных приложений в мире, которое предлагает множество возможностей для анализа и визуализации данных. Аналитики данных могут использовать Excel для создания моделей данных документов из хранилищ аналитических данных или для извлечения данных из моделей данных OLAP в интерактивные сводные таблицы и диаграммы.

Дополнительные сведения см. в статье Выбор технологии аналитики данных в Azure.

Оркестрация

  • Фабрика данных Azure. Конвейеры фабрики данных Azure можно использовать для определения последовательности действий, запланированных для повторяющихся временных окон. Эти действия могут инициировать операции копирования данных, а также задания Hive, Pig, MapReduce или Spark в кластерах HDInsight по требованию, задания U-SQL в Azure Date Lake Analytics и хранимые процедуры в Azure Synapse или Базе данных SQL Azure.
  • Oozie и Sqoop. Oozie — это механизм автоматизации заданий для экосистемы Apache Hadoop. Он может использоваться для инициирования операций копирования данных, а также заданий Hive, Pig и MapReduce для обработки данных и заданий Sqoop для копирования данных между HDFS и базами данных SQL.

Дополнительные сведения см. в статье Choosing a data pipeline orchestration technology in Azure (Выбор технологии оркестрации конвейера данных в Azure).

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Автор субъекта: