Sdílet prostřednictvím


Shromažďování protokolů a metrik aplikací Apache Spark pomocí účtu úložiště Azure (Preview)

Rozšíření diagnostického emitoru Apache Sparku infrastruktury je knihovna, která umožňuje aplikacím Apache Sparku generovat protokoly, protokoly událostí a metriky do několika cílů, včetně Azure Log Analytics, Azure Storage a Azure Event Hubs.

V tomto kurzu se dozvíte, jak pomocí rozšíření diagnostického emitoru Apache Sparku fabric odesílat protokoly aplikací Apache Spark, protokoly událostí a metriky do vašeho účtu Azure Storage.

Shromažďování protokolů a metrik do účtu úložiště

Krok 1: Vytvoření účtu úložiště

Ke shromažďování diagnostických protokolů a metrik můžete použít existující účet Azure Storage. Pokud ho nemáte, můžete si vytvořit účet úložiště objektů blob v Azure nebo vytvořit účet úložiště, který se použije s Azure Data Lake Storage Gen2.

Krok 2: Vytvoření artefaktu prostředí infrastruktury s konfigurací Apache Sparku

Možnost 1: Konfigurace s identifikátorem URI služby Azure Storage a přístupovým klíčem

  1. Vytvoření artefaktu prostředí infrastruktury v prostředcích infrastruktury

  2. Přidejte následující vlastnosti Sparku s příslušnými hodnotami do artefaktu prostředí nebo vyberte Přidat z .yml na pásu karet stáhněte ukázkový soubor yaml, který již obsahuje následující vlastnosti.

    spark.synapse.diagnostic.emitters: MyStorageBlob
    spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage"
    spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyStorageBlob.uri:  "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>"
    spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey"
    spark.synapse.diagnostic.emitter.MyStorageBlob.secret: <storage-access-key>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Do konfiguračního souboru zadejte následující parametry: <my-blob-storage>, <container-name>, <folder-name>, <storage-access-key>. Další podrobnosti o těchto parametrech najdete v tématu Konfigurace služby Azure Storage.

Možnost 2: Konfigurace se službou Azure Key Vault

Poznámka:

Známý problém: Nelze spustit relaci pomocí možnosti 2 prozatímně. Ukládání tajných kódů ve službě Key Vault v současné době brání spuštění relací Sparku. Určete prioritu konfigurace pomocí metody popsané v možnosti 1.

Ujistěte se, že uživatelům, kteří odesílají aplikace Apache Spark, mají udělená oprávnění ke čtení tajných kódů. Další informace najdete v tématu Poskytnutí přístupu ke klíčům, certifikátům a tajným kódům služby Key Vault pomocí řízení přístupu na základě role v Azure.

Konfigurace služby Azure Key Vault pro ukládání klíče pracovního prostoru:

  1. Vytvořte trezor klíčů na webu Azure Portal a přejděte do trezoru klíčů.

  2. Na stránce nastavení trezoru klíčů vyberte Tajné kódy a pak vygenerovat/importovat.

  3. Na obrazovce Vytvoření tajného kódu zvolte následující hodnoty:

    • Název: Zadejte název tajného kódu.
    • Hodnota: Zadejte <storage-access-key> tajný kód.
    • U ostatních hodnot ponechte jejich výchozí nastavení. Pak vyberte Vytvořit.
  4. Vytvořte artefakt prostředí infrastruktury v prostředcích infrastruktury.

  5. Přidejte následující vlastnosti Sparku. Nebo vyberte Přidat z .yml na pásu karet a nahrajte ukázkový soubor yaml, který obsahuje následující vlastnosti Sparku.

    spark.synapse.diagnostic.emitters: <MyStorageBlob>
    spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage"
    spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyStorageBlob.uri:  "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>"
    spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey"
    spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Do konfiguračního souboru zadejte následující parametry: <my-blob-storage>, <container-name>, <folder-name>, <AZURE_KEY_VAULT_NAME>, . <AZURE_KEY_VAULT_SECRET_KEY_NAME> Další podrobnosti o těchto parametrech najdete v tématu Konfigurace služby Azure Storage.

  6. Uložte a publikujte změny.

Krok 3: Připojení artefaktu prostředí k poznámkovému bloku nebo definicím úloh Sparku nebo jeho nastavení jako výchozího pracovního prostoru

Připojení prostředí k definicím úloh Poznámkové bloky nebo Sparku:

  1. Přejděte do konkrétního poznámkového bloku nebo definice úlohy Sparku v prostředcích infrastruktury.
  2. Na kartě Domů vyberte nabídku Prostředí a vyberte prostředí s nakonfigurovanými vlastnostmi Sparku diagnostiky.
  3. Konfigurace se použije při spuštění relace Sparku.

Nastavení prostředí jako výchozího pracovního prostoru:

  1. Přejděte do nastavení pracovního prostoru v prostředcích infrastruktury.
  2. Najděte nastavení Sparku v nastavení pracovního prostoru (nastavení pracovního prostoru –> Datoví technici/Věda –> Nastavení Sparku).
  3. Vyberte kartu Prostředí a zvolte prostředí s nakonfigurovanými vlastnostmi sparku diagnostiky a klikněte na Uložit.

Poznámka:

Konfigurace pracovních prostorů můžou spravovat jenom správci pracovního prostoru. Změny provedené zde budou platit pro všechny poznámkové bloky a definice úloh Sparku připojené k nastavení pracovního prostoru. Další informace najdete v tématu Nastavení pracovního prostoru infrastruktury.

Krok 4: Zobrazení souborů protokolů v účtu úložiště Azure

Po odeslání úlohy do nakonfigurované relace Sparku můžete zobrazit protokoly a soubory metrik v cílovém účtu úložiště. Protokoly jsou uloženy v odpovídajících cestách na základě různých aplikací identifikovaných .<workspaceId>.<fabricLivyId> Všechny soubory protokolu jsou ve formátu JSON Lines (označované také jako JSON s oddělovači newline nebo ndjson), což je vhodné pro zpracování dat.

Dostupné konfigurace

Konfigurace Popis
spark.synapse.diagnostic.emitters Požadováno. Cílové názvy diagnostických emitorů oddělené čárkami. Například MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Požadováno. Předdefinovaný cílový typ Pokud chcete povolit cíl úložiště Azure, AzureStorage musí být zahrnut do tohoto pole.
spark.synapse.diagnostic.emitter.<destination>.categories Nepovinné. Vybrané kategorie protokolu oddělené čárkami. Mezi dostupné hodnoty patří DriverLog, ExecutorLog, EventLog, Metrics. Pokud není nastavená, výchozí hodnota je všechny kategorie.
spark.synapse.diagnostic.emitter.<destination>.auth Požadováno. AccessKeypro použití autorizace přístupového klíče účtu úložiště. SAS pro autorizaci sdílených přístupových podpisů .
spark.synapse.diagnostic.emitter.<destination>.uri Požadováno. Identifikátor URI cílové složky kontejneru objektů blob. Měl by se shodovat se vzorem https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Nepovinné. Tajný kód (AccessKey nebo SAS) obsah.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Povinné, pokud .secret není zadáno. Název trezoru klíčů Azure, ve kterém je uložený tajný klíč (AccessKey nebo SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Vyžaduje se, pokud .secret.keyVault je zadáno. Název tajného kódu služby Azure Key Vault, ve kterém je uložený tajný klíč (AccessKey nebo SAS).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Nepovinné. Názvy událostí Spark oddělených čárkami můžete určit, které události se mají shromažďovat. Příklad: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Nepovinné. Názvy protokolovacího nástroje oddělené čárkami, můžete určit, které protokoly se mají shromažďovat. Příklad: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Nepovinné. Přípony názvů sparkových metrik oddělených čárkami můžete určit, které metriky se mají shromažďovat. Příklad: jvm.heap.used
spark.fabric.pools.skipStarterPools Požadováno. Tato vlastnost Sparku se používá k vynucení relace Sparku na vyžádání. Hodnotu True byste měli nastavit při použití výchozího fondu, aby se knihovny aktivovaly pro generování protokolů a metrik.

Ukázka dat protokolu

Tady je ukázkový záznam protokolu ve formátu JSON:

{
  "timestamp": "2024-09-06T03:09:37.235Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "fabricTenantId": "<my-fabric-tenant-id>",
  "capacityId": "<my-fabric-capacity-id>",
  "artifactType": "SynapseNotebook|SparkJobDefinition",
  "artifactId": "<my-fabric-artifact-id>",
  "fabricWorkspaceId": "<my-fabric-workspace-id>",
  "fabricEnvId": "<my-fabric-environment-id>",
  "executorMin": "<executor-min>",
  "executorMax": "<executor-max>",
  "isHighConcurrencyEnabled": "true|false",
  "properties": {
    // The message properties of logs, events and metrics.
    "timestamp": "2024-09-06T03:09:37.235Z",
    "message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
    "logger_name": "org.apache.spark.storage.BlockManager",
    "level": "INFO",
    "thread_name": "dispatcher-Executor"
    //...
  }
}

Pracovní prostory infrastruktury se spravovanou virtuální sítí

Vytvořte spravovaný privátní koncový bod pro cílovou službu Azure Blob Storage. Podrobné pokyny najdete v tématu Vytvoření a použití spravovaných privátních koncových bodů v Microsoft Fabric – Microsoft Fabric.

Po schválení spravovaného privátního koncového bodu můžou uživatelé začít generovat protokoly a metriky do cílové služby Azure Blob Storage.

Další kroky