Procesamiento por lotesBatch processing

Un escenario de macrodatos común es el procesamiento por lotes de datos en reposo.A common big data scenario is batch processing of data at rest. En este escenario, los datos de origen se cargan en el almacenamiento de datos, ya sea por la propia aplicación de origen o mediante un flujo de trabajo de orquestación.In this scenario, the source data is loaded into data storage, either by the source application itself or by an orchestration workflow. A continuación, se procesan los datos in situ con un trabajo de ejecución en paralelo, que también se puede iniciar desde el flujo de trabajo de orquestación.The data is then processed in-place by a parallelized job, which can also be initiated by the orchestration workflow. El procesamiento puede incluir varios pasos iterativos antes de que se carguen los resultados transformados en un almacén de datos analíticos, que puede ser consultado por los componentes de informes y análisis.The processing may include multiple iterative steps before the transformed results are loaded into an analytical data store, which can be queried by analytics and reporting components.

Por ejemplo, los registros de un servidor web podrían se copian en una carpeta y, a continuación, se procesan durante la noche para generar informes diarios de la actividad web.For example, the logs from a web server might be copied to a folder and then processed overnight to generate daily reports of web activity.

Diagrama de una canalización de procesamiento por lotes

Cuándo se debe utilizar esta soluciónWhen to use this solution

El procesamiento por lotes se usa en diversos escenarios, desde una transformación de datos simple hasta una canalización ETL (extracción, transformación y carga) más completa.Batch processing is used in a variety of scenarios, from simple data transformations to a more complete ETL (extract-transform-load) pipeline. En un contexto de macrodatos, el procesamiento por lotes podría operar en conjuntos de datos muy grandes, en los que el cálculo tarda mucho tiempo.In a big data context, batch processing may operate over very large data sets, where the computation takes significant time. (Por ejemplo, consulte la arquitectura Lambda). El procesamiento por lotes normalmente conduce a una exploración posterior interactiva, proporciona los datos de modelado listos para el aprendizaje automático o escribe los datos en un almacén de datos que está optimizado para el análisis y la visualización.(For example, see Lambda architecture.) Batch processing typically leads to further interactive exploration, provides the modeling-ready data for machine learning, or writes the data to a data store that is optimized for analytics and visualization.

Un ejemplo de procesamiento por lotes sería la transformación de un conjunto grande de archivos sin formato o archivos semiestructurados CSV o JSON en un formato esquematizado y estructurado listo para su consulta posterior.One example of batch processing is transforming a large set of flat, semi-structured CSV or JSON files into a schematized and structured format that is ready for further querying. Normalmente, los datos se convierten de formatos sin tratamiento utilizados para la ingesta (por ejemplo, CSV) en formatos binarios que tienen un mayor rendimiento para las consultas porque almacenan los datos en formato de columnas y suelen ofrecer índices y estadísticas en línea acerca de los datos.Typically the data is converted from the raw formats used for ingestion (such as CSV) into binary formats that are more performant for querying because they store data in a columnar format, and often provide indexes and inline statistics about the data.

DesafíosChallenges

  • Formato de datos y codificación.Data format and encoding. Algunos de los problemas más difíciles de depurar ocurren cuando los archivos usan un formato o una codificación inesperados.Some of the most difficult issues to debug happen when files use an unexpected format or encoding. Por ejemplo, los archivos de origen podrían utilizar una combinación de codificación UTF-16 y UTF-8, contener delimitadores inesperados (espacios en lugar de tabulaciones) o incluir caracteres inesperados.For example, source files might use a mix of UTF-16 and UTF-8 encoding, or contain unexpected delimiters (space versus tab), or include unexpected characters. Otro ejemplo común son los campos de texto que contienen tabulaciones, espacios o comas que se interpretan como delimitadores.Another common example is text fields that contain tabs, spaces, or commas that are interpreted as delimiters. La carga de datos y la lógica de análisis deben ser lo suficientemente flexibles como para detectar y controlar estos problemas.Data loading and parsing logic must be flexible enough to detect and handle these issues.

  • Orquestación de los segmentos de tiempo.Orchestrating time slices. A menudo, los datos de origen se colocan en una jerarquía de carpetas que refleja las ventanas de procesamiento, organizadas por año, mes, día, hora y así sucesivamente.Often source data is placed in a folder hierarchy that reflects processing windows, organized by year, month, day, hour, and so on. En algunos casos, los datos pueden llegar tarde.In some cases, data may arrive late. Por ejemplo, suponga que se produce un error en un servidor web y los registros del 7 de marzo no llegan a la carpeta para su procesamiento hasta el 9 de marzo.For example, suppose that a web server fails, and the logs for March 7th don't end up in the folder for processing until March 9th. ¿Se ignoran solo porque llegaron demasiado tarde?Are they just ignored because they're too late? ¿Puede la lógica de procesamiento descendente controlar registros desordenados?Can the downstream processing logic handle out-of-order records?

ArquitecturaArchitecture

Una arquitectura de procesamiento por lotes tiene los siguientes componentes lógicos, según se muestra en el diagrama anterior.A batch processing architecture has the following logical components, shown in the diagram above.

  • Almacenamiento de datos.Data storage. Normalmente, un almacén de archivos distribuido que puede actuar como un repositorio para grandes cantidades de archivos grandes en diferentes formatos.Typically a distributed file store that can serve as a repository for high volumes of large files in various formats. Este tipo de almacén se conoce a menudo, de forma genérica, como un lago de datos.Generically, this kind of store is often referred to as a data lake.

  • Procesamiento por lotes.Batch processing. La naturaleza de gran volumen de los macrodatos significa en muchos casos que la solución debe procesar los archivos de datos mediante trabajos por lotes de ejecución prolongada para filtrar, agregar o bien preparar los datos para su análisis.The high-volume nature of big data often means that solutions must process data files using long-running batch jobs to filter, aggregate, and otherwise prepare the data for analysis. Normalmente estos trabajos implican leer archivos de código fuente, procesarlos y escribir la salida en nuevos archivos.Usually these jobs involve reading source files, processing them, and writing the output to new files.

  • Almacén de datos analíticos.Analytical data store. Muchas soluciones de macrodatos están diseñadas para preparar los datos para el análisis y luego servir los datos procesados en un formato estructurado que se puede consultar mediante herramientas de análisis.Many big data solutions are designed to prepare data for analysis and then serve the processed data in a structured format that can be queried using analytical tools.

  • Análisis e informes.Analysis and reporting. El objetivo de la mayoría de soluciones de macrodatos consiste en proporcionar información sobre los datos a través de análisis e informes.The goal of most big data solutions is to provide insights into the data through analysis and reporting.

  • Orquestación.Orchestration. En el procesamiento por lotes normalmente se requiere alguna orquestación para migrar o copiar los datos en las capas de almacenamiento de datos, procesamiento por lotes, almacén de datos analíticos e informes.With batch processing, typically some orchestration is required to migrate or copy the data into your data storage, batch processing, analytical data store, and reporting layers.

Opciones de tecnologíaTechnology choices

Se recomiendan las siguientes tecnologías para soluciones de procesamiento por lotes en Azure.The following technologies are recommended choices for batch processing solutions in Azure.

Almacenamiento de datosData storage

  • Contenedores de blobs de Azure Storage.Azure Storage Blob Containers. Muchos procesos de negocio de Azure existente ya usan el almacenamiento de blobs de Azure, por lo que es una buena elección para un almacén de datos de gran tamaño.Many existing Azure business processes already use Azure blob storage, making this a good choice for a big data store.
  • Azure Data Lake Store.Azure Data Lake Store. Azure Data Lake Store ofrece almacenamiento prácticamente ilimitado para cualquier tamaño de archivo y opciones de seguridad exhaustivas, resultando una buena elección para soluciones de macrodatos a gran escala que requieren un almacén centralizado para datos en formatos heterogéneos.Azure Data Lake Store offers virtually unlimited storage for any size of file, and extensive security options, making it a good choice for extremely large-scale big data solutions that require a centralized store for data in heterogeneous formats.

Para más información, consulte Almacenamiento de datos.For more information, see Data storage.

Procesamiento por lotesBatch processing

  • U-SQL.U-SQL. U-SQL es el lenguaje de procesamiento de consultas usado por Azure Data Lake Analytics.U-SQL is the query processing language used by Azure Data Lake Analytics. Combina la naturaleza declarativa de SQL con la extensibilidad de procedimientos de C# y aprovecha las ventajas del paralelismo para permitir un procesamiento eficaz de datos a escala masiva.It combines the declarative nature of SQL with the procedural extensibility of C#, and takes advantage of parallelism to enable efficient processing of data at massive scale.
  • Hive.Hive. Hive es un lenguaje similar a SQL que se admite en la mayoría de las distribuciones de Hadoop, incluido HDInsight.Hive is a SQL-like language that is supported in most Hadoop distributions, including HDInsight. Se puede utilizar para procesar los datos de cualquier almacén compatible con HDFS, incluidos Azure Blob Storage y Azure Data Lake Store.It can be used to process data from any HDFS-compatible store, including Azure blob storage and Azure Data Lake Store.
  • Pig.Pig. Pig es un lenguaje de procesamiento de macrodatos declarativo utilizado en muchas distribuciones de Hadoop, incluido HDInsight.Pig is a declarative big data processing language used in many Hadoop distributions, including HDInsight. Es especialmente útil para el procesamiento de datos no estructurados o semiestructurados.It is particularly useful for processing data that is unstructured or semi-structured.
  • Spark.Spark. El motor de Spark admite el procesamiento por lotes de programas escritos en una variedad de lenguajes, como Java, Scala y Python.The Spark engine supports batch processing programs written in a range of languages, including Java, Scala, and Python. Spark utiliza una arquitectura distribuida para procesar los datos en paralelo en varios nodos de trabajo.Spark uses a distributed architecture to process data in parallel across multiple worker nodes.

Para más información, consulte Procesamiento por lotes.For more information, see Batch processing.

Almacén de datos analíticosAnalytical data store

  • SQL Data Warehouse.SQL Data Warehouse. Azure SQL Data Warehouse es un servicio administrado que se basa en las tecnologías de base de datos de SQL Server y está optimizado para admitir cargas de trabajo de almacenamiento de datos a gran escala.Azure SQL Data Warehouse is a managed service based on SQL Server database technologies and optimized to support large-scale data warehousing workloads.
  • Spark SQL.Spark SQL. Spark SQL es una API basada en Spark que admite la creación de tramas de datos y tablas que se pueden consultar mediante la sintaxis de SQL.Spark SQL is an API built on Spark that supports the creation of dataframes and tables that can be queried using SQL syntax.
  • HBase.HBase. HBase es un almacén no SQL de baja latencia que ofrece una opción de alto rendimiento y flexible para consultar datos estructurados y semiestructurados.HBase is a low-latency NoSQL store that offers a high-performance, flexible option for querying structured and semi-structured data.
  • Hive.Hive. Además de ser útil para el procesamiento por lotes, Hive ofrece una arquitectura de base de datos que es conceptualmente similar a la de los sistemas de administración de bases de datos relacionales habituales.In addition to being useful for batch processing, Hive offers a database architecture that is conceptually similar to that of a typical relational database management system. Las mejoras en el rendimiento de las consultas de Hive a través de innovaciones como el motor Tez y la iniciativa Stinger hacen que se puedan utilizar las tablas de Hive eficazmente como orígenes para consultas analíticas en algunos escenarios.Improvements in Hive query performance through innovations like the Tez engine and Stinger initiative mean that Hive tables can be used effectively as sources for analytical queries in some scenarios.

Para más información, consulte Almacenes de datos analíticos.For more information, see Analytical data stores.

Análisis e informesAnalytics and reporting

  • Azure Analysis Services.Azure Analysis Services. Muchas soluciones de macrodatos emulan arquitecturas de inteligencia de negocio empresarial tradicional mediante la inclusión de un modelo de datos de procesamiento analítico en línea (OLAP) centralizado (a menudo denominado un cubo) en los informes, paneles e interactivo "segmentar y desglosar" se pueden basar el análisis.Many big data solutions emulate traditional enterprise business intelligence architectures by including a centralized online analytical processing (OLAP) data model (often referred to as a cube) on which reports, dashboards, and interactive "slice and dice" analysis can be based. Azure Analysis Services admite la creación de modelos tabulares para satisfacer esta necesidad.Azure Analysis Services supports the creation of tabular models to meet this need.
  • Power BI.Power BI. Power BI permite a los analistas de datos crear visualizaciones de datos interactivas basadas en modelos de datos en un modelo OLAP o directamente desde un almacén de datos analíticos.Power BI enables data analysts to create interactive data visualizations based on data models in an OLAP model or directly from an analytical data store.
  • Microsoft Excel.Microsoft Excel. Microsoft Excel es una de las aplicaciones de software más usadas en el mundo y ofrece una gran variedad de funcionalidades de análisis de datos y visualización.Microsoft Excel is one of the most widely used software applications in the world, and offers a wealth of data analysis and visualization capabilities. Los analistas de datos pueden utilizar Excel para crear modelos de datos de documentos desde almacenes de datos analíticos o para recuperar datos desde modelos de datos OLAP en tablas dinámicas interactivas y gráficos.Data analysts can use Excel to build document data models from analytical data stores, or to retrieve data from OLAP data models into interactive PivotTables and charts.

Para más información, consulte Análisis e informes.For more information, see Analytics and reporting.

OrquestaciónOrchestration

  • Azure Data Factory.Azure Data Factory. Las canalizaciones de Azure Data Factory pueden utilizarse para definir una secuencia de actividades, programadas en ventanas temporales periódicas.Azure Data Factory pipelines can be used to define a sequence of activities, scheduled for recurring temporal windows. Estas actividades pueden iniciar operaciones de copia de datos, además de trabajos de Hive, Pig, MapReduce o Spark en clústeres de HDInsight bajo demanda, trabajos de U-SQL en Azure Data Lake Analytics y procedimientos almacenados en Azure SQL Data Warehouse o Azure SQL Database.These activities can initiate data copy operations as well as Hive, Pig, MapReduce, or Spark jobs in on-demand HDInsight clusters; U-SQL jobs in Azure Date Lake Analytics; and stored procedures in Azure SQL Data Warehouse or Azure SQL Database.
  • Oozie y Sqoop.Oozie and Sqoop. Oozie es un motor de automatización de trabajos para el ecosistema de Apache Hadoop y puede utilizarse para iniciar operaciones de copia de datos, así como trabajos de Hive, Pig y MapReduce para procesar datos y trabajos de Sqoop para copiar datos entre HDFS y las bases de datos SQL.Oozie is a job automation engine for the Apache Hadoop ecosystem and can be used to initiate data copy operations as well as Hive, Pig, and MapReduce jobs to process data and Sqoop jobs to copy data between HDFS and SQL databases.

Para más información, consulte Orquestación de canalizacionesFor more information, see Pipeline orchestration