Delen via


Apache Spark-toepassingen bewaken met Azure Log Analytics (preview)

De diagnostische emitterextensie voor Apache Spark fabric is een bibliotheek waarmee Apache Spark-toepassingen logboeken, gebeurtenislogboeken en metrische gegevens kunnen verzenden naar meerdere bestemmingen, waaronder Azure Log Analytics, Azure Storage en Azure Event Hubs.

In deze zelfstudie leert u hoe u Spark-logboeken en metrische gegevens configureert en verzendt naar Log Analytics in Fabric. Zodra de configuratie is uitgevoerd, kunt u metrische gegevens en logboeken van Apache Spark-toepassingen verzamelen en analyseren in uw Log Analytics-werkruimte.

Werkruimtegegevens configureren

Volg deze stappen om de benodigde informatie in Fabric te configureren.

Stap 1: Een Log Analytics-werkruimte maken

Raadpleeg een van de volgende resources om deze werkruimte te maken:

Stap 2: een Fabric-omgevingsartefact maken met apache Spark-configuratie

Als u Spark wilt configureren, maakt u een Fabric Environment Artifact en kiest u een van de volgende opties:

Optie 1: Configureren met Log Analytics-werkruimte-id en -sleutel

  1. Een Fabric Environment Artifact maken in Fabric

  2. Voeg de volgende Spark-eigenschappen met de juiste waarden toe aan het omgevingsartefact of selecteer Toevoegen uit .yml op het lint om het yaml-voorbeeldbestand te downloaden dat al de vereiste eigenschappen bevat.

    • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics-werkruimte-id.
    • <LOG_ANALYTICS_WORKSPACE_KEY>: Log Analytics-sleutel. Als u dit wilt vinden, gaat u in Azure Portal naar de primaire sleutel van azure Log Analytics-werkruimteagents>>.
    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.
    

    Als u dezelfde configuratie wilt toepassen als Azure Synapse, gebruikt u de volgende eigenschappen of selecteert u Toevoegen uit .yml op het lint om het yaml-voorbeeldbestand te downloaden.

    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. Sla wijzigingen op en publiceer deze.

Optie 2: Configureren met Azure Key Vault

Notitie

Bekend probleem: kan een sessie niet starten met optie 2 voorlopig. Op dit moment voorkomt het opslaan van geheimen in Key Vault dat Spark-sessies worden gestart. Geef prioriteit aan het configureren ervan met behulp van de methode die wordt beschreven in optie 1.

U moet leesgeheimmachtigingen verlenen aan de gebruikers die Apache Spark-toepassingen verzenden. Zie Toegang bieden tot Key Vault-sleutels, -certificaten en -geheimen met een op rollen gebaseerd toegangsbeheer van Azure voor meer informatie.

Voer de volgende stappen uit om Azure Key Vault te configureren voor het opslaan van de werkruimtesleutel:

  1. Ga naar uw Key Vault in Azure Portal.

  2. Selecteer geheimen op de instellingenpagina voor de sleutelkluis en vervolgens Genereren/importeren.

  3. Voer in het scherm Een geheim maken de volgende waarden in:

    • Naam: Voer de naam in het voor het geheim. Voer voor de standaardwaarde het volgende in SparkLogAnalyticsSecret.
    • Waarde: Voer het <LOG_ANALYTICS_WORKSPACE_KEY> voor het geheim in.
    • Houd voor de overige waarden de standaardwaarden aan. Selecteer vervolgens Maken.
  4. Een Fabric Environment Artifact maken in Fabric

  5. Voeg de volgende Spark-eigenschappen toe met de bijbehorende waarden voor het omgevingsartefact of selecteer Toevoegen uit .yml op het lint in het omgevingsartefact om het yaml-voorbeeldbestand te downloaden dat de volgende Spark-eigenschappen bevat.

    • <LOG_ANALYTICS_WORKSPACE_ID>: de Log Analytics-werkruimte-id.
    • <AZURE_KEY_VAULT_NAME>: de naam van de sleutelkluis die u hebt geconfigureerd.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (optioneel): De geheime naam in de sleutelkluis voor de werkruimtesleutel. De standaardwaarde is 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.
    

    Als u dezelfde configuratie wilt toepassen als Azure Synapse, gebruikt u de volgende eigenschappen of selecteert u Toevoegen uit .yml op het lint om het yaml-voorbeeldbestand te downloaden.

    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.
    

    Notitie

    U kunt de werkruimte-id ook opslaan in Key Vault. Stel de geheime naam in op SparkLogAnalyticsWorkspaceIdof gebruik de configuratie spark.synapse.logAnalytics.keyVault.key.workspaceId om de geheime naam van de werkruimte-id op te geven.

    Zie Beschikbare Apache Spark-configuraties voor een lijst met Apache Spark-configuraties

  6. Sla wijzigingen op en publiceer deze.

Stap 3: koppel het omgevingsartefact aan notebooks of spark-taakdefinities, of stel het in als de standaardinstelling voor de werkruimte

De omgeving koppelen aan notebooks of Spark-taakdefinities:

  1. Navigeer naar uw notebook of Spark-taakdefinitie in Fabric.
  2. Selecteer het menu Omgeving op het tabblad Start en selecteer de geconfigureerde omgeving.
  3. De configuratie wordt toegepast na het starten van een Spark-sessie.

De omgeving instellen als de standaardinstelling voor de werkruimte:

  1. Navigeer naar werkruimte-instellingen in Fabric.
  2. Zoek de Spark-instellingen in uw werkruimte-instellingen (werkruimte-instelling -> Data-engineer/Wetenschap -> Spark-instellingen)
  3. Selecteer het tabblad Omgeving en kies de omgeving met diagnostische spark-eigenschappen die zijn geconfigureerd en klik op Opslaan.

Notitie

Alleen werkruimtebeheerders kunnen configuraties beheren. De waarden zijn van toepassing op notebooks en Spark-taakdefinities die zijn gekoppeld aan werkruimte-instellingen. Zie Instellingen voor infrastructuurwerkruimten voor meer informatie.

Een Apache Spark-toepassing verzenden en de logboeken en metrische gegevens weergeven

Een Apache Spark-toepassing verzenden:

  1. Dien een Apache Spark-toepassing in met de bijbehorende omgeving, die in de vorige stap is geconfigureerd. U kunt dit op een van de volgende manieren doen:

    • Voer een notebook uit in Fabric.
    • Dien een Apache Spark-batchtaak in via een Apache Spark-taakdefinitie.
    • Voer uw Spark-activiteiten uit in uw pijplijnen.
  2. Ga naar de opgegeven Log Analytics-werkruimte en bekijk vervolgens de metrische gegevens en logboeken van de toepassing wanneer de Apache Spark-toepassing wordt uitgevoerd.

Aangepaste toepassingslogboeken schrijven

U kunt de Apache Log4j-bibliotheek gebruiken om aangepaste logboeken te schrijven. Hier volgen voorbeelden voor Scala en PySpark:

Scala-voorbeeld:

%%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-voorbeeld:

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

Query's uitvoeren op gegevens met Kusto

Apache Spark-gebeurtenissen opvragen:

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

Ga als volgende te werk om query's uit te voeren op het stuurprogramma en uitvoerprogramma van Spark:

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

Metrische gegevens van Apache Spark opvragen:

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

Gegevenslimieten

Fabric verzendt logboekgegevens naar Azure Monitor met behulp van de HTTP Data Collector-API. De gegevens die zijn gepost in de Azure Monitor-gegevensverzamelings-API, zijn onderhevig aan bepaalde beperkingen:

  • Maximaal 30 MB per post naar de Azure Monitor Data Collector-API. Dit is een groottelimiet voor één bericht. Als de gegevens uit één post groter zijn dan 30 MB, moet u de gegevens opsplitsen in kleinere segmenten en ze gelijktijdig verzenden.
  • Maximum van 32 kB voor veldwaarden. Als de veldwaarde groter is dan 32 kB, worden de gegevens afgekapt.
  • Aanbevolen maximum van 50 velden voor een bepaald type. Dit is een praktische limiet vanuit het oogpunt van bruikbaarheid en zoekervaring.
  • Tabellen in Log Analytics-werkruimten ondersteunen slechts 500 kolommen.
  • Maximaal 45 tekens voor kolomnamen.

Waarschuwingen maken en beheren

Gebruikers kunnen query's uitvoeren om metrische gegevens en logboeken te evalueren op basis van een ingestelde frequentie en een waarschuwing activeren op basis van de resultaten. Zie Logboekwaarschuwingen maken, weergeven en beheren met behulp van Azure Monitor voor meer informatie.

Fabric-werkruimten met beheerd virtueel netwerk

Azure Log Analytics kan momenteel niet worden geselecteerd als bestemming voor Spark-logboeken en metrische gegevens in een beheerd virtueel netwerk, omdat het beheerde privé-eindpunt geen ondersteuning biedt voor Log Analytics als gegevensbron.

Volgende stappen