Capturer des événements avec Azure Event Hubs dans le stockage Blob Azure ou Azure Data Lake StorageCapture events through Azure Event Hubs in Azure Blob Storage or Azure Data Lake Storage

Azure Event Hubs vous permet de capturer automatiquement les données de streaming dans Event Hubs vers un compte de Stockage Blob Azure ou Azure Data Lake Store de votre choix, tout en vous permettant de spécifier un intervalle de temps ou de taille.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 configuration de l’outil Capture est rapide : il n’existe aucun coût d’administration pour son exécution et il s’adapte automatiquement à vos unités de débit Event Hubs.Setting up Capture is fast, there are no administrative costs to run it, and it scales automatically with Event Hubs throughput units. Event Hubs Capture représente le moyen le plus simple de charger les données pour la diffusion en continu dans Azure et vous permet de vous concentrer sur le traitement des données plutôt que sur la capture de données.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 vous permet de traiter des pipelines basés sur des lots et en temps réel sur le même flux.Event Hubs Capture enables you to process real-time and batch-based pipelines on the same stream. Cela vous permet de créer des solutions capables d’évoluer avec vos besoins au fil du temps.This means you can build solutions that grow with your needs over time. Que vous créiez des systèmes basés sur des lots dès aujourd’hui en pensant au traitement en temps réel à l’avenir, ou que vous souhaitiez ajouter un chemin à froid efficace vers une solution existante en temps réel, Event Hubs Capture facilite la tâche avec les données diffusées en continu.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.

Notes

Actuellement, la fonctionnalité Event Hubs Capture prend en charge uniquement Gen 1 d’Azure Data Lake Store, pas Gen 2.Currently, the Event Hubs Capture feature supports only Gen 1 of Azure Data Lake Store, not Gen 2.

Fonctionnement d’Azure Event Hubs CaptureHow Event Hubs Capture works

Event Hubs est une mémoire tampon durable de rétention temporelle pour l’entrée de télémétrie, similaire à un journal distribué.Event Hubs is a time-retention durable buffer for telemetry ingress, similar to a distributed log. La clé de la mise à l’échelle dans Event Hubs est le modèle de consommateur partitionné.The key to scaling in Event Hubs is the partitioned consumer model. Chaque partition est un segment de données indépendant, et est utilisée de manière indépendante.Each partition is an independent segment of data and is consumed independently. Au fil du temps ces données vieillissent, en fonction de la période de rétention configurable.Over time this data ages off, based on the configurable retention period. Par conséquent, un hub d’événements donné n’est jamais « saturé ».As a result, a given event hub never gets "too full."

Event Hubs Capture vous permet de spécifier votre propre compte Stockage Blob Azure ou Azure Data Lake Store, ainsi qu’un conteneur qui est utilisé pour stocker les données capturées.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. Ces comptes peuvent se trouver dans la même région que votre hub d’événements ou dans une autre région, ce qui ajoute à la flexibilité de la fonctionnalité 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.

Les données capturées sont écrites au format Apache Avro : un format compact, rapide et binaire qui fournit des structures de données riches avec un schéma inclus.Captured data is written in Apache Avro format: a compact, fast, binary format that provides rich data structures with inline schema. Ce format est largement utilisé dans l’écosystème Hadoop, Stream Analytics et Azure Data Factory.This format is widely used in the Hadoop ecosystem, Stream Analytics, and Azure Data Factory. Vous trouverez plus d’informations sur l’utilisation d’Avro plus loin dans cet article.More information about working with Avro is available later in this article.

Fenêtrage de CaptureCapture windowing

Event Hubs Capture vous permet de configurer une fenêtre de temps pour le contrôle de la capture.Event Hubs Capture enables you to set up a window to control capturing. Cette fenêtre présente une taille et une configuration temporelle minimales avec une « stratégie de premier gagnant », ce qui signifie que le premier déclencheur rencontré entraîne une opération de capture.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 vous avez une fenêtre de capture de quinze minutes et de 100 Mo, et si vous envoyez 1 Mo par seconde, la fenêtre de taille se déclenche avant la fenêtre temporelle.If you have a fifteen-minute, 100 MB capture window and send 1 MB per second, the size window triggers before the time window. Chaque partition capture indépendamment et écrit un objet blob de bloc complet au moment de la capture, nommé d’après l’heure à laquelle l’intervalle de capture a été rencontré.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. La convention d’affectation de noms de stockage est la suivante :The storage naming convention is as follows:

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

Notez que les valeurs de date contiennent des zéros. Par exemple :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

Mise à l’échelle des unités de débitScaling to throughput units

Le trafic Event Hubs est contrôlé par les unités de débit.Event Hubs traffic is controlled by throughput units. Une unité de débit autorise 1 Mo/s ou 1 000 événements par seconde d’entrée et 2 000 événements par seconde de sortie.A single throughput unit allows 1 MB per second or 1000 events per second of ingress and twice that amount of egress. Les concentrateurs d’événements Standard peuvent être configurés avec 1 à 20 unités de débit, et vous pouvez en acheter d’autres en soumettant une demande de support d’augmentation de quota.Standard Event Hubs can be configured with 1-20 throughput units, and you can purchase more with a quota increase support request. L’utilisation au-delà des unités de débit que vous avez achetées est limitée.Usage beyond your purchased throughput units is throttled. Event Hubs Capture copie les données directement depuis le stockage Event Hubs interne, en contournant les quotas de sortie des unités de débit et en enregistrant votre sortie pour d’autres lecteurs de traitement tels que Stream Analytics ou 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.

Une fois configuré, Event Hubs Capture s’exécute automatiquement lorsque vous envoyez votre premier événement et continue de s’exécuter.Once configured, Event Hubs Capture runs automatically when you send your first event, and continues running. Pour que votre traitement en aval sache plus facilement que le processus fonctionne, les Event Hubs écrivent des fichiers vides en l’absence de données.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. Ce processus fournit une cadence prévisible et un marqueur qui peuvent alimenter vos processeurs de traitement par lots.This process provides a predictable cadence and marker that can feed your batch processors.

Configuration de l’outil Event Hubs CaptureSetting up Event Hubs Capture

Vous pouvez configurer la fonctionnalité Capture lors de la création du concentrateur d’événements, à l’aide du portail Azure ou des modèles Azure Resource Manager.You can configure Capture at the event hub creation time using the Azure portal, or using Azure Resource Manager templates. Pour plus d’informations, consultez les articles suivants :For more information, see the following articles:

Exploration des fichiers capturés et utilisation d’AvroExploring the captured files and working with Avro

Event Hubs Capture crée des fichiers au format Avro, tel que spécifié dans la fenêtre de temps configurée.Event Hubs Capture creates files in Avro format, as specified on the configured time window. Vous pouvez afficher ces fichiers à l’aide de n’importe quel outil tel que l’Explorateur de stockage Azure.You can view these files in any tool such as Azure Storage Explorer. Vous pouvez télécharger les fichiers localement pour les utiliser.You can download the files locally to work on them.

Les fichiers générés par Event Hubs Capture présentent le schéma Avro suivant :The files produced by Event Hubs Capture have the following Avro schema:

Schéma Avro

Un moyen facile d’explorer les fichiers Avro consiste à utiliser la boîte à outils Avro d’Apache.An easy way to explore Avro files is by using the Avro Tools jar from Apache. Vous pouvez également utiliser Apache Drill pour bénéficier d’une expérience pilotée par SQL légère ou Apache Spark pour effectuer un traitement distribué complexe sur les données ingérées.You can also use Apache Drill for a lightweight SQL-driven experience or Apache Spark to perform complex distributed processing on the ingested data.

Utiliser Apache DrillUse Apache Drill

Apache Drill est un « moteur de requête SQL open source pour l’exploration de Big Data » capable d’interroger des données structurées et semi-structurées quel que soit leur emplacement.Apache Drill is an "open-source SQL query engine for Big Data exploration" that can query structured and semi-structured data wherever it is. Le moteur peut s’exécuter en tant que nœud autonome ou en tant que cluster énorme pour bénéficier d’excellentes performances.The engine can run as a standalone node or as a huge cluster for great performance.

Une prise en charge native de Stockage Blob Azure est disponible, ce qui facilite l’interrogation des données dans un fichier Avro, comme décrit dans la documentation :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 : plugin Stockage Blob AzureApache Drill: Azure Blob Storage Plugin

Pour interroger facilement des fichiers capturés, vous pouvez créer et exécuter une machine virtuelle avec Apache Drill activé via un conteneur pour accéder au Stockage Blob Azure :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

Un exemple complet de bout en bout est disponible dans le dépôt Streaming at Scale :A full end-to-end sample is available in the Streaming at Scale repository:

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

Utiliser Apache SparkUse Apache Spark

Apache Spark est un « moteur d’analytique unifié pour le traitement des données à grande échelle ».Apache Spark is a "unified analytics engine for large-scale data processing." Il prend en charge différents langages, notamment SQL, et vous pouvez accéder facilement au Stockage Blob Azure.It supports different languages, including SQL, and can easily access Azure Blob storage. Il existe deux options pour exécuter Apache Spark dans Azure, et toutes deux fournissent un accès facile au Stockage Blob Azure :There are two options to run Apache Spark in Azure, and both provide easy access to Azure Blob storage:

Utiliser les outils AvroUse Avro Tools

Les outils Avro sont disponibles sous la forme d’un package jar.Avro Tools are available as a jar package. Après avoir téléchargé le fichier jar, vous pouvez voir le schéma d’un fichier Avro spécifique en exécutant la commande suivante :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>

Cette commande renvoieThis 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"]}
             ]
}

Vous pouvez également utiliser les outils Avro pour convertir le fichier au format JSON et effectuer d’autres traitements.You can also use Avro Tools to convert the file to JSON format and perform other processing.

Pour effectuer un traitement plus avancé, téléchargez et installez Avro pour la plateforme de votre choix.To perform more advanced processing, download and install Avro for your choice of platform. Au moment de la rédaction de cet article, les implémentations sont disponibles pour C, C++, C#, Java, NodeJS, Perl, PHP, Python et Ruby.At the time of this writing, there are implementations available for C, C++, C#, Java, NodeJS, Perl, PHP, Python, and Ruby.

Apache Avro propose des guides de mise en route complets pour Java et Python.Apache Avro has complete Getting Started guides for Java and Python. Vous pouvez également lire l’article Prise en main d’Event Hubs Capture.You can also read the Getting started with Event Hubs Capture article.

Chargement d’Azure Event Hubs CaptureHow Event Hubs Capture is charged

Event Hubs Capture est mesuré de la même façon que les unités de débit, au tarif horaire.Event Hubs Capture is metered similarly to throughput units: as an hourly charge. La facturation est directement proportionnelle au nombre d’unités de débit achetées pour l’espace de noms.The charge is directly proportional to the number of throughput units purchased for the namespace. En même temps que les unités de débit augmentent et diminuent, Event Hubs Capture augmente et diminue pour fournir des performances adaptées.As throughput units are increased and decreased, Event Hubs Capture meters increase and decrease to provide matching performance. Les compteurs se produisent en même temps.The meters occur in tandem. Pour plus d’informations sur les prix appliqués, consultez Tarification d’Event Hubs.For pricing details, see Event Hubs pricing.

Intégration à Event GridIntegration with Event Grid

Vous pouvez créer un abonnement Azure Event Grid en utilisant un espace de noms Event Hubs comme source.You can create an Azure Event Grid subscription with an Event Hubs namespace as its source. Le tutoriel suivant vous montre comment créer un abonnement Event Grid avec un hub d’événements comme source et une application Azure Functions comme récepteur : Traiter et migrer des données Event Hubs capturées vers un entrepôt de données SQL à l’aide d’Event Grid et d’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.

Étapes suivantesNext steps

Event Hubs Capture est la solution la plus simple pour charger des données dans Azure.Event Hubs Capture is the easiest way to get data into Azure. À l’aide d’Azure Data Lake, d’Azure Data Factory et d’Azure HDInsight, vous pouvez effectuer un traitement par lots, ainsi que d’autres analyses en utilisant des outils et des plateformes de votre choix, à l’échelle requise.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.

Vous pouvez en apprendre plus sur Event Hubs en consultant les liens suivants :You can learn more about Event Hubs by visiting the following links: