Del via


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

Fabric Apache Spark-diagnostisk emitterutvidelse er et bibliotek som gjør det mulig for Apache Spark-programmer å avgi logger, hendelseslogger og måledata til ulike 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 Event Hubs.

Samle logger og måledata til Azure Event Hubs

Trinn 1: Opprette en forekomst av Azure Event Hubs

Hvis du vil samle inn diagnoselogger og måledata, kan du bruke en eksisterende forekomst av Azure Event Hubs. Hvis du ikke har en, kan du opprette en hendelseshub.

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

Alternativ 1: Konfigurer med Tilkoblingsstreng for Azure Event Hubs

  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 eksempel-yaml-filen som allerede inneholder følgende egenskaper.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    <connection-string> Fyll ut parameterne i konfigurasjonsfilen. Hvis du vil ha mer informasjon, kan du se Konfigurasjoner for Azure Event Hubs.

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 <connection-string> 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 ned eksempelfilen yaml, som inkluderer følgende Spark-egenskaper.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyEventHub.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: <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Hvis du vil ha mer informasjon om disse parameterne, kan du se konfigurasjoner for Azure Event Hubs.

  6. Lagre og publiser endringer.

Trinn 3: Legg ved 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.

Tilgjengelige konfigurasjoner

Konfigurasjon Bekrivelse
spark.synapse.diagnostic.emitters Påkrevd. De kommadelte målnavnene for diagnosedemittere.
spark.synapse.diagnostic.emitter.<destination>.type Påkrevd. Innebygd måltype. Hvis du vil aktivere målet for Azure Event Hubs, bør verdien være AzureEventHub.
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>.secret Valgfritt. Azure Event Hubs-forekomsten tilkoblingsstreng. Dette feltet skal samsvare med dette mønsteret Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Obligatorisk hvis .secret ikke er angitt. Azure Key-hvelvnavnet der hemmeligheten (tilkoblingsstreng) 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 (tilkoblingsstreng) 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

Merk

Azure Eventhub-forekomsten tilkoblingsstreng alltid skal inneholde EntityPath, som er navnet på Forekomsten av Azure Event Hubs.

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ålhubene for Azure Event. 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ålhubene for Azure Event.

Neste trinn