Captura de eventos a través de Azure Event Hubs en Azure Blob Storage o Azure Data Lake StorageCapture events through Azure Event Hubs in Azure Blob Storage or Azure Data Lake Storage

Azure Event Hubs permite capturar automáticamente los datos de streaming de Event Hubs de la cuenta de Azure Blob Storage o Azure Data Lake Storage que prefiera, con la flexibilidad agregada de poder especificar un intervalo de tiempo o de tamaño.Azure Event Hubs enables you to automatically capture the streaming data in Event Hubs in an Azure Blob storage or Azure Data Lake Storage account of your choice, with the added flexibility of specifying a time or size interval. La configuración de Capture es rápida, su ejecución no tiene costes administrativos y se escala automáticamente con las unidades de procesamiento de Event Hubs.Setting up Capture is fast, there are no administrative costs to run it, and it scales automatically with Event Hubs throughput units. El uso de Event Hubs Capture constituye la forma más sencilla de cargar datos de streaming en Azure y permite centrarse en el procesamiento de datos, en lugar de en su captura.Event Hubs Capture is the easiest way to load streaming data into Azure, and enables you to focus on data processing rather than on data capture.

Event Hubs Capture permite procesar las canalizaciones en tiempo real y las basadas en lotes en la misma transmisión,Event Hubs Capture enables you to process real-time and batch-based pipelines on the same stream. lo que permite crear soluciones que crecen a la par que sus necesidades.This means you can build solutions that grow with your needs over time. Si ya está creando sistemas basados en lotes pensando en un futuro procesamiento en tiempo real o desea agregar una ruta de acceso inactiva eficaz a una solución en tiempo real existente, Event Hubs Capture facilita el trabajo con datos de streaming.Whether you're building batch-based systems today with an eye towards future real-time processing, or you want to add an efficient cold path to an existing real-time solution, Event Hubs Capture makes working with streaming data easier.

Nota

Actualmente, la característica Event Hubs Capture admite solo Gen 1 de Azure Data Lake Store, no de generación 2.Currently, the Event Hubs Capture feature supports only Gen 1 of Azure Data Lake Store, not Gen 2.

Cómo funciona Event Hubs CaptureHow Event Hubs Capture works

Event Hubs es un búfer duradero de retención temporal para la entrada de datos de telemetría, es similar a un registro distribuido.Event Hubs is a time-retention durable buffer for telemetry ingress, similar to a distributed log. La clave para reducir horizontalmente en Event Hubs es el modelo de consumidor con particiones.The key to scaling in Event Hubs is the partitioned consumer model. Cada partición es un segmento de datos independiente y se consume de forma independiente.Each partition is an independent segment of data and is consumed independently. Con el tiempo estos datos envejecen basándose en el período de retención configurable.Over time this data ages off, based on the configurable retention period. Como consecuencia, un centro de eventos determinado nunca llega a estar "demasiado lleno".As a result, a given event hub never gets "too full."

Event Hubs Capture le permite especificar su propia cuenta y contenedor de Azure Blob Storage, o cuenta de Azure Data Lake Store, que se usan para almacenar los datos capturados.Event Hubs Capture enables you to specify your own Azure Blob storage account and container, or Azure Data Lake Store account, which are used to store the captured data. Estas cuentas pueden estar en la misma región que el centro de eventos o en otra, lo que se suma a la flexibilidad de la característica Event Hubs Capture.These accounts can be in the same region as your event hub or in another region, adding to the flexibility of the Event Hubs Capture feature.

Los datos capturados se escriben en el formato de Apache Avro, que es un formato compacto, rápido y binario que proporciona estructuras de datos enriquecidos con un esquema insertado.Captured data is written in Apache Avro format: a compact, fast, binary format that provides rich data structures with inline schema. Este formato se usa ampliamente en el ecosistema de Hadoop, en Stream Analytics y en Azure Data Factory.This format is widely used in the Hadoop ecosystem, Stream Analytics, and Azure Data Factory. En este mismo artículo encontrará más información acerca de cómo trabajar con Avro.More information about working with Avro is available later in this article.

Ventanas de capturaCapture windowing

Event Hubs Capture permite configurar una ventana para controlar la captura.Event Hubs Capture enables you to set up a window to control capturing. Esta ventana es una configuración mínima de tamaño y tiempo con una "directiva de que el primero gana", lo que significa que el primer desencadenador que se encuentre provocará una operación de captura.This window is a minimum size and time configuration with a "first wins policy," meaning that the first trigger encountered causes a capture operation. Si tiene una ventana de captura de 100 MB cada quince minutos y envía 1 MB/s, la ventana de tamaño se desencadenará antes que la ventana de tiempo.If you have a fifteen-minute, 100 MB capture window and send 1 MB per second, the size window triggers before the time window. Cada partición se captura de forma independiente y escribe un blob en bloques completado en el momento de la captura, denominado como la hora en que se encontró el intervalo de captura.Each partition captures independently and writes a completed block blob at the time of capture, named for the time at which the capture interval was encountered. Esta es la convención de nomenclatura de almacenamiento:The storage naming convention is as follows:

{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}

Tenga en cuenta que los valores de fecha se rellenan con ceros; un nombre de archivo de ejemplo podría ser:Note that the date values are padded with zeroes; an example filename might be:

https://mystorageaccount.blob.core.windows.net/mycontainer/mynamespace/myeventhub/0/2017/12/08/03/03/17.avro

Escalado a unidades de procesamientoScaling to throughput units

El tráfico de los Event Hubs lo controlan las unidades de procesamiento.Event Hubs traffic is controlled by throughput units. Una sola unidad de procesamiento permite una entrada de 1 MB/s o 1000 eventos por segundo y una salida que duplica esas cifras.A single throughput unit allows 1 MB per second or 1000 events per second of ingress and twice that amount of egress. Event Hubs estándar se puede configurar con entre 1 y 20 unidades de procesamiento, y puede adquirir más a través de una solicitud de aumento de cuota al equipo de soporte técnico.Standard Event Hubs can be configured with 1-20 throughput units, and you can purchase more with a quota increase support request. El uso por encima de las unidades de procesamiento adquiridas está limitado.Usage beyond your purchased throughput units is throttled. Event Hubs Capture copia los datos directamente del almacenamiento interno de Event Hubs, omite las cuotas de salida de unidades de procesamiento y guarda la salida para otros lectores de procesamiento como Stream Analytics o Spark.Event Hubs Capture copies data directly from the internal Event Hubs storage, bypassing throughput unit egress quotas and saving your egress for other processing readers, such as Stream Analytics or Spark.

Una vez configurado, Event Hubs Capture se ejecuta automáticamente cuando se envía el primer evento y continúa ejecutándose.Once configured, Event Hubs Capture runs automatically when you send your first event, and continues running. Para facilitar que el procesamiento de bajada sepa que el proceso funciona, Event Hubs escribe archivos vacíos cuando no hay datos.To make it easier for your downstream processing to know that the process is working, Event Hubs writes empty files when there is no data. Este proceso proporciona un marcador y una cadencia predecibles que puede alimentar sus procesadores de lotes.This process provides a predictable cadence and marker that can feed your batch processors.

Configuración de Event Hubs CaptureSetting up Event Hubs Capture

Puede configurar la funcionalidad de captura en el momento de creación del centro de eventos mediante Azure Portal o con las plantillas de Azure Resource Manager.You can configure Capture at the event hub creation time using the Azure portal, or using Azure Resource Manager templates. Para más información, consulte los siguientes artículos.For more information, see the following articles:

Exploración de los archivos capturados y trabajo con AvroExploring the captured files and working with Avro

Event Hubs Capture crea archivos en formato Avro, como se especifica en la ventana de tiempo configurada.Event Hubs Capture creates files in Avro format, as specified on the configured time window. Dichos archivos se pueden ver en cualquier herramienta, como el Explorador de Azure Storage.You can view these files in any tool such as Azure Storage Explorer. Los archivos se pueden descargar de forma local para trabajar con ellos.You can download the files locally to work on them.

Los archivos que genera Event Hubs Capture tienen el siguiente esquema de Avro:The files produced by Event Hubs Capture have the following Avro schema:

Esquema de Avro

Para explorar los archivos de Avro fácilmente, utilice el archivo jar Avro Tools desde Apache.An easy way to explore Avro files is by using the Avro Tools jar from Apache. También puede usar Apache Drill para una experiencia sencilla con SQL o Apache Spark para realizar un procesamiento distribuido complejo en los datos ingeridos.You can also use Apache Drill for a lightweight SQL-driven experience or Apache Spark to perform complex distributed processing on the ingested data.

Uso de Apache DrillUse Apache Drill

Apache Drill es un "motor de consulta SQL de código abierto para la exploración de macrodatos" que puede consultar datos estructurados y semiestructurados.Apache Drill is an "open-source SQL query engine for Big Data exploration" that can query structured and semi-structured data wherever it is. El motor se puede ejecutar como un nodo independiente o como un clúster grande para lograr un rendimiento óptimo.The engine can run as a standalone node or as a huge cluster for great performance.

Hay disponible una compatibilidad nativa con Azure Blob Storage, lo cual facilita la consulta de datos en un archivo de Avro, como se describe en esta documentación:A native support to Azure Blob storage is available, which makes it easy to query data in an Avro file, as described in the documentation:

Apache Drill: Complemento de Azure Blob StorageApache Drill: Azure Blob Storage Plugin

Para consultar con facilidad archivos capturados, puede crear y ejecutar una máquina virtual con Apache Drill habilitado mediante un contenedor para acceder a Azure Blob Storage:To easily query captured files, you can create and execute a VM with Apache Drill enabled via a container to access Azure Blob storage:

https://github.com/yorek/apache-drill-azure-blob

Hay un ejemplo completo disponible en el repositorio de streaming a escala:A full end-to-end sample is available in the Streaming at Scale repository:

Streaming a escala: Event Hubs CaptureStreaming at Scale: Event Hubs Capture

Uso de Apache SparkUse Apache Spark

Apache Spark es un "motor de análisis unificado para el procesamiento de datos a gran escala".Apache Spark is a "unified analytics engine for large-scale data processing." Admite diferentes idiomas, incluido SQL, y puede acceder fácilmente a Azure Blob Storage.It supports different languages, including SQL, and can easily access Azure Blob storage. Hay dos opciones para ejecutar Apache Spark en Azure, y ambas proporcionan un acceso fácil a Azure Blob Storage:There are two options to run Apache Spark in Azure, and both provide easy access to Azure Blob storage:

Uso de Avro ToolsUse Avro Tools

Las herramientas de Avro Tools están disponibles como un paquete jar.Avro Tools are available as a jar package. Tras descargar este archivo, para ver el esquema de un archivo específico de Avro, ejecute el comando siguiente:After you download the jar file, you can see the schema of a specific Avro file by running the following command:

java -jar avro-tools-1.8.2.jar getschema <name of capture file>

Este comando devuelveThis command returns

{

    "type":"record",
    "name":"EventData",
    "namespace":"Microsoft.ServiceBus.Messaging",
    "fields":[
                 {"name":"SequenceNumber","type":"long"},
                 {"name":"Offset","type":"string"},
                 {"name":"EnqueuedTimeUtc","type":"string"},
                 {"name":"SystemProperties","type":{"type":"map","values":["long","double","string","bytes"]}},
                 {"name":"Properties","type":{"type":"map","values":["long","double","string","bytes"]}},
                 {"name":"Body","type":["null","bytes"]}
             ]
}

Avro Tools también puede utilizarse para convertir el archivo al formato JSON y realizar otro procesamiento.You can also use Avro Tools to convert the file to JSON format and perform other processing.

Para realizar un procesamiento más avanzado, descargue e instale Avro para la plataforma que desee.To perform more advanced processing, download and install Avro for your choice of platform. En el momento de redactar este artículo, existen implementaciones para C, C++, C#, Java, NodeJS, Perl, PHP, Python y Ruby.At the time of this writing, there are implementations available for C, C++, C#, Java, NodeJS, Perl, PHP, Python, and Ruby.

Apache Avro tiene guías de introducción para Java y Python muy completas.Apache Avro has complete Getting Started guides for Java and Python. También puede leer el artículo Getting started with Event Hubs Capture (Introducción a Event Hubs Capture).You can also read the Getting started with Event Hubs Capture article.

Cómo se factura Event Hubs CaptureHow Event Hubs Capture is charged

Event Hubs Capture se mide de forma similar a las unidades de procesamiento, por hora.Event Hubs Capture is metered similarly to throughput units: as an hourly charge. El cargo es directamente proporcional al número de unidades de procesamiento que se adquirieron para el espacio de nombres.The charge is directly proportional to the number of throughput units purchased for the namespace. A medida que las unidades de procesamiento se incrementan y reducen, las mediciones de Event Hubs Capture aumentan y disminuyen, con el fin de proporcionar un rendimiento coincidente.As throughput units are increased and decreased, Event Hubs Capture meters increase and decrease to provide matching performance. Los medidores se ejecutan de manera simultánea.The meters occur in tandem. Para conocer los precios detallados, consulte Precios de Event Hubs.For pricing details, see Event Hubs pricing.

Integración con Event GridIntegration with Event Grid

Puede crear una suscripción de Azure Event Grid con un espacio de nombres de Event Hubs como origen.You can create an Azure Event Grid subscription with an Event Hubs namespace as its source. En el tutorial siguiente se muestra cómo crear una suscripción de Event Grid con un centro de eventos como origen y una aplicación de Azure Functions como receptor: Procesamiento y migración de datos de Event Hubs capturados a SQL Data Warehouse mediante Event Grid y Azure Functions.The following tutorial shows you how to create an Event Grid subscription with an event hub as a source and an Azure Functions app as a sink: Process and migrate captured Event Hubs data to a SQL Data Warehouse using Event Grid and Azure Functions.

Pasos siguientesNext steps

Event Hubs Capture es el modo más sencillo de obtener datos en Azure.Event Hubs Capture is the easiest way to get data into Azure. Con Azure Data Lake, Azure Data Factory y Azure HDInsight, se puede realizar el procesamiento por lotes y cualquier otro análisis mediante las plataformas y herramientas conocidas a la escala que necesite.Using Azure Data Lake, Azure Data Factory, and Azure HDInsight, you can perform batch processing and other analytics using familiar tools and platforms of your choosing, at any scale you need.

Para más información acerca de Event Hubs, visite los vínculos siguientes:You can learn more about Event Hubs by visiting the following links: