Del via


Overvåk Apache Spark-programmer med Azure-logganalyse (forhåndsversjon)

Utvidelsen Fabric Apache Spark-diagnosedemitter 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-hendelseshuber.

I denne opplæringen lærer du hvordan du konfigurerer og avgir Spark-logger og -måledata til Logganalyse i Stoff. Når du er konfigurert, kan du samle inn og analysere Apache Spark-programmetrikk og -logger i arbeidsområdet for logganalyse.

Konfigurer arbeidsområdeinformasjon

Følg disse trinnene for å konfigurere nødvendig informasjon i Fabric.

Trinn 1: Opprette et arbeidsområde for logganalyse

Se en av følgende ressurser for å opprette dette arbeidsområdet:

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

Hvis du vil konfigurere Spark, oppretter du en stoffmiljøartefakt og velger ett av følgende alternativer:

Alternativ 1: Konfigurer med Arbeidsområde-ID for logganalyse og 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 de nødvendige egenskapene.

    • <LOG_ANALYTICS_WORKSPACE_ID>: Arbeidsområde-ID for logganalyse.
    • <LOG_ANALYTICS_WORKSPACE_KEY>: Logganalysenøkkel. Hvis du vil finne dette, går du til Primærnøkkel for Azure Log Analytics-arbeidsområdet>Agents>i Azure-portalen.
    spark.synapse.diagnostic.emitters: LA
    spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
    spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.diagnostic.emitter.LA.secret: <LOG_ANALYTICS_WORKSPACE_KEY>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Alternativt kan du bruke samme konfigurasjon som Azure Synapse, bruke følgende egenskaper eller velge Legg til fra .yml på båndet for å laste ned eksempelfilen for yaml.

    spark.synapse.logAnalytics.enabled: "true"
    spark.synapse.logAnalytics.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.logAnalytics.secret: <LOG_ANALYTICS_WORKSPACE_KEY>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    
  3. Lagre og publiser endringer.

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.

Du må gi lesehemmelig tillatelse til brukerne som skal sende Inn Apache Spark-programmer. 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.

Følg disse trinnene for å konfigurere Azure Key Vault til å lagre arbeidsområdenøkkelen:

  1. Gå til Key Vault i Azure-portalen.

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

  3. Skriv inn følgende verdier på skjermbildet Opprett en hemmelig skjerm:

    • Navn: Skriv inn et navn for hemmeligheten. Skriv inn SparkLogAnalyticsSecretfor standardverdien.
    • Verdi: Skriv inn <LOG_ANALYTICS_WORKSPACE_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 med tilsvarende verdier i miljøartefakten, eller velg Legg til fra .yml på båndet i miljøartefakten for å laste ned eksempel-yaml-filen som inkluderer følgende Spark-egenskaper.

    • <LOG_ANALYTICS_WORKSPACE_ID>: Arbeidsområde-ID for logganalyse.
    • <AZURE_KEY_VAULT_NAME>: Navnet på nøkkelhvelvet du konfigurerte.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (valgfritt): Det hemmelige navnet i nøkkelhvelvet for arbeidsområdenøkkelen. Standardverdien er SparkLogAnalyticsSecret.
    // Spark properties for LA
    spark.synapse.diagnostic.emitters LA
    spark.synapse.diagnostic.emitter.LA.type: "AzureLogAnalytics"
    spark.synapse.diagnostic.emitter.LA.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.LA.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.diagnostic.emitter.LA.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.LA.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Alternativt kan du bruke samme konfigurasjon som Azure Synapse, bruke følgende egenskaper eller velge Legg til fra .yml på båndet for å laste ned eksempelfilen for yaml.

    spark.synapse.logAnalytics.enabled: "true"
    spark.synapse.logAnalytics.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.logAnalytics.keyVault.name: <AZURE_KEY_VAULT_NAME>
    spark.synapse.logAnalytics.keyVault.key.secret: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Merk

    Du kan også lagre arbeidsområde-ID-en i Key Vault. Angi det hemmelige navnet til SparkLogAnalyticsWorkspaceId, eller bruk konfigurasjonen spark.synapse.logAnalytics.keyVault.key.workspaceId til å angi det hemmelige navnet på arbeidsområde-ID-en.

    Hvis du vil ha en liste over Apache Spark-konfigurasjoner, kan du se Tilgjengelige Apache Spark-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 notatblokken eller Spark-jobbdefinisjonen i Fabric.
  2. Velg Miljø-menyen på Hjem-fanen, og velg det konfigurerte miljøet.
  3. Konfigurasjonen vil bli brukt etter at du har startet en Spark-økt.

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

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

Merk

Bare administratorer av arbeidsområdet kan administrere konfigurasjoner. Verdiene gjelder for notatblokker og Spark-jobbdefinisjoner som er knyttet til innstillinger for arbeidsområde. Hvis du vil ha mer informasjon, kan du se Innstillinger for stoffarbeidsområde.

Send inn et Apache Spark-program og vis loggene og måledataene

Slik sender du inn et Apache Spark-program:

  1. Send inn et Apache Spark-program, med det tilknyttede miljøet, som ble konfigurert i forrige trinn. Du kan bruke følgende måter å gjøre dette på:

    • Kjør en notatblokk i Fabric.
    • Send inn en kjørseljobb for Apache Spark gjennom en Apache Spark-jobbdefinisjon.
    • Kjør Spark-aktivitetene dine i Pipelines.
  2. Gå til det angitte logganalysearbeidsområdet, og vis deretter programmetrikkene og loggene når Apache Spark-programmet begynner å kjøre.

Skrive egendefinerte programlogger

Du kan bruke Apache Log4j-biblioteket til å skrive egendefinerte logger. Her er eksempler for Scala og PySpark:

Skaleraeksempel:

%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
      1/0
 } catch {
      case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()

Eksempel på PySpark:

%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")

Spørringsdata med Kusto

Slik spør du Apache Spark-hendelser:

SparkListenerEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Slik spør du spark-programdriveren og executor-loggene:

SparkLoggingEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Slik spør du Apache Spark-måledata:

SparkMetrics_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc

Datagrenser

Fabric sender loggdata til Azure Monitor ved hjelp av HTTP Data Collector-API-en. Dataene som er lagt inn i API-en for Azure Monitor Data-innsamling, er underlagt visse begrensninger:

  • Maksimalt 30 MB per innlegg i Azure Monitor Data Collector API. Dette er en størrelsesgrense for ett enkelt innlegg. Hvis dataene fra ett enkelt innlegg overskrider 30 MB, bør du dele dataene i mindre størrelser og sende dem samtidig.
  • Maksimum 32 kB for feltverdier. Hvis feltverdien er større enn 32 kB, avkortes dataene.
  • Anbefalt maksimalt 50 felt for en gitt type. Dette er en praktisk grense fra et brukervennlighets- og søkeopplevelsesperspektiv.
  • Tabeller i Logganalyse-arbeidsområder støtter bare opptil 500 kolonner.
  • Maksimalt 45 tegn for kolonnenavn.

Opprette og behandle varsler

Brukere kan spørre for å evaluere måledata og logger med en angitt frekvens, og utløse et varsel basert på resultatene. Hvis du vil ha mer informasjon, kan du se Opprette, vise og behandle loggvarsler ved hjelp av Azure Monitor.

Stoffarbeidsområder med administrert virtuelt nettverk

Azure Log Analytics kan for øyeblikket ikke velges som et mål for Spark-logger og måledata i et administrert virtuelt nettverk fordi det administrerte private endepunktet ikke støtter Log Analytics som datakilde.

Neste trinn