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
Opprett en stoffmiljøartefakt i stoff
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:
Opprett og gå til nøkkelhvelvet i Azure-portalen.
Velg Hemmeligheter på innstillingssiden for nøkkelhvelvet, og generer /importer.
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.
Opprett en stoffmiljøartefakt i stoff.
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.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:
- Gå til den bestemte notatblokken eller Spark-jobbdefinisjonen i Fabric.
- Velg Miljø-menyen på Hjem-fanen, og velg miljøet med de konfigurerte spark-egenskapene for diagnose.
- Konfigurasjonen brukes når du starter en Spark-økt.
Slik angir du miljøet som standard for arbeidsområdet:
- Gå til Innstillinger for arbeidsområde i Stoff.
- Finn Spark-innstillingene i innstillingene for arbeidsområdet (innstillinger for arbeidsområde –> Dataingeniør ing/Vitenskap –> Spark-innstillinger).
- 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 , EventLog Metrics . Hvis den ikke er angitt, er standardverdien alle kategorier. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Påkrevd.
AccessKey for 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.