Gebeurtenissen vastleggen via Azure Event Hubs in Azure Blob Storage of Azure Data Lake Storage
met Azure Event Hubs kunt u automatisch de streaminggegevens vastleggen in Event Hubs in een Azure Blob Storage- of Azure Data Lake Storage Gen 1- of Gen 2-account naar keuze, met de extra flexibiliteit om een tijd- of grootteinterval op te geven. Het instellen van Capture gaat snel, er zijn geen beheerkosten om deze uit te voeren en het wordt automatisch geschaald met Event Hubs-doorvoereenheden in de Standard-laag of verwerkingseenheden in de Premium-laag. Event Hubs Capture is de eenvoudigste manier om streaminggegevens in Azure te laden en kunt u zich richten op gegevensverwerking in plaats van op het vastleggen van gegevens.
Notitie
Het configureren Event Hubs Capture voor het gebruik van Azure Data Lake Storage Gen 2 is hetzelfde als het configureren ervan voor het gebruik van een Azure Blob Storage. Zie Configure Event Hubs Capture voor meer informatie.
Event Hubs Capture kunt u realtime- en batchgebaseerde pijplijnen in dezelfde stroom verwerken. Dit betekent dat u oplossingen kunt bouwen die in de tijd met uw behoeften meegroeien. Of u nu batchgebaseerd systemen bouwt met het oog op toekomstige realtime verwerking, of u een efficiënt niet-actief pad wilt toevoegen aan een bestaande realtime-oplossing, met Event Hubs Capture kunt u eenvoudiger met streaminggegevens werken.
Belangrijk
Het doelopslagaccount (Azure Storage of Azure Data Lake Storage) moet zich in hetzelfde abonnement als de Event Hub.
Hoe Event Hubs Capture werkt
Event Hubs is een duurzame buffer met tijdretentie voor ingressiegegevens van telemetrie, vergelijkbaar met een gedistribueerd logboek. De sleutel tot het inschalen van Event Hubs is het gepartitiesteerde consumentenmodel. Elke partitie is een onafhankelijk segment van gegevens en wordt onafhankelijk van elkaar verbruikt. Na verloop van tijd verouderen deze gegevens, op basis van de configureerbare bewaarperiode. Als gevolg hiervan krijgt een bepaalde Event Hub nooit 'te vol'.
Event Hubs Capture kunt u uw eigen Azure Blob Storage-account en -container opgeven, of een Azure Data Lake Storage-account, dat wordt gebruikt om de vastgelegde gegevens op te slaan. Deze accounts kunnen zich in dezelfde regio als uw Event Hub of in een andere regio, wat de flexibiliteit van de functie Event Hubs Capture.
Vastgelegde gegevens worden geschreven in Apache Avro-indeling: een compacte, snelle, binaire indeling die uitgebreide gegevensstructuren met een inline schema biedt. Deze indeling wordt veel gebruikt in het Hadoop-ecosysteem, Stream Analytics en Azure Data Factory. Meer informatie over het werken met Avro vindt u verder in dit artikel.
Vensters vastleggen
Event Hubs Capture kunt u een venster instellen om het vastleggen te bepalen. Dit venster is een minimale grootte en tijdconfiguratie met een 'first wins-beleid', wat betekent dat de eerste trigger die is aangetroffen een vast leggen-bewerking veroorzaakt. Als u een opnamevenster van vijftien minuten, 100 MB hebt en 1 MB per seconde verzendt, wordt het groottevenster vóór het tijdvenster geopend. Elke partitie legt onafhankelijk vast en schrijft een voltooide blok-blob op het moment van vastleggen, met de naam voor het tijdstip waarop het opname-interval is aangetroffen. De naamconventie voor opslag is als volgt:
{Namespace}/{EventHub}/{PartitionId}/{Year}/{Month}/{Day}/{Hour}/{Minute}/{Second}
De datumwaarden worden opgevuld met nullen; een voorbeeld van een bestandsnaam kan zijn:
https://mystorageaccount.blob.core.windows.net/mycontainer/mynamespace/myeventhub/0/2017/12/08/03/03/17.avro
In het geval dat uw Azure Storage-blob tijdelijk niet beschikbaar is, bewaart Event Hubs Capture uw gegevens voor de gegevensretentieperiode die is geconfigureerd op uw Event Hub en vult u de gegevens weer in zodra uw opslagaccount weer beschikbaar is.
Doorvoereenheden of verwerkingseenheden schalen
In de standaardlaag van Event Hubs wordt het verkeer beheerd door doorvoereenheden en in de premium laag Event Hubs, wordt het beheerd door verwerkingseenheden. Event Hubs Capture kopieert gegevens rechtstreeks vanuit de interne Event Hubs-opslag, waardoor de quota voor de doorvoereenheid of de verwerkingseenheid voor egressie worden omzeild en het egress wordt opgeslagen voor andere verwerkingslezers, zoals Stream Analytics of Spark.
Na de configuratie wordt Event Hubs Capture automatisch uitgevoerd wanneer u uw eerste gebeurtenis verzendt en wordt de app voortgezet. Om het voor uw downstreamverwerking gemakkelijker te maken om te weten dat het proces werkt, schrijft Event Hubs lege bestanden wanneer er geen gegevens zijn. Dit proces biedt een voorspelbare cadence en markering die uw batchprocessors kan voorzien.
Event Hubs Capture instellen
U kunt Capture configureren tijdens het maken van de Event Hub met behulp van de Azure Portalof met behulp Azure Resource Manager sjablonen. Raadpleeg voor meer informatie de volgende artikelen:
- Event Hubs Capture inschakelen met behulp van de Azure-portal
- Een Event Hubs-naamruimte met een gebeurtenishub maken en Capture inschakelen met behulp van een Azure Resource Manager-sjabloon
Notitie
Als u de functie Capture inschakelen voor een bestaande Event Hub, legt de functie gebeurtenissen vast die bij de Event Hub binnenkomen nadat de functie is ingeschakeld. Het legt geen gebeurtenissen vast die al bestonden in de Event Hub voordat de functie werd ingeschakeld.
De vastgelegde bestanden verkennen en werken met Avro
Event Hubs Capture maakt bestanden in Avro-indeling, zoals opgegeven in het geconfigureerde tijdvenster. U kunt deze bestanden weergeven in elk hulpprogramma zoals Azure Storage Explorer. U kunt de bestanden lokaal downloaden om er aan te werken.
De bestanden die door Event Hubs Capture worden geproduceerd, hebben het volgende Avro-schema:

Een eenvoudige manier om Avro-bestanden te verkennen, is met behulp van de Avro Tools jar van Apache. U kunt Apache Drill ook gebruiken voor een lichtgewicht SQL-driven ervaring of Apache Spark om complexe gedistribueerde verwerking uit te voeren op de opgenomen gegevens.
Apache Drill gebruiken
Apache Drill is een opensource-query-engine SQL voor het verkennen van big data, die overal query's kan uitvoeren op gestructureerde en semi-gestructureerde gegevens. De engine kan worden uitgevoerd als een zelfstandig knooppunt of als een groot cluster voor uitstekende prestaties.
Er is een native ondersteuning voor Azure Blob Storage beschikbaar, waardoor u eenvoudig gegevens in een Avro-bestand kunt opvragen, zoals beschreven in de documentatie:
Apache Drill: Azure Blob Storage Plugin
Als u eenvoudig een query wilt uitvoeren op vastgelegde bestanden, kunt u een VM maken en uitvoeren met Apache Drill ingeschakeld via een container voor toegang tot Azure Blob Storage. Zie het volgende voorbeeld: Streamen op schaal met Event Hubs Capture.
Gebruik Apache Spark
Apache Spark is een geïntegreerde analyse-engine voor grootschalige gegevensverwerking. Het ondersteunt verschillende talen, waaronder SQL, en heeft eenvoudig toegang tot Azure Blob Storage. Er zijn enkele opties voor het uitvoeren van Apache Spark in Azure en elk biedt eenvoudige toegang tot Azure Blob Storage:
- HDInsight: Adresbestanden in Azure Storage
- Azure Databricks: Azure Blob Storage
- Azure Kubernetes Service
Avro-hulpprogramma's gebruiken
Avro-hulpprogramma's zijn beschikbaar als jar-pakket. Nadat u het JAR-bestand hebt gedownload, kunt u het schema van een specifiek Avro-bestand bekijken door de volgende opdracht uit te voeren:
java -jar avro-tools-1.9.1.jar getschema <name of capture file>
Met deze opdracht wordt
{
"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"]}
]
}
U kunt avro-hulpprogramma's ook gebruiken om het bestand te converteren naar JSON-indeling en andere verwerkingen uit te voeren.
Als u geavanceerdere verwerking wilt uitvoeren, downloadt en installeert u Avro voor uw platformkeuze. Op het moment van schrijven zijn er implementaties beschikbaar voor C, C++, # C, Java, NodeJS, Perl, PHP, Python en Ruby.
Apache Avro heeft volledige Aan de slag voor Java en Python. U kunt ook het artikel Aan de slag met Event Hubs Capture lezen.
Hoe Event Hubs Capture in rekening wordt gebracht
Event Hubs Capture wordt op dezelfde manier gemeten als doorvoereenheden (Standard-laag) of verwerkingseenheden (in premium-laag): als kosten per uur. De kosten zijn rechtstreeks evenredig met het aantal doorvoereenheden of verwerkingseenheden dat is aangeschaft voor de naamruimte. Naarmate doorvoereenheden of verwerkingseenheden worden verhoogd en verlaagd, neemt Event Hubs Capture-meters toe en af om overeenkomende prestaties te bieden. De meters worden samen uitgevoerd. Zie prijzen voor Event Hubs prijsinformatie.
Capture verbruikt geen quotum voorgressen, omdat het afzonderlijk wordt gefactureerd.
Integratie met Event Grid
U kunt een Azure Event Grid maken met een Event Hubs naamruimte als bron. In de volgende zelfstudie ziet u hoe u een Event Grid-abonnement maakt met een Event Hub als bron en een Azure Functions-app als sink: Vastgelegde Event Hubs-gegevensverwerken en migreren naar een Azure Synapse Analytics met behulp van Event Grid en Azure Functions .
Volgende stappen
Event Hubs Capture is de eenvoudigste manier om gegevens in Azure op te halen. Met behulp van Azure Data Lake, Azure Data Factory en Azure HDInsight kunt u batchverwerking en andere analyses uitvoeren met vertrouwde hulpprogramma's en platformen van uw keuze, op elke schalen die u nodig hebt.
Meer informatie over het inschakelen van deze functie met Azure Portal en Azure Resource Manager sjabloon: