Overvåg Apache Spark-programmer med Azure-loganalyse (prøveversion)
Udvidelsen til Fabric Apache Spark-diagnosticeringsudlederen er et bibliotek, der gør det muligt for Apache Spark-programmer at sende logge, hændelseslogge og målepunkter til flere destinationer, herunder Azure-loganalyse, Azure Storage og Azure-hændelseshubber.
I dette selvstudium lærer du, hvordan du konfigurerer og udsender Spark-logge og -målepunkter til Log analytics i Fabric. Når den er konfigureret, kan du indsamle og analysere Apache Spark-programmålepunkter og -logge i dit loganalysearbejdsområde.
Konfigurer oplysninger om arbejdsområde
Følg disse trin for at konfigurere de nødvendige oplysninger i Fabric.
Trin 1: Opret et loganalysearbejdsområde
Se en af følgende ressourcer for at oprette dette arbejdsområde:
- Opret et arbejdsområde i Azure-portal.
- Opret et arbejdsområde med Azure CLI.
- Opret og konfigurer et arbejdsområde i Azure Monitor ved hjælp af PowerShell.
Trin 2: Opret en Fabric-miljøartefakt med Apache Spark-konfiguration
Hvis du vil konfigurere Spark, skal du oprette en Fabric Environment Artifact og vælge en af følgende indstillinger:
Mulighed 1: Konfigurer med loganalysearbejdsområde-id og nøgle
Opret et stofmiljøartefakt i fabric
Føj følgende Spark-egenskaber med de relevante værdier til miljøartefakten, eller vælg Tilføj fra .yml på båndet for at downloade yaml-eksempelfilen, som allerede indeholder de påkrævede egenskaber.
<LOG_ANALYTICS_WORKSPACE_ID>
: Log Analytics-arbejdsområde-id.<LOG_ANALYTICS_WORKSPACE_KEY>
: Log Analytics-nøgle. Hvis du vil finde dette, skal du i Azure-portal gå til Den primære nøgle for Azure Log Analytics-arbejdsområdeagenter>>.
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.
Du kan også anvende den samme konfiguration som Azure Synapse ved at bruge følgende egenskaber eller vælge Tilføj fra .yml på båndet for at downloade yaml-eksempelfilen.
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.
Gem og publicer ændringerne.
Mulighed 2: Konfigurer med Azure Key Vault
Bemærk
Kendt problem: En session kan ikke startes midlertidigt ved hjælp af mulighed 2. I øjeblikket forhindrer lagring af hemmeligheder i Key Vault Spark-sessioner i at starte. Prioriter konfigurationen af den ved hjælp af den metode, der er beskrevet i Mulighed 1.
Du skal give læsehemmelighedstilladelse til de brugere, der indsender Apache Spark-programmer. Du kan få flere oplysninger under Giv adgang til Key Vault-nøgler, -certifikater og -hemmeligheder med et rollebaseret adgangskontrolelement i Azure.
Hvis du vil konfigurere Azure Key Vault til at gemme nøglen til arbejdsområdet, skal du følge disse trin:
Gå til din Key Vault i Azure-portal.
På siden med indstillinger for key vault skal du vælge Hemmeligheder og derefter Generér/importér.
Angiv følgende værdier på skærmen Opret en hemmelighed :
- Navn: Angiv et navn til hemmeligheden. Som standard skal du angive
SparkLogAnalyticsSecret
. - Værdi: Angiv
<LOG_ANALYTICS_WORKSPACE_KEY>
for hemmeligheden. - Lad de andre værdier være deres standardværdier. Vælg derefter Opret.
- Navn: Angiv et navn til hemmeligheden. Som standard skal du angive
Opret et stofmiljøartefakt i fabric
Føj følgende Spark-egenskaber med de tilsvarende værdier til miljøartefakten, eller vælg Tilføj fra .yml på båndet i miljøartefakten for at downloade yaml-eksempelfilen , som omfatter følgende Spark-egenskaber.
<LOG_ANALYTICS_WORKSPACE_ID>
: Log Analytics-arbejdsområde-id'et.<AZURE_KEY_VAULT_NAME>
: Det key vault-navn, du har konfigureret.<AZURE_KEY_VAULT_SECRET_KEY_NAME>
(valgfrit): Det hemmelige navn i key vault for arbejdsområdenøglen. Standarden erSparkLogAnalyticsSecret
.
// 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.
Du kan også anvende den samme konfiguration som Azure Synapse ved at bruge følgende egenskaber eller vælge Tilføj fra .yml på båndet for at downloade yaml-eksempelfilen.
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.
Bemærk
Du kan også gemme arbejdsområde-id'et i Key Vault. Angiv navnet på hemmeligheden til
SparkLogAnalyticsWorkspaceId
, eller brug konfigurationenspark.synapse.logAnalytics.keyVault.key.workspaceId
til at angive navnet på arbejdsområde-id'et for hemmeligheden.Du kan se en liste over Apache Spark-konfigurationer under Tilgængelige Apache Spark-konfigurationer
Gem og publicer ændringerne.
Trin 3: Vedhæft miljøartefakten til notesbøger eller spark jobdefinitioner, eller angiv det som standard for arbejdsområdet
Sådan vedhæfter du miljøet til notesbøger eller Spark-jobdefinitioner:
- Gå til definitionen af din notesbog eller Spark-job i Fabric.
- Vælg menuen Miljø under fanen Hjem, og vælg det konfigurerede miljø.
- Konfigurationen anvendes efter start af en Spark-session.
Sådan angiver du miljøet som standard for arbejdsområdet:
- Gå til Indstillinger for arbejdsområde i Fabric.
- Find Spark-indstillingerne i indstillingerne for arbejdsområdet (indstilling for arbejdsområde –> Dataudvikler ing/videnskab –> Spark-indstillinger)
- Vælg fanen Miljø , og vælg miljøet med konfigurerede egenskaber for diagnosticerings spark, og klik på Gem.
Bemærk
Det er kun administratorer af arbejdsområdet, der kan administrere konfigurationer. Værdierne gælder for notesbøger og Spark-jobdefinitioner, der er knyttet til Indstillinger for arbejdsområde. Du kan finde flere oplysninger under Indstillinger for stofarbejdsområde.
Indsend et Apache Spark-program, og få vist loggene og målepunkterne
Sådan indsender du et Apache Spark-program:
Indsend et Apache Spark-program med det tilknyttede miljø, som blev konfigureret i det forrige trin. Du kan bruge en af følgende måder til at gøre det:
- Kør en notesbog i Fabric.
- Send et Apache Spark-batchjob via en Apache Spark-jobdefinition.
- Kør dine Spark-aktiviteter i dine pipelines.
Gå til det angivne Log Analytics-arbejdsområde, og få derefter vist programmets målepunkter og logge, når Apache Spark-programmet begynder at køre.
Skriv brugerdefinerede programlogge
Du kan bruge Apache Log4j-biblioteket til at skrive brugerdefinerede logge. Her er eksempler på Scala og PySpark:
Scala-eksempel:
%%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()
PySpark-eksempel:
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
Forespørg om data med Kusto
Sådan forespørger du om Apache Spark-hændelser:
SparkListenerEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Sådan forespørger du Spark-programdriveren og eksekveringslogfilerne:
SparkLoggingEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Sådan forespørger du Apache Spark-målepunkter:
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
Datagrænser
Fabric sender logdata til Azure Monitor ved hjælp af HTTP-dataindsamler-API'en. De data, der er sendt til Azure Monitor Data collection API, er underlagt visse begrænsninger:
- Maksimalt 30 MB pr. indlæg til Azure Monitor Data Collector API. Dette er en størrelsesgrænse for et enkelt indlæg. Hvis dataene fra et enkelt indlæg overstiger 30 MB, skal du opdele dataene i mindre segmenter og sende dem samtidigt.
- Maksimalt 32 KB for feltværdier. Hvis feltværdien er større end 32 KB, afkortes dataene.
- Anbefalet maksimum på 50 felter for en given type. Dette er en praktisk grænse fra et anvendeligheds- og søgeoplevelsesperspektiv.
- Tabeller i Log Analytics-arbejdsområder understøtter kun op til 500 kolonner.
- Maksimalt 45 tegn for kolonnenavne.
Opret og administrer beskeder
Brugerne kan forespørge om at evaluere målepunkter og logge med en angivet hyppighed og udløse en besked baseret på resultaterne. Du kan få flere oplysninger under Opret, få vist og administrer logbeskeder ved hjælp af Azure Monitor.
Fabric-arbejdsområder med administreret virtuelt netværk
Azure Log Analytics kan i øjeblikket ikke vælges som destination for Spark-logge og metrikværdier i et administreret virtuelt netværk, fordi det administrerede private slutpunkt ikke understøtter Log Analytics som datakilde.