Delen via


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

  1. Een Fabric Environment Artifact maken in Fabric

  2. 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:

  1. Maak en ga naar uw sleutelkluis in Azure Portal.

  2. Selecteer geheimen op de instellingenpagina voor de sleutelkluis en vervolgens Genereren/importeren.

  3. 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.
  4. Maak een Fabric Environment Artifact in Fabric.

  5. 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.

  6. 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:

  1. Navigeer naar de specifieke notebook- of Spark-taakdefinitie in Fabric.
  2. Selecteer het menu Omgeving op het tabblad Start en selecteer de omgeving met de geconfigureerde Spark-eigenschappen voor diagnostische gegevens.
  3. De configuratie wordt toegepast wanneer u een Spark-sessie start.

De omgeving instellen als de standaardinstelling voor de werkruimte:

  1. Navigeer naar Werkruimte-instellingen in Fabric.
  2. Zoek de Spark-instellingen in uw werkruimte-instellingen (werkruimte-instelling -> Data-engineer ing/Science -> Spark-instellingen).
  3. 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. AccessKeyvoor het gebruik van toegangssleutelautorisatie voor opslagaccounts. SASvoor 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.

Volgende stappen