Jaa


Apache Spark -sovellusten valvonta Azure-lokianalytiikalla (esikatselu)

Fabric Apache Sparkin diagnostiikan emitter-laajennus on kirjasto, jonka avulla Apache Spark -sovellukset voivat lähettää lokeja, tapahtumalokeja ja mittareita useisiin kohteisiin, kuten Azuren lokianalytiikkaan, Azure-tallennustilaan ja Azure-tapahtumatoimintoihin.

Tässä opetusohjelmassa opit määrittämään Spark-lokit ja -mittarit ja käyttämään niitä Log Analytics -toiminnossa Fabricissa. Kun määritys on valmis, voit kerätä ja analysoida Apache Spark -sovelluksen mittareita ja lokeja Log Analytics -työtilassa.

Määritä työtilan tiedot

Määritä tarvittavat tiedot Fabricissa seuraavasti.

Vaihe 1: Log Analytics -työtilan luominen

Luo tämä työtila jollakin seuraavista resursseista:

Vaihe 2: Fabric-ympäristön artefaktin luominen Apache Spark -määrityksen avulla

Voit määrittää Sparkin luomalla Fabric-ympäristön artefaktin ja valitsemalla jonkin seuraavista vaihtoehdoista:

Vaihtoehto 1: Määritä Log Analytics -työtilan tunnuksella ja avaimella

  1. Fabric-ympäristön artefaktin luominen Fabricissa

  2. Lisää seuraavat Spark-ominaisuudet sopivilla arvoilla ympäristön artefaktiin tai valitse valintanauhan .yml ja lataa yaml-mallitiedosto, joka sisältää jo tarvittavat ominaisuudet.

    • <EMITTER_NAME>: Mittarin nimi.
    • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics -työtilan tunnus.
    • <LOG_ANALYTICS_WORKSPACE_KEY>: Log Analytics -avain. Löydät tämän Azure-portaali kohdasta >>
    spark.synapse.diagnostic.emitters: <EMITTER_NAME>
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type: "AzureLogAnalytics"
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret: <LOG_ANALYTICS_WORKSPACE_KEY>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Vaihtoehtoisesti voit käyttää samoja määrityksiä kuin Azure Synapse käyttämällä seuraavia ominaisuuksia tai valitsemalla valintanauhasta Lisää .yml ja lataa yaml-mallitiedosto.

    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. Tallenna ja julkaise muutoksia.

Vaihtoehto 2: Määrittäminen Azure Key Vaultin avulla

Huomautus

Sinun on myönnettävä lukusalaisuuden käyttöoikeus käyttäjille, jotka lähettävät Apache Spark -sovelluksia. Katso lisätietoja artikkelista Key Vaultin avainten, varmenteiden ja salaisten koodien käyttö Azuren roolipohjaisella käytön hallinnalla.

Jos haluat määrittää Azure Key Vaultin tallentamaan työtilan avaimen, toimi seuraavasti:

  1. Siirry Key Vaultiin Azure-portaali.

  2. Valitse avainsäilön asetussivulla Secrets ja sitten Luo/Tuo.

  3. Anna Luo salainen koodi -näytössä seuraavat arvot:

    • Nimi: Anna salaisen koodin nimi. Anna oletusasennuksille SparkLogAnalyticsSecret.
    • Arvo: Anna <LOG_ANALYTICS_WORKSPACE_KEY> salaiselle kohteelle -arvo.
    • Jätä muut arvot oletusarvoihin. Valitse sitten Luo.
  4. Fabric-ympäristön artefaktin luominen Fabricissa

  5. Lisää seuraavat Spark-ominaisuudet , jotka sisältävät vastaavat arvot ympäristön artefaktille, tai valitse Lisää .yml Ympäristö-artefaktin valintanauhasta ladataksesi yaml-mallitiedoston , joka sisältää seuraavat Spark-ominaisuudet.

    • <EMITTER_NAME>: Mittarin nimi.
    • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics -työtilan tunnus.
    • <AZURE_KEY_VAULT_URI>: Määrittämäsi Key Vaultin URI.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (valinnainen): Tämä on työtilan avaimen avainsäilössä oleva salaisen koodin nimi. Oletusarvo on SparkLogAnalyticsSecret.
    // Spark properties for EMITTER_NAME
    spark.synapse.diagnostic.emitters <EMITTER_NAME>
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type: "AzureLogAnalytics"
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret.keyVault: <AZURE_KEY_VAULT_URI>
    spark.synapse.diagnostic.emitter.<EMITTER_NAME>.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Vaihtoehtoisesti voit käyttää samoja määrityksiä kuin Azure Synapse, käytä seuraavia ominaisuuksia tai lataa yaml-mallitiedosto valitsemalla valintanauhan .yml Lisää.

    spark.synapse.logAnalytics.enabled: "true"
    spark.synapse.logAnalytics.workspaceId: <LOG_ANALYTICS_WORKSPACE_ID>
    spark.synapse.logAnalytics.keyVault.name: <AZURE_KEY_VAULT_URI>
    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.
    

    Huomautus

    Voit myös tallentaa työtilan tunnuksen Key Vaultiin. Määritä salaisen koodin nimeksi SparkLogAnalyticsWorkspaceIdtai määritä työtilan tunnuksen salasanan nimi -määrityksen spark.synapse.logAnalytics.keyVault.key.workspaceId avulla.

  6. Tallenna ja julkaise muutoksia.

Vaihe 3: Liitä ympäristön artefakti muistikirjoihin tai spark-työn määritelmiin tai määritä se työtilan oletusasetukseksi

Huomautus

Vain työtilan järjestelmänvalvojat voivat määrittää ympäristön työtilan oletusasetukseksi.

Kun se on asetettu, siitä tulee oletusympäristö kaikille muistikirjoille ja Spark-työmäärityksiä työtilassa. Lisätietoja on kohdassa Fabric-työtilan asetukset.

Ympäristön liittäminen muistikirjoihin tai Spark-työmäärityksiä varten:

  1. Siirry muistikirjaasi tai Spark-työn määritelmään Fabricissa.
  2. Valitse Ympäristö-valikko Aloitus-välilehdestä ja valitse määritetty ympäristö.
  3. Määritystä käytetään Spark-istunnon aloittamisen jälkeen.

Ympäristön määrittäminen työtilan oletusasetukseksi:

  1. Valitse Työtilan asetukset Fabricissa.
  2. Etsi Spark-asetukset työtilan asetuksista (työtilan asetus –> Tietotekniikka/tiede –> Spark-asetukset)
  3. Valitse Ympäristö-välilehti , valitse ympäristö, jossa on määritetty diagnostiikan spark-ominaisuudet, ja valitse Tallenna.

Lähetä Apache Spark -sovellus ja tarkastele lokeja ja mittareita

Apache Spark -sovelluksen lähettäminen:

  1. Lähetä Apache Spark -sovellus siihen liittyvän ympäristön kanssa, joka määritettiin edellisessä vaiheessa. Voit tehdä sen seuraavilla tavoilla:

    • Suorita muistikirja Fabricissa.
    • Lähetä Apache Spark -erätyö Apache Spark -työmäärityksen kautta.
    • Suorita Spark-aktiviteetit jaksoissa.
  2. Siirry määritettyyn Log Analytics -työtilaan ja tarkastele sitten sovelluksen mittareita ja lokeja, kun Apache Spark -sovellus käynnistyy.

Mukautettujen sovelluslokien kirjoittaminen

Voit käyttää Apache Log4j -kirjastoa mukautettujen lokien kirjoittamiseen. Tässä on esimerkkejä Scalasta ja PySparkista:

Skalaa esimerkki:

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

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

Tietojen kyseleminen Kustolla

Kyselyn tekeminen Apache Spark -tapahtumista:

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

Kyselyn tekeminen Spark-sovellusohjaimen ja -suoritustiedoston lokeista:

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

Kyselyn tekeminen Apache Spark -mittareista:

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

Hälytysten luominen ja hallinta

Käyttäjät voivat tehdä kyselyn arvioidakseen mittareita ja lokeja määritetyllä tiheydellä ja ampuakseen ilmoituksen tulosten perusteella. Lisätietoja on artikkelissa Lokiilmoitusten luominen, tarkasteleminen ja hallinta Azure Monitorin avulla.

Fabric-työtilat ja hallittu näennäisverkko

Azure Log Analytics -kohdetta ei tällä hetkellä voi valita Spark-lokien ja mittarien päästöjen kohdesijainniksi hallitussa näennäisverkossa, koska hallittu yksityinen päätepiste ei tue Log Analytics -funktiota tietolähteenä.

Käytettävissä olevat Apache Spark -määritykset

Log Analytics -tietojen määrittäminen spark.synaspe.diagnostic.emitter.* etuliitteen avulla.

Määritys Kuvaus
spark.synapse.diagnostic.emitters Pakollinen. Diagnostiikan päästöjen pilkuin erotellut kohdenimet. Esimerkiksi MyDest1,MyDest2.
spark.synapse.diagnostic.emitter.<destination>.type Pakollinen. Sisäinen kohdetyyppi. Azure Log Analytics -kohteen ottamiseksi käyttöön AzureLogAnalytics on sisällytettävä tähän kenttään.
spark.synapse.diagnostic.emitter.<destination>.categories Valinnainen. Pilkuin erotellut valitut lokiluokat. Käytettävissä olevat arvot ovat Log, EventLog, Metrics. Jos sitä ei ole määritetty, oletusarvo on kaikki luokat.
spark.synapse.diagnostic.emitter.<destination>.workspaceId Pakollinen. Kohdesijainti Log Analytics -työtilan tunnus.
spark.synapse.diagnostic.emitter.<destination>.secret Valinnainen. Työtilan salainen sisältö.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Pakollinen, jos .secret ei ole määritetty. Azure Key Vaultin URI:n, johon salaisuus on tallennettu.
park.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Pakollinen, jos .secret.keyVault on määritetty. Tämä on Azure Key Vaultin salainen nimi, johon la-työtilan salasana on tallennettu.
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Valinnainen. Pilkuin eroteltujen spark-tapahtumien nimien avulla voit määrittää, mitä tapahtumia kerätään. Esimerkki: SparkListenerApplicationStart,SparkListenerApplicationEnd.
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Valinnainen. Pilkuin eroteltujen log4j-lokikirjaajien nimien avulla voit määrittää, mitä lokeja kerätään. Esimerkki: org.apache.spark.SparkContext,org.example.Logger.
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Valinnainen. Pilkuin eroteltujen spark-mittarin nimien jälkiliitteiden avulla voit määrittää kerättävät mittarit. Esimerkki: jvm.heap.used.
spark.fabric.pools.skipStarterPools Pakollinen. Tätä Spark-ominaisuutta käytetään pyydettäessä suoritettavan Spark-istunnon pakottamiseen. Määritä arvoksi true , kun käytät oletusvarantoa, jotta kirjastot käynnistyvät ja jotta lokit ja mittarit käynnistyvät.

Log Analytics -tietojen määrittäminen spark.synapse.logAnalytics.* etuliitteen avulla.

Konfiguraation nimi Default value Kuvaus
spark.synapse.logAnalytics.enabled false Jos haluat ottaa Log Analytics -nielun käyttöön Spark-sovelluksille, true. Muussa tapauksessa arvo on epätosi.
spark.synapse.logAnalytics.workspaceId - Kohdesijainti Log Analytics -työtilan tunnus.
spark.synapse.logAnalytics.secret - Kohdesijainti Log Analytics -työtilasalaisuus.
spark.synapse.logAnalytics.keyVault.name - Log Analytics -tunnuksen ja avaimen Key Vaultin URI-osoite.
spark.synapse.logAnalytics.keyVault.key.workspaceId SparkLogAnalyticsWorkspaceId Log Analytics -työtilatunnuksen salainen Key Vault -nimi.
spark.synapse.logAnalytics.keyVault.key.secret SparkLogAnalyticsSecret Log Analytics -työtilan Key Vaultin salaisen koodin nimi.
spark.synapse.logAnalytics.uriSuffix ods.opinsights.azure.com Kohdesijainti Log Analytics -työtila URI-jälkiliitettä. Jos työtilasi ei ole Azuren yleisessä käytössä, sinun on päivitettävä URI-jälkiliite vastaavan pilvipalvelun mukaan.
spark.synapse.logAnalytics.filter.eventName.match - Valinnainen. Pilkuin eroteltujen spark-tapahtumien nimien avulla voit määrittää, mitä tapahtumia kerätään. Esimerkki: SparkListenerJobStart,SparkListenerJobEnd.
spark.synapse.logAnalytics.filter.loggerName.match - Valinnainen. Pilkuin eroteltujen log4j-lokikirjaajien nimien avulla voit määrittää, mitä lokeja kerätään. Esimerkki: org.apache.spark.SparkContext,org.example.Logger.
spark.synapse.logAnalytics.filter.metricName.match - Valinnainen. Pilkuin eroteltujen spark-mittarin nimien jälkiliitteiden avulla voit määrittää kerättävät mittarit. Esimerkki: jvm.heap.used.
spark.fabric.pools.skipStarterPools tosi Pakollinen. Tätä Spark-ominaisuutta käytetään pyydettäessä suoritettavan Spark-istunnon pakottamiseen.

Huomautus

  • 21Vianetin operoiman Microsoft Azuren spark.synapse.logAnalytics.uriSuffix tulee be ods.opinsights.azure.cn.
  • Azure Governmentin spark.synapse.logAnalytics.uriSuffix-parametrin tulee olla ods.opinsights.azure.us.
  • Missä tahansa pilvipalvelussa Azurea lukuun ottamatta spark.synapse.logAnalytics.keyVault.name parametrin tulee olla Key Vaultin täydellinen toimialuenimi (FQDN). Esimerkiksi AZURE_KEY_VAULT_NAME.vault.usgovcloudapi.net sovellukselle AzureUS Kunta.

Usein kysytyt kysymykset

  1. Miksi Log Analytics ei saa lokeja tai luo Asiakas-taulukkoa?

    Jos Log Analytics -työtilasi ei vastaanota lokeja tai Asiakas-taulukkoa ei luoda, suorita vianmääritys seuraavasti:

    1. Vahvista lokianalyysin määritys -: Varmista, että Log Analytics -työtilan tiedot on määritetty oikein Spark-sovelluksessasi. Voit tarkistaa määritykset siirtymällä Spark-käyttöliittymään tai Spark History Serveriin, siirtymällä Ympäristö-välilehteen ja tarkistamalla asetukset Spark-ominaisuudet-kohdassa.

    2. Tarkista käyttöoikeudet -:

      • Vahvista, että Log Analyticsilla on tarvittavat kirjoitusoikeudet.
      • Jos KeyVault on mukana, varmista, että KeyVault-lukuoikeudet on määritetty oikein asianomaiselle palvelulle tai käyttäjälle.
    3. tarkastaa tietorajoitukset: Fabric lähettää lokitiedot Azure Monitoriin HTTP Data Collector -ohjelmointirajapinnan avulla. Azure Monitor Data Collection -ohjelmointirajapintaan lähetettyjä tietoja koskevat tietyt rajoitukset:

      • Enintään 30 Mt julkaisua kohden Azure Monitor Data Collector -ohjelmointirajapintaan. Tämä on yksittäisen julkaisun kokorajoitus. Jos yksittäisen julkaisun tiedot ylittävät 30 Mt, tiedot tulee jakaa pienempiin paloihin ja lähettää samanaikaisesti.
      • Enintään 32 kt kenttien arvoille. Jos kentän arvo on suurempi kuin 32 kt, tiedot katkaistaan.
      • Suositeltava enintään 50 kenttää annetulle tyypille. Tämä on käytännöllinen raja käytettävyyden ja hakukokemuksen näkökulmasta.
      • Log Analytics -työtilojen taulukot tukevat vain enintään 500 saraketta.
      • Enintään 45 merkkiä sarakkeiden nimissä.
  2. Miten voin vahvistaa, että Log Analytics -käyttöoikeudet on määritetty oikein?

    Varmista, että Log Analytics voi vastaanottaa lokeja, varmista seuraavat käyttöoikeudet:

    1. Log Analyticsin kirjoitusoikeudet:

      • Kirjaudu sisään Azure-portaaliin ja siirry Log Analytics -työtilaan.
      • Vahvista Käyttöoikeuksien valvonta (IAM) -osiossa, että käyttäjälle, palvelun päänimelle tai sovellukselle on määritetty "Log Analytics Contributor" tai "Contributor"-rooli.
    2. KeyVaultin lukuoikeudet (jos sovellettavissa):

      • Jos lokeihin liittyy KeyVault, siirry KeyVaultin Käyttöoikeuskäytännöt- tai Käyttöoikeuksien valvonta (IAM) -osaan.
      • Varmista, että kyseisellä käyttäjällä tai palvelun päänimellä on lukuoikeudet, kuten Key Vault Reader -rooli. Jos käyttöoikeudet on määritetty virheellisesti, ota yhteyttä Azuren järjestelmänvalvojaan roolimääritysten muokkaamiseksi ja odota käyttöoikeuksien synkronointia (tämä voi kestää muutamia minuutteja).
  3. Miksi Spark-istunnon käynnistäminen hidastuu, kun nämä spark-ominaisuudet on määritetty?

    Tämä johtuu siitä, että olet määrittänyt spark.fabric.pools.skipStarterPool: true, joka ohittaa Starter Poolin (eräänlainen live-pool) ja käyttää sen sijaan pyydettäessä suoritettavaa varantoa Spark-istunnon aloittamiseen. Spark-istunnon aloittaminen pyydettäessä -varannossa kestää yleensä noin 3 minuuttia.

    Syynä on se, että diagnostiikkakirjasto edellyttää tiettyjen määritysten käyttöönottoa Spark-istunnon käynnistyksen yhteydessä. Tätä prosessia tukevat vain pyydettäessä suoritettavat varannot, sillä ne luodaan dynaamisesti käynnistyksen aikana. Sitä vastoin reaaliaikaisen varannon istunnot on esi aloitettu, eivätkä ne voi käyttää näitä määrityksiä alustuksen aikana. Saat lisätietoja Fabric Spark -käsittelystä artikkelista Apache Spark compute for Data Engineering and Data Science.

Seuraavat vaiheet