Udostępnij za pośrednictwem


Zbieranie dzienników i metryk aplikacji platformy Apache Spark przy użyciu konta usługi Azure Storage (wersja zapoznawcza)

Rozszerzenie emitera diagnostycznego Apache Spark to biblioteka umożliwiająca aplikacjom Apache Spark przesyłanie dzienników, dzienników zdarzeń i metryk do wielu miejsc docelowych, w tym Azure Log Analytics, Azure Storage i Azure Event Hubs.

Z tego samouczka dowiesz się, jak korzystać z rozszerzenia diagnostycznego emisji Fabric Apache Spark, aby wysyłać dzienniki aplikacji, dzienniki zdarzeń i metryki platformy Apache Spark do konta usługi Azure Storage.

Zbieranie dzienników i metryk do konta magazynu

Krok 1. Tworzenie konta magazynu

Aby zebrać dzienniki diagnostyczne i metryki, możesz użyć istniejącego konta usługi Azure Storage. Jeśli go nie masz, możesz utworzyć konto magazynu Azure Blob Storage lub utworzyć konto magazynu do użycia z usługą Azure Data Lake Storage Gen2.

Krok 2. Utwórz artefakt środowiska Fabric przy użyciu konfiguracji Apache Spark

Opcja 1. Konfigurowanie przy użyciu identyfikatora URI usługi Azure Storage i klucza dostępu

  1. Tworzenie artefaktu środowiska sieci szkieletowej w sieci szkieletowej

  2. Dodaj następujące właściwości Spark z odpowiednimi wartościami do artefaktu środowiska lub wybierz opcję Dodaj z pliku .yml na pasku wstążki, aby pobrać przykładowy plik yaml, który już zawiera następujące właściwości.

    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.
    

    Wypełnij następujące parametry w pliku konfiguracji: <my-blob-storage>, <container-name>, <folder-name>, <storage-access-key>. Aby uzyskać więcej informacji na temat tych parametrów, zobacz Konfiguracje usługi Azure Storage.

Opcja 2. Konfigurowanie przy użyciu usługi Azure Key Vault

Uwaga

Upewnij się, że użytkownicy przesyłający aplikacje Apache Spark mają przyznane uprawnienia do odczytu tajnych danych. Aby uzyskać więcej informacji, zobacz Zapewnianie dostępu do kluczy, certyfikatów i wpisów tajnych usługi Key Vault za pomocą kontroli dostępu opartej na rolach platformy Azure.

Aby skonfigurować usługę Azure Key Vault do przechowywania klucza obszaru roboczego:

  1. Utwórz magazyn kluczy i przejdź do niego w portalu Azure.

  2. Na stronie ustawień magazynu kluczy wybierz pozycję Sekrety, a następnie Generuj/Importuj.

  3. Na ekranie Tworzenie wpisu tajnego wybierz następujące wartości:

    • Nazwa: Wprowadź nazwę tajemnicy.
    • Wartość: wprowadź <storage-access-key> dla tajnego.
    • Dla pozostałych opcji zostaw wartości domyślne. Następnie wybierz Utwórz.
  4. Utwórz artefakt środowiska w Fabric.

  5. Dodaj następujące właściwości platformy Spark. Możesz też wybrać pozycję Dodaj z .yml na wstążce, aby przekazać przykładowy plik yaml zawierający następujące właściwości Spark.

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

    Wypełnij następujące parametry w pliku konfiguracji: <my-blob-storage>, , <container-name><folder-name>, <AZURE_KEY_VAULT_URI>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Aby uzyskać więcej informacji na temat tych parametrów, zobacz Konfiguracje usługi Azure Storage.

  6. Zapisz i opublikuj zmiany.

Krok 3. Dołączanie artefaktu środowiska do notesów lub definicji zadań platformy Spark lub ustawianie go jako domyślnego obszaru roboczego

Uwaga

Tylko administratorzy obszaru roboczego mogą wyznaczyć środowisko jako domyślne dla obszaru roboczego.

Po ustawieniu staje się ono domyślnym środowiskiem dla wszystkich notesów i definicji zadań platformy Spark w obszarze roboczym. Aby uzyskać więcej informacji, zobacz Ustawienia przestrzeni roboczej Fabric.

Aby dołączyć środowisko do notesów lub definicji zadań Spark:

  1. Przejdź do określonego notesu lub definicji zadania Spark na platformie Fabric.
  2. Wybierz menu Środowisko na karcie Narzędzia główne i wybierz środowisko ze skonfigurowanymi właściwościami diagnostyki Spark.
  3. Konfiguracja jest stosowana podczas uruchamiania sesji Spark.

Aby ustawić środowisko jako domyślne dla przestrzeni roboczej:

  1. Przejdź do ustawień przestrzeni roboczej w Fabric.
  2. Znajdź ustawienia Spark w ustawieniach Twojego środowiska pracy (Ustawienia środowiska pracy -> Inżynieria/Dane naukowe -> ustawienia Spark).
  3. Wybierz zakładkę Środowisko, a następnie wybierz środowisko, w którym skonfigurowano właściwości diagnostyczne dla platformy Spark, i kliknij Zapisz.

Krok 4. Wyświetlanie plików dzienników na koncie usługi Azure Storage

Po przesłaniu zadania do skonfigurowanej sesji Spark możesz wyświetlić dzienniki i pliki metryk na docelowym koncie magazynowym. Dzienniki są przechowywane w odpowiednich ścieżkach dla różnych aplikacji zidentyfikowanych przez <workspaceId>.<fabricLivyId>. Wszystkie pliki dziennika są w formacie JSON Lines (znanym również jako newline-delimited JSON lub ndjson), który jest wygodny w przetwarzaniu danych.

Dostępne konfiguracje

Konfigurowanie opis
spark.synapse.diagnostic.emitters Wymagane. Rozdzielane przecinkami nazwy docelowe emiterów diagnostycznych. Na przykład MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Wymagane. Wbudowany typ celu. Aby włączyć miejsce docelowe usługi Azure Storage, AzureStorage należy uwzględnić je w tym polu.
spark.synapse.diagnostic.emitter.<destination>.categories Opcjonalny. Kategorie dzienników wybrane i rozdzielone przecinkami. Dostępne wartości obejmują DriverLog, , ExecutorLogEventLog, Metrics. Jeśli nie zostanie ustawiona, wartość domyślna to wszystkie kategorie.
spark.synapse.diagnostic.emitter.<destination>.auth Wymagane. AccessKeydo korzystania z autoryzacji przy użyciu klucza dostępu do konta magazynu. SAS w przypadku autoryzacji współdzielonych sygnatur dostępu.
spark.synapse.diagnostic.emitter.<destination>.uri Wymagane. Identyfikator URI docelowego folderu kontenera blob. Powinien być zgodny ze wzorcem https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Opcjonalny. Zawartość tajnego klucza (AccessKey lub SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Wymagane, jeśli .secret nie zostanie określony. Azure Key Vault URI, w którym jest przechowywana tajemnica (AccessKey lub SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Wymagane, jeśli .secret.keyVault jest określony. Nazwa tajemnicy w usłudze Azure Key Vault, w której jest przechowywany klucz tajny (AccessKey lub SAS).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Opcjonalny. Nazwy zdarzeń platformy Spark, oddzielone przecinkami, określają, które zdarzenia mają być zbierane. Na przykład: SparkListenerApplicationStart,SparkListenerApplicationEnd.
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Opcjonalny. Można określić, które dzienniki zebrać, podając nazwy rejestratorów Log4j rozdzielone przecinkami. Na przykład: org.apache.spark.SparkContext,org.example.Logger.
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Opcjonalny. Sufiksy nazw metryk systemu Spark, rozdzielone przecinkami, pozwalają określić, które metryki mają zostać zebrane. Na przykład: jvm.heap.used.
spark.fabric.pools.skipStarterPools Wymagane. Ta właściwość platformy Spark jest używana do wymuszania sesji platformy Spark na żądanie. Należy ustawić wartość na true podczas używania puli domyślnej, aby spowodować, że biblioteki będą generować dzienniki i metryki.

Przykład danych dziennika

Oto przykładowy rekord dziennika w formacie JSON:

{
  "timestamp": "2025-02-28T09:13:57.978Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "userId": "<the-submitter-user-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": "2025-02-28T09:13:57.941Z",
    "message": "ApplicationAttemptId: appattempt_1740734011890_0001_000001",
    "logger_name": "org.apache.spark.deploy.yarn.ApplicationMaster",
    "level": "INFO",
    "thread_name": "main"
    // ...
  }
}

Obszary robocze fabric z zarządzaną siecią wirtualną

Utwórz zarządzany prywatny punkt końcowy dla docelowej usługi Azure Blob Storage. Aby uzyskać szczegółowe instrukcje, zobacz Tworzenie i używanie zarządzanych prywatnych punktów końcowych w usłudze Microsoft Fabric — Microsoft Fabric.

Po zatwierdzeniu zarządzanego prywatnego punktu końcowego użytkownicy mogą rozpocząć emitowanie dzienników i metryk do docelowej usługi Azure Blob Storage.

Następne kroki