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 Environment Artifact 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.MyDestination1.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyDestination1.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
Bekend probleem: kan een sessie niet starten met optie 2 voorlopig. Op dit moment voorkomt het opslaan van geheimen in Key Vault dat Spark-sessies worden gestart. Geef prioriteit aan het configureren ervan met behulp van de methode die wordt beschreven in optie 1.
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 de naam in het voor het geheim.
- 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_NAME> 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_NAME>
.<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
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-instelling -> Data-engineer ing/Science -> Spark-instellingen).
- Selecteer het tabblad Omgeving en kies de omgeving met diagnostische spark-eigenschappen die zijn geconfigureerd en klik op Opslaan.
Notitie
Alleen werkruimtebeheerders kunnen werkruimteconfiguraties beheren. Wijzigingen die hier worden aangebracht, zijn van toepassing op alle notebooks en Spark-taakdefinities die zijn gekoppeld aan de werkruimte-instellingen. Zie Instellingen voor infrastructuurwerkruimten voor meer informatie.
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 de indeling JSON-lijnen (ook wel newline-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. Als u azure-opslagbestemming wilt inschakelen, AzureStorage moet u 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 toegangssleutelautorisatie voor opslagaccounts. SAS voor autorisatie van handtekeningen voor gedeelde toegang. |
spark.synapse.diagnostic.emitter.<destination>.uri |
Vereist. De doel-blobcontainermap-URI. 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 (AccessKey of SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Vereist als .secret dit niet is opgegeven. De naam van de Azure Key Vault waar het geheim (AccessKey of SAS) is opgeslagen. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Vereist als .secret.keyVault dit 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. De namen van door komma's gescheiden Spark-gebeurtenissen kunt u opgeven welke gebeurtenissen moeten worden verzameld. Bijvoorbeeld: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Optioneel. De door komma's gescheiden Log4j-logboeknamen kunt u opgeven welke logboeken moeten worden verzameld. Bijvoorbeeld: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Optioneel. Met de door komma's gescheiden naamachtervoegsels voor spark-metrische gegevens kunt u opgeven welke metrische gegevens moeten worden verzameld. 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": "2024-09-06T03:09:37.235Z",
"category": "Log|EventLog|Metrics",
"fabricLivyId": "<fabric-livy-id>",
"applicationId": "<application-id>",
"applicationName": "<application-name>",
"executorId": "<driver-or-executor-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": "2024-09-06T03:09:37.235Z",
"message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
"logger_name": "org.apache.spark.storage.BlockManager",
"level": "INFO",
"thread_name": "dispatcher-Executor"
//...
}
}
Fabric-werkruimten met beheerd virtueel netwerk
Maak een beheerd privé-eindpunt voor de Azure Blob Storage-doel. 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.