Dela via


Samla in loggar och mått för Apache Spark-program med azure-lagringskonto (förhandsversion)

Diagnostikutfärdartillägget för Fabric Apache Spark är ett bibliotek som gör det möjligt för Apache Spark-program att generera loggar, händelseloggar och mått till flera mål, inklusive Azure Log Analytics, Azure Storage och Azure Event Hubs.

I den här självstudien får du lära dig hur du använder tillägget För diagnostikemitterare i Fabric Apache Spark för att skicka Apache Spark-programloggar, händelseloggar och mått till ditt Azure Storage-konto.

Samla in loggar och mått till lagringskontot

Steg 1: Skapa ett lagringskonto

Om du vill samla in diagnostikloggar och mått kan du använda ett befintligt Azure Storage-konto. Om du inte har något kan du skapa ett Azure Blob Storage-konto eller skapa ett lagringskonto som ska användas med Azure Data Lake Storage Gen2.

Steg 2: Skapa en infrastrukturmiljöartefakt med Apache Spark-konfiguration

Alternativ 1: Konfigurera med Azure Storage-URI och åtkomstnyckel

  1. Skapa en infrastrukturmiljöartefakt i infrastrukturresurser

  2. Lägg till följande Spark-egenskaper med lämpliga värden i miljöartefakten eller välj Lägg till från .yml i menyfliksområdet för att ladda ned yaml-exempelfilen, som redan innehåller följande egenskaper.

    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.
    

    Fyll i följande parametrar i konfigurationsfilen: <my-blob-storage>, <container-name>, <folder-name>, . <storage-access-key> Mer information om dessa parametrar finns i Azure Storage-konfigurationer.

Alternativ 2: Konfigurera med Azure Key Vault

Kommentar

Känt problem: Det går inte att starta en session med alternativ 2 preliminärt. För närvarande förhindrar lagring av hemligheter i Key Vault Spark-sessioner från att starta. Prioritera konfigurationen med hjälp av den metod som beskrivs i alternativ 1.

Se till att användare som skickar Apache Spark-program beviljas läshemliga behörigheter. Mer information finns i Ge åtkomst till Key Vault-nycklar, certifikat och hemligheter med en rollbaserad åtkomstkontroll i Azure.

Så här konfigurerar du Azure Key Vault för lagring av arbetsytenyckeln:

  1. Skapa och gå till ditt nyckelvalv i Azure Portal.

  2. På inställningssidan för nyckelvalvet väljer du Hemligheter och sedan Generera/importera.

  3. Välj följande värden på skärmen Skapa en hemlighet:

    • Namn: Ange ett namn för hemligheten.
    • Värde: Ange <storage-access-key> för hemligheten.
    • Lämna standardvärdena för de andra alternativen. Välj sedan Skapa.
  4. Skapa en infrastrukturmiljöartefakt i infrastrukturresurser.

  5. Lägg till följande Spark-egenskaper. Eller välj Lägg till från .yml i menyfliksområdet för att ladda upp yaml-exempelfilen som innehåller följande Spark-egenskaper.

    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.
    

    Fyll i följande parametrar i konfigurationsfilen: <my-blob-storage>, <container-name>, <folder-name>, <AZURE_KEY_VAULT_NAME>, . <AZURE_KEY_VAULT_SECRET_KEY_NAME> Mer information om dessa parametrar finns i Azure Storage-konfigurationer.

  6. Spara och publicera ändringarna.

Steg 3: Koppla miljöartefakten till notebook-filer eller spark-jobbdefinitioner eller ange den som standard för arbetsytan

Så här kopplar du miljön till notebook- eller Spark-jobbdefinitioner:

  1. Navigera till den specifika notebook-filen eller Spark-jobbdefinitionen i Infrastrukturresurser.
  2. Välj menyn Miljö på fliken Start och välj miljön med de konfigurerade Spark-egenskaperna för diagnostik.
  3. Konfigurationen tillämpas när du startar en Spark-session.

Så här anger du miljön som standard för arbetsytan:

  1. Gå till Arbetsyteinställningar i Infrastrukturresurser.
  2. Hitta Spark-inställningarna i inställningarna för arbetsytan (inställningen Arbetsyta –> Dataingenjör ing/Science –> Spark-inställningar).
  3. Välj fliken Miljö och välj miljön med diagnostik spark-egenskaper konfigurerade och klicka på Spara.

Kommentar

Endast arbetsyteadministratörer kan hantera konfigurationer av arbetsytor. Ändringar som görs här gäller för alla notebook-filer och Spark-jobbdefinitioner som är kopplade till arbetsyteinställningarna. Mer information finns i Inställningar för infrastrukturarbetsyta.

Steg 4: Visa loggfilerna i Azure Storage-kontot

När du har skickat ett jobb till den konfigurerade Spark-sessionen kan du visa loggarna och måttfilerna i mållagringskontot. Loggarna lagras i motsvarande sökvägar baserat på olika program som identifieras av <workspaceId>.<fabricLivyId>. Alla loggfiler är i JSON Lines-format (kallas även newline-avgränsad JSON eller ndjson), vilket är praktiskt för databearbetning.

Tillgängliga konfigurationer

Konfiguration beskrivning
spark.synapse.diagnostic.emitters Obligatoriskt. Kommaavgränsade målnamn för diagnostikemittare. Till exempel: MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Obligatoriskt. Inbyggd måltyp. Om du vill aktivera Azure Storage-mål AzureStorage måste du inkluderas i det här fältet.
spark.synapse.diagnostic.emitter.<destination>.categories Valfritt. De kommaavgränsade valda loggkategorierna. Tillgängliga värden är DriverLog, ExecutorLog, EventLog, Metrics. Om det inte anges är standardvärdet alla kategorier.
spark.synapse.diagnostic.emitter.<destination>.auth Obligatoriskt. AccessKeyför att använda åtkomstnyckelauktorisering för lagringskonto. SASför auktorisering av signaturer för delad åtkomst.
spark.synapse.diagnostic.emitter.<destination>.uri Obligatoriskt. Målblobcontainerns mapp-URI. Ska matcha mönstret https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Valfritt. Det hemliga innehållet (AccessKey eller SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Krävs om .secret inte har angetts. Azure Key Vault-namnet där hemligheten (AccessKey eller SAS) lagras.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Krävs om .secret.keyVault anges. Det hemliga namnet på Azure Key Vault där hemligheten (AccessKey eller SAS) lagras.
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Valfritt. De kommaavgränsade spark-händelsenamnen kan du ange vilka händelser som ska samlas in. Till exempel: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Valfritt. De kommaavgränsade Log4j-loggningsnamnen kan du ange vilka loggar som ska samlas in. Till exempel: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Valfritt. Med kommaavgränsade spark-måttnamnssuffix kan du ange vilka mått som ska samlas in. Till exempel: jvm.heap.used
spark.fabric.pools.skipStarterPools Obligatoriskt. Den här Spark-egenskapen används för att tvinga fram en Spark-session på begäran. Du bör ange värdet till True när du använder standardpoolen för att utlösa biblioteken för att generera loggar och mått.

Exempel på loggdata

Här är en exempelloggpost i JSON-format:

{
  "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"
    //...
  }
}

Infrastrukturarbetsytor med hanterat virtuellt nätverk

Skapa en hanterad privat slutpunkt för Azure Blob Storage-målet. Detaljerade anvisningar finns i Skapa och använda hanterade privata slutpunkter i Microsoft Fabric – Microsoft Fabric.

När den hanterade privata slutpunkten har godkänts kan användarna börja generera loggar och mått till Azure Blob Storage-målet.

Nästa steg