Del via


Samle inn Logger og måledata for Apache Spark-programmer ved hjelp av Azure-lagringskonto (forhåndsversjon)

Fabric Apache Spark-diagnostisk emitter-utvidelse er et bibliotek som gjør det mulig for Apache Spark-programmer å avgi logger, hendelseslogger og måledata til flere destinasjoner, inkludert Azure Log Analytics, Azure Storage og Azure Event Hubs.

I denne opplæringen lærer du hvordan du bruker diagnoseutvidelsen Fabric Apache Spark til å sende Apache Spark-programlogger, hendelseslogger og måledata til Azure Storage-kontoen din.

Samle logger og måledata til lagringskonto

Trinn 1: Opprette en lagringskonto

Hvis du vil samle inn diagnoselogger og måledata, kan du bruke en eksisterende Azure Storage-konto. Hvis du ikke har en, kan du opprette en Azure blob-lagringskonto eller opprette en lagringskonto som du kan bruke med Azure Data Lake Storage Gen2.

Trinn 2: Opprette en stoffmiljøartefakt med Apache Spark-konfigurasjon

Alternativ 1: Konfigurer med Azure Storage URI og Access-nøkkel

  1. Opprett en stoffmiljøartefakt i stoff

  2. Legg til følgende Spark-egenskaper med de riktige verdiene i miljøartefakten, eller velg Legg til fra .yml på båndet for å laste ned eksempelfilen yaml, som allerede inneholder følgende 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: <storage-access-key>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Fyll ut følgende parametere i konfigurasjonsfilen: <my-blob-storage>, , <container-name>, <folder-name>. <storage-access-key> Hvis du vil ha mer informasjon om disse parameterne, kan du se Azure Storage-konfigurasjoner.

Alternativ 2: Konfigurer med Azure Key Vault

Merk

Kjent problem: Kan ikke starte en økt med alternativ 2 midlertidig. Lagring av hemmeligheter i Key Vault hindrer spark-økter i å starte. Prioriter konfigurasjonen ved hjelp av metoden som er beskrevet i alternativ 1.

Sørg for at brukere som sender inn Apache Spark-programmer, får lesehemmelige tillatelser. Hvis du vil ha mer informasjon, kan du se Gi tilgang til Key Vault-nøkler, sertifikater og hemmeligheter med en rollebasert tilgangskontroll i Azure.

Slik konfigurerer du Azure Key Vault for lagring av arbeidsområdenøkkelen:

  1. Opprett og gå til nøkkelhvelvet i Azure-portalen.

  2. Velg Hemmeligheter på innstillingssiden for nøkkelhvelvet, og generer /importer.

  3. Velg følgende verdier på oppretting av en hemmelig skjerm:

    • Navn: Skriv inn et navn for hemmeligheten.
    • Verdi: Skriv inn <storage-access-key> for hemmeligheten.
    • La de andre verdiene stå som standard. Velg deretter Opprett.
  4. Opprett en stoffmiljøartefakt i stoff.

  5. Legg til følgende Spark-egenskaper. Eller velg Legg til fra .yml på båndet for å laste opp eksempelfilen yaml, som inkluderer følgende 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 ut følgende parametere i konfigurasjonsfilen: <my-blob-storage>, , <container-name>, <folder-name>, <AZURE_KEY_VAULT_NAME>. <AZURE_KEY_VAULT_SECRET_KEY_NAME> Hvis du vil ha mer informasjon om disse parameterne, kan du se Azure Storage-konfigurasjoner.

  6. Lagre og publiser endringer.

Trinn 3: Legg til miljøartefakten i notatblokker eller spark-jobbdefinisjoner, eller angi den som standard for arbeidsområdet

Slik legger du til miljøet i notatblokker eller spark-jobbdefinisjoner:

  1. Gå til den bestemte notatblokken eller Spark-jobbdefinisjonen i Fabric.
  2. Velg Miljø-menyen på Hjem-fanen, og velg miljøet med de konfigurerte spark-egenskapene for diagnose.
  3. Konfigurasjonen brukes når du starter en Spark-økt.

Slik angir du miljøet som standard for arbeidsområdet:

  1. Gå til Innstillinger for arbeidsområde i Stoff.
  2. Finn Spark-innstillingene i innstillingene for arbeidsområdet (innstillinger for arbeidsområde –> Dataingeniør ing/Vitenskap –> Spark-innstillinger).
  3. Velg Miljø-fanen , og velg miljøet med egenskaper for diagnosegnistegenskap konfigurert, og klikk Lagre.

Merk

Bare administratorer for arbeidsområder kan administrere arbeidsområdekonfigurasjoner. Endringer som gjøres her, gjelder for alle notatblokker og Spark-jobbdefinisjoner som er knyttet til innstillingene for arbeidsområdet. Hvis du vil ha mer informasjon, kan du se Innstillinger for stoffarbeidsområde.

Trinn 4: Vise loggfilene i Azure-lagringskontoen

Når du har sendt inn en jobb til den konfigurerte Spark-økten, kan du vise loggene og målefilene i mållagringskontoen. Loggene lagres i tilsvarende baner basert på forskjellige programmer, identifisert av <workspaceId>.<fabricLivyId>. Alle loggfiler er i JSON Lines-format (også kjent som newline-delimited JSON eller ndjson), som er praktisk for databehandling.

Tilgjengelige konfigurasjoner

Konfigurasjon Bekrivelse
spark.synapse.diagnostic.emitters Påkrevd. De kommadelte målnavnene for diagnosedemittere. Eksempel: MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Påkrevd. Innebygd måltype. Hvis du vil aktivere azure-lagringsmål, AzureStorage må du inkluderes i dette feltet.
spark.synapse.diagnostic.emitter.<destination>.categories Valgfritt. De kommadelte valgte loggkategoriene. Tilgjengelige verdier inkluderer DriverLog, , ExecutorLog, EventLogMetrics. Hvis den ikke er angitt, er standardverdien alle kategorier.
spark.synapse.diagnostic.emitter.<destination>.auth Påkrevd. AccessKeyfor bruk av godkjenning av tilgangsnøkkel for lagringskonto. SAS for godkjenning av delte tilgangssignaturer .
spark.synapse.diagnostic.emitter.<destination>.uri Påkrevd. URI-en for mål-BLOB-beholdermappen. Skal samsvare med mønster https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Valgfritt. Hemmelig innhold (AccessKey eller SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Obligatorisk hvis .secret ikke er angitt. Azure Key-hvelvnavnet der hemmeligheten (AccessKey eller SAS) er lagret.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Obligatorisk hvis .secret.keyVault er angitt. Det hemmelige navnet på Azure Key-hvelvet der hemmeligheten (AccessKey eller SAS) er lagret.
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Valgfritt. Med kommadelt spark-hendelsesnavn kan du angi hvilke hendelser som skal samles inn. Eksempel: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Valgfritt. De kommadelte Log4j-loggernavnene kan du angi hvilke logger som skal samles inn. Eksempel: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Valgfritt. De kommadelte spark-metriske navnesuffiksene kan du angi hvilke måledata som skal samles inn. Eksempel: jvm.heap.used
spark.fabric.pools.skipStarterPools Påkrevd. Denne Spark-egenskapen brukes til å fremtvinge en behovsbetinget Spark-økt. Du bør angi verdien til True når du bruker standardutvalget for å utløse bibliotekene til å avgi logger og måledata.

Eksempel på loggdata

Her er en eksempelloggpost 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"
    //...
  }
}

Stoffarbeidsområder med administrert virtuelt nettverk

Opprett et administrert privat endepunkt for målet for Azure Blob Storage. Hvis du vil ha detaljerte instruksjoner, kan du se Opprette og bruke administrerte private endepunkter i Microsoft Fabric – Microsoft Fabric.

Når det administrerte private endepunktet er godkjent, kan brukere begynne å sende logger og måledata til målet for Azure Blob Storage.

Neste trinn