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.

    • <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 Azure Log Analytics -työtila-agenttien>>perusavain.
    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.
    

    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

Tunnettu ongelma: Istunnon käynnistäminen ei onnistu tilapäisesti vaihtoehdolla 2. Tällä hetkellä salaisten koodien tallentaminen Key Vaultiin estää Spark-istuntojen käynnistymisen. Priorisoi sen määrittäminen vaihtoehdossa 1 kuvatulla tavalla.

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.

    • <LOG_ANALYTICS_WORKSPACE_ID>: Log Analytics -työtilan tunnus.
    • <AZURE_KEY_VAULT_NAME>: Määrittämäsi Key Vaultin nimi.
    • <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 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.
    

    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_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.
    

    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.

    Luettelo Apache Spark -kokoonpanoista on kohdassa Käytettävissä olevat Apache Spark -määritykset

  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

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.

Huomautus

Vain työtilan järjestelmänvalvojat voivat hallita määrityksiä. Arvot koskevat muistikirjoja ja Spark-työmäärityksiä, jotka liitetään työtilan asetuksiin. Lisätietoja on kohdassa Fabric-työtilan asetukset.

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

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ä.

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ä.

Seuraavat vaiheet