Captura de eventos a través de Azure Event Hubs en Azure Blob Storage o 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 de Azure Data Lake Storage Gen1 o Gen2 que prefiera, con la flexibilidad adicional de especificar un intervalo de tiempo o de tamaño. La configuración de Capture es rápida, su ejecución no conlleva ningún gasto administrativo y se escala automáticamente con unidades de rendimiento de Event Hubs en el nivel estándar o unidades de procesamiento en el nivel Premium. 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.

Imagen que muestra la captura de datos de Event Hubs en Azure Storage o Azure Data Lake Storage

Nota:

La configuración de Event Hubs Capture para usar Azure Data Lake Storage Gen2 es la misma que la configuración para utilizar una instancia de Azure Blob Storage. Para obtener información, consulte Configuración de Event Hubs Capture.

Event Hubs Capture permite procesar las canalizaciones en tiempo real y las basadas en lotes en la misma transmisión, lo que permite crear soluciones que crecen a la par que sus necesidades. 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.

Importante

  • La cuenta de almacenamiento de destino (Azure Storage o Azure Data Lake Storage) debe estar en la misma suscripción que el centro de eventos cuando no use la identidad administrada para la autenticación.
  • Event Hubs no admite la captura de eventos en una cuenta de almacenamiento prémium.
  • La captura de Event Hubs admite cualquier cuenta de almacenamiento con soporte para blobs en bloques.

Cómo funciona Event Hubs Capture

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. La clave para reducir horizontalmente en Event Hubs es el modelo de consumidor con particiones. Cada partición es un segmento de datos independiente y se consume de forma independiente. Con el tiempo estos datos envejecen basándose en el período de retención configurable. Como consecuencia, un centro de eventos determinado nunca llega a estar "demasiado lleno".

Event Hubs Capture permite especificar una cuenta y un contenedor propios de Azure Blob Storage, o una cuenta de Azure Data Lake Storage, que se usan para almacenar los datos capturados. 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.

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. Este formato se usa ampliamente en el ecosistema de Hadoop, en Stream Analytics y en Azure Data Factory. En este mismo artículo encontrará más información acerca de cómo trabajar con Avro.

Nota:

Si no usa ningún editor de código en Azure Portal, puede capturar datos de streaming en Event Hubs en una cuenta de Azure Data Lake Storage Gen2 en el formato Parquet. Para más información, vea Procedimiento para capturar datos de Event Hubs en formato Parquet y Tutorial: Captura de datos de Event Hubs en formato Parquet y análisis con Azure Synapse Analytics.

Ventanas de captura

Event Hubs Capture permite configurar una ventana para controlar la captura. 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. 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. 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. Esta es la convención de nomenclatura de almacenamiento:

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

Tenga en cuenta que los valores de fecha se rellenan con ceros. Un ejemplo de nombre de archivo podría ser el siguiente:

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

Si la instancia de Azure Storage Blob no está disponible temporalmente, Event Hubs Capture retendrá los datos durante el período de retención de datos configurado en el centro de eventos y volverá a rellenarlos una vez que la cuenta de almacenamiento vuelva a estar disponible.

Escalado de unidades de rendimiento o unidades de procesamiento

En el nivel estándar de Event Hubs, el tráfico se controla mediante unidades de rendimiento y, en el nivel Premium de Event Hubs, se controla mediante unidades de procesamiento. Event Hubs Capture copia los datos directamente del almacenamiento interno de Event Hubs, omite las cuotas de salida de unidades de rendimiento o procesamiento y guarda la salida para otros lectores de procesamiento, como Stream Analytics o Spark.

Una vez configurado, Event Hubs Capture se ejecuta automáticamente cuando se envía el primer evento y continúa ejecutándose. Para facilitar que el procesamiento descendente sepa que el proceso funciona, Event Hubs escribe archivos vacíos cuando no hay datos. Este proceso proporciona un marcador y una cadencia predecibles que puede alimentar sus procesadores de lotes.

Configuración de 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. Para más información, consulte los siguientes artículos.

Nota:

Si habilita la característica de captura en un centro de eventos existente, la característica capturará los eventos que lleguen al centro de eventos después de activar la característica en cuestión. No capturará aquellos eventos que ya existían en el centro de eventos antes de que se activara.

Cómo se factura Event Hubs Capture

La característica de captura se incluye en el nivel Premium, por lo que no hay ningún cargo adicional por ese nivel. Para el nivel Estándar, la característica se cobra mensualmente y el cargo es directamente proporcional al número de unidades de procesamiento o unidades de procesamiento adquiridas para el espacio de nombres. A medida que las unidades de rendimiento o procesamiento se incrementan y reducen, las mediciones de Event Hubs Capture aumentan y disminuyen con el fin de proporcionar un rendimiento coincidente. Los medidores se ejecutan de manera simultánea. Para conocer los precios detallados, consulte Precios de Event Hubs.

Capture no consume la cuota de salida, porque se factura por separado.

Integración con Event Grid

Puede crear una suscripción de Azure Event Grid con un espacio de nombres de Event Hubs como origen. El siguiente tutorial 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 Azure Synapse Analytics mediante Event Grid y Azure Functions.

Exploración de los archivos capturados

Para aprender a explorar los archivos Avro capturados, consulte Exploración de los archivos Avro capturados.

Cuenta de Azure Storage como destino

Para habilitar la captura en un centro de eventos con Azure Storage como destino de captura, o actualizar sus propiedades, el usuario o la entidad de servicio debe tener un rol RBAC con los siguientes permisos asignados en el ámbito de la cuenta de almacenamiento. 

Microsoft.Storage/storageAccounts/blobServices/containers/write
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

 

Sin el permiso anterior, aparecerá el siguiente error:

Generic: Linked access check failed for capture storage destination <StorageAccount Arm Id>.
User or the application with object id <Object Id> making the request doesn't have the required data plane write permissions.
Please enable Microsoft.Storage/storageAccounts/blobServices/containers/write, Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write permission(s) on above resource for the user or the application and retry.
TrackingId:<ID>, SystemTracker:mynamespace.servicebus.windows.net:myhub, Timestamp:<TimeStamp>

El propietario de datos de Storage Blob es un rol integrado con permisos anteriores, por lo que debe agregar la cuenta de usuario o la entidad de servicio a este rol.  

Pasos siguientes

Event Hubs Capture es el modo más sencillo de obtener datos en 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.

Aprenda a habilitar esta característica mediante Azure Portal y una plantilla de Azure Resource Manager: