Logboeken en metrische gegevens van Uw Apache Spark-toepassingen verzamelen met behulp van een Azure-opslagaccount (preview)
De diagnostische emitterextensie voor Apache Spark fabric is een bibliotheek waarmee Apache Spark-toepassingen logboeken, gebeurtenislogboeken en metrische gegevens kunnen verzenden naar meerdere bestemmingen, waaronder Azure Log Analytics, Azure Storage en Azure Event Hubs.
In deze zelfstudie leert u hoe u de diagnostische emitterextensie voor Apache Spark fabric gebruikt om Apache Spark-toepassingslogboeken, gebeurtenislogboeken en metrische gegevens naar uw Azure Storage-account te verzenden.
Logboeken en metrische gegevens verzamelen voor opslagaccount
Stap 1: Een opslagaccount maken
Als u diagnostische logboeken en metrische gegevens wilt verzamelen, kunt u een bestaand Azure Storage-account gebruiken. Als u nog geen account hebt, kunt u een Azure Blob Storage-account maken of een opslagaccount maken voor gebruik met Azure Data Lake Storage Gen2.
Stap 2: Een infrastructuuromgevingartefact maken met Apache Spark-configuratie
Optie 1: Configureren met Azure Storage-URI en toegangssleutel
Een Fabric Omgevingsartefact maken in Fabric
Voeg de volgende Spark-eigenschappen met de juiste waarden toe aan het omgevingsartefact of selecteer Toevoegen uit .yml op het lint om het yaml-voorbeeldbestand te downloaden dat al de volgende eigenschappen bevat.
spark.synapse.diagnostic.emitters: MyStorageBlob spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret: <storage-access-key> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Vul de volgende parameters in het configuratiebestand in:
<my-blob-storage>
,<container-name>
, ,<folder-name>
.<storage-access-key>
Zie Azure Storage-configuraties voor meer informatie over deze parameters.
Optie 2: Configureren met Azure Key Vault
Notitie
Zorg ervoor dat gebruikers die Apache Spark-toepassingen verzenden, leesgeheimmachtigingen krijgen. Zie Toegang bieden tot Key Vault-sleutels, -certificaten en -geheimen met een op rollen gebaseerd toegangsbeheer van Azure voor meer informatie.
Azure Key Vault configureren voor het opslaan van de werkruimtesleutel:
Maak en ga naar uw sleutelkluis in Azure Portal.
Selecteer geheimen op de instellingenpagina voor de sleutelkluis en vervolgens Genereren/importeren.
Kies in het scherm Een geheim maken de volgende waarden:
- Naam: Voer een naam in voor het geheime sleutel.
-
Waarde: Voer het
<storage-access-key>
voor het geheim in. - Houd voor de overige waarden de standaardwaarden aan. Selecteer vervolgens Maken.
Maak een Fabric Environment Artifact in Fabric.
Voeg de volgende Spark-eigenschappen toe. Of selecteer Toevoegen uit .yml op het lint om het yaml-voorbeeldbestand te uploaden dat de volgende Spark-eigenschappen bevat.
spark.synapse.diagnostic.emitters: <MyStorageBlob> spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault: <AZURE_KEY_VAULT_URI> spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Vul de volgende parameters in het configuratiebestand in:
<my-blob-storage>
,<container-name>
,<folder-name>
, ,<AZURE_KEY_VAULT_URI>
.<AZURE_KEY_VAULT_SECRET_KEY_NAME>
Zie Azure Storage-configuraties voor meer informatie over deze parameters.Sla wijzigingen op en publiceer deze.
Stap 3: koppel het omgevingsartefact aan notebooks of spark-taakdefinities, of stel het in als de standaardinstelling voor de werkruimte
Notitie
Alleen werkruimtebeheerders kunnen een omgeving aanwijzen als de standaardinstelling voor een werkruimte.
Zodra deze is ingesteld, wordt deze de standaardomgeving voor alle notebooks en Spark-taakdefinities binnen de werkruimte. Zie Instellingen voor Fabric-werkruimten voor meer details.
De omgeving koppelen aan Notebooks of Spark-taakdefinities:
- Navigeer naar de specifieke notebook- of Spark-taakdefinitie in Fabric.
- Selecteer het menu Omgeving op het tabblad Start en selecteer de omgeving met de geconfigureerde Spark-eigenschappen voor diagnostische gegevens.
- De configuratie wordt toegepast wanneer u een Spark-sessie start.
De omgeving instellen als de standaardinstelling voor de werkruimte:
- Navigeer naar Werkruimte-instellingen in Fabric.
- Zoek de Spark-instellingen in uw werkruimte-instellingen (werkruimte-instellingen -> Data-engineering/Science -> Spark-instellingen).
- Selecteer het tabblad Omgeving en kies de omgeving met diagnostische spark-eigenschappen die zijn geconfigureerd en klik op Opslaan.
Stap 4: De logboekbestanden in het Azure-opslagaccount weergeven
Nadat u een taak hebt verzonden naar de geconfigureerde Spark-sessie, kunt u de logboeken en metrische bestanden weergeven in het doelopslagaccount. De logboeken worden opgeslagen in de bijbehorende paden op basis van verschillende toepassingen, geïdentificeerd door <workspaceId>.<fabricLivyId>
. Alle logboekbestanden hebben het formaat JSON-lijnen (ook wel regeleinde-gescheiden JSON of ndjson genoemd), wat handig is voor gegevensverwerking.
Beschikbare configuraties
Configuratie | Beschrijving |
---|---|
spark.synapse.diagnostic.emitters |
Vereist. De door komma's gescheiden doelnamen van diagnostische emitters. Bijvoorbeeld MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Vereist. Ingebouwd doeltype. Om de Azure-opslagbestemming in te schakelen, moet AzureStorage in dit veld worden opgenomen. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Optioneel. De door komma's gescheiden geselecteerde logboekcategorieën. Beschikbare waarden zijn onder andere DriverLog , ExecutorLog , EventLog . Metrics Als deze niet is ingesteld, is de standaardwaarde alle categorieën. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Vereist.
AccessKey voor het gebruik van autorisatie met een toegangssleutel bij opslagaccounts.
SAS voor de autorisatie van gedeelde toegangshandtekeningen. |
spark.synapse.diagnostic.emitter.<destination>.uri |
Vereist. De URI van de doelmap voor blobcontainers. Moet overeenkomen met het patroon https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> . |
spark.synapse.diagnostic.emitter.<destination>.secret |
Optioneel. De geheime inhoud (inhoudsopgave van AccessKey of SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Vereist als .secret niet is gespecificeerd. De Azure Key Vault URI waar het geheim (AccessKey of SAS) is opgeslagen. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Vereist als .secret.keyVault is opgegeven. De naam van het Azure Key Vault-geheim waar het geheim (AccessKey of SAS) is opgeslagen. |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Optioneel. Door de door komma's gescheiden namen van Spark-gebeurtenissen op te geven, kunt u specificeren welke gebeurtenissen moeten worden verzameld. Bijvoorbeeld: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Optioneel. De Log4j-logboeknamen, die door komma's worden gescheiden, kunt u specificeren om aan te geven welke logboeken moeten worden verzameld. Bijvoorbeeld: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Optioneel. Met de naamachtervoegsels voor spark-metrische gegevens, die door komma's worden gescheiden, kunt u specificeren welke metrische gegevens u wilt verzamelen. Bijvoorbeeld: jvm.heap.used |
spark.fabric.pools.skipStarterPools |
Vereist. Deze Spark-eigenschap wordt gebruikt om een Spark-sessie op aanvraag af te dwingen. Stel de waarde true in op wanneer u de standaardgroep gebruikt om de bibliotheken te activeren voor het verzenden van logboeken en metrische gegevens. |
Voorbeeld van logboekgegevens
Hier volgt een voorbeeld van een logboekrecord in JSON-indeling:
{
"timestamp": "2025-02-28T09:13:57.978Z",
"category": "Log|EventLog|Metrics",
"fabricLivyId": "<fabric-livy-id>",
"applicationId": "<application-id>",
"applicationName": "<application-name>",
"executorId": "<driver-or-executor-id>",
"userId": "<the-submitter-user-id>",
"fabricTenantId": "<my-fabric-tenant-id>",
"capacityId": "<my-fabric-capacity-id>",
"artifactType": "SynapseNotebook|SparkJobDefinition",
"artifactId": "<my-fabric-artifact-id>",
"fabricWorkspaceId": "<my-fabric-workspace-id>",
"fabricEnvId": "<my-fabric-environment-id>",
"executorMin": "<executor-min>",
"executorMax": "<executor-max>",
"isHighConcurrencyEnabled": "true|false",
"properties": {
// The message properties of logs, events and metrics.
"timestamp": "2025-02-28T09:13:57.941Z",
"message": "ApplicationAttemptId: appattempt_1740734011890_0001_000001",
"logger_name": "org.apache.spark.deploy.yarn.ApplicationMaster",
"level": "INFO",
"thread_name": "main"
// ...
}
}
Fabric-werkruimten met beheerd virtueel netwerk
Maak een beheerd privé-eindpunt voor de doelopslag Azure Blob Storage. Raadpleeg beheerde privé-eindpunten maken en gebruiken in Microsoft Fabric - Microsoft Fabric voor gedetailleerde instructies.
Zodra het beheerde privé-eindpunt is goedgekeurd, kunnen gebruikers beginnen met het verzenden van logboeken en metrische gegevens naar de doel-Azure Blob Storage.