Zbieranie dzienników i metryk aplikacji platformy Apache Spark przy użyciu konta usługi Azure Storage (wersja zapoznawcza)
Rozszerzenie emitera diagnostycznego platformy Apache Spark sieci szkieletowej platformy Apache Spark to biblioteka umożliwiająca aplikacjom platformy Apache Spark emitowanie dzienników, dzienników zdarzeń i metryk do wielu miejsc docelowych, w tym usług Azure Log Analytics, Azure Storage i Azure Event Hubs.
Z tego samouczka dowiesz się, jak wysyłać dzienniki aplikacji platformy Apache Spark, dzienniki zdarzeń i metryki do konta usługi Azure Storage przy użyciu rozszerzenia diagnostycznego platformy Apache Spark.
Zbieranie dzienników i metryk na koncie 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 usługi Azure Blob Storage lub utworzyć konto magazynu do użycia z usługą Azure Data Lake Storage Gen2.
Krok 2. Tworzenie artefaktu środowiska sieci szkieletowej przy użyciu konfiguracji platformy Apache Spark
Opcja 1. Konfigurowanie przy użyciu identyfikatora URI usługi Azure Storage i klucza dostępu
Tworzenie artefaktu środowiska sieci szkieletowej w sieci szkieletowej
Dodaj następujące właściwości platformy Spark z odpowiednimi wartościami do artefaktu środowiska lub wybierz pozycję Dodaj z .yml na wstążce, aby pobrać przykładowy plik yaml, który zawiera już 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.MyDestination1.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyDestination1.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
Znany problem: Nie można uruchomić sesji przy użyciu opcji 2 tymczasowo. Obecnie przechowywanie wpisów tajnych w usłudze Key Vault uniemożliwia uruchamianie sesji platformy Spark. Określ priorytety konfiguracji przy użyciu metody opisanej w opcji 1.
Upewnij się, że użytkownicy przesyłający aplikacje platformy Apache Spark mają przyznane uprawnienia do odczytu wpisów tajnych. 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:
Utwórz magazyn kluczy i przejdź do magazynu kluczy w witrynie Azure Portal.
Na stronie ustawień magazynu kluczy wybierz pozycję Wpisy tajne, a następnie pozycję Generuj/Importuj.
Na ekranie Tworzenie wpisu tajnego wybierz następujące wartości:
- Nazwa: Wprowadź nazwę wpisu tajnego.
- Wartość: wprowadź wartość
<storage-access-key>
wpisu tajnego. - Dla pozostałych opcji zostaw wartości domyślne. Następnie wybierz Utwórz.
Utwórz artefakt środowiska sieci szkieletowej w sieci szkieletowej.
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 platformy 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_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.
Wypełnij następujące parametry w pliku konfiguracji:
<my-blob-storage>
, ,<container-name>
<folder-name>
,<AZURE_KEY_VAULT_NAME>
,<AZURE_KEY_VAULT_SECRET_KEY_NAME>
. Aby uzyskać więcej informacji na temat tych parametrów, zobacz Konfiguracje usługi Azure Storage.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
Aby dołączyć środowisko do notesów lub definicji zadań platformy Spark:
- Przejdź do określonego notesu lub definicji zadania platformy Spark w usłudze Fabric.
- Wybierz menu Środowisko na karcie Narzędzia główne i wybierz środowisko ze skonfigurowanymi właściwościami diagnostyki Spark.
- Konfiguracja jest stosowana podczas uruchamiania sesji platformy Spark.
Aby ustawić środowisko jako domyślne:
- Przejdź do obszaru roboczego Ustawienia w sieci szkieletowej.
- Znajdź ustawienia platformy Spark w ustawieniach obszaru roboczego (ustawienie Obszar roboczy —> inżynierowie danych/Nauka —> Ustawienia platformy Spark).
- Wybierz kartę Środowisko i wybierz środowisko ze skonfigurowanymi właściwościami platformy Spark diagnostyki, a następnie kliknij przycisk Zapisz.
Uwaga
Tylko administratorzy obszaru roboczego mogą zarządzać konfiguracjami obszaru roboczego. Zmiany wprowadzone w tym miejscu będą stosowane do wszystkich notesów i definicji zadań platformy Spark dołączonych do ustawień obszaru roboczego. Aby uzyskać więcej informacji, zobacz Ustawienia obszaru roboczego sieci szkieletowej.
Krok 4. Wyświetlanie plików dzienników na koncie usługi Azure Storage
Po przesłaniu zadania do skonfigurowanej sesji platformy Spark możesz wyświetlić dzienniki i pliki metryk na docelowym koncie magazynu. Dzienniki są przechowywane w odpowiednich ścieżkach na podstawie 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 |
Wymagany. Wbudowany typ miejsca docelowego. 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. Rozdzielone przecinkami kategorie dzienników. Dostępne wartości obejmują DriverLog , , EventLog ExecutorLog , Metrics . Jeśli nie zostanie ustawiona, wartość domyślna to wszystkie kategorie. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Wymagany. AccessKey do korzystania z autoryzacji klucza dostępu do konta magazynu. SAS w przypadku autoryzacji sygnatur dostępu współdzielonego. |
spark.synapse.diagnostic.emitter.<destination>.uri |
Wymagany. Identyfikator URI docelowego folderu kontenera obiektów 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ść wpisu tajnego (AccessKey lub SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Wymagane, jeśli .secret nie zostanie określony. Nazwa magazynu kluczy platformy Azure, w którym jest przechowywany wpis tajny (AccessKey lub SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Wymagane, jeśli .secret.keyVault jest określony. Nazwa wpisu tajnego usługi Azure Key Vault, w której jest przechowywany klucz tajny (AccessKey lub SAS). |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Opcjonalny. Rozdzielane przecinkami nazwy zdarzeń platformy Spark można określić, które zdarzenia mają być zbierane. Na przykład: SparkListenerApplicationStart,SparkListenerApplicationEnd . |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Opcjonalny. Rozdzielone przecinkami nazwy rejestratora Log4j można określić dzienniki do zebrania. Na przykład: org.apache.spark.SparkContext,org.example.Logger . |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Opcjonalny. Sufiksy nazw metryk platformy Spark rozdzielone przecinkami umożliwiają określenie metryk do zebrania. Na przykład: jvm.heap.used . |
spark.fabric.pools.skipStarterPools |
Wymagany. Ta właściwość platformy Spark jest używana do wymuszania sesji platformy Spark na żądanie. Należy ustawić wartość na True w przypadku używania puli domyślnej, aby wyzwolić biblioteki w celu emitowania dzienników i metryk. |
Przykład danych dziennika
Oto przykładowy rekord dziennika w formacie 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"
//...
}
}
Obszary robocze sieci szkieletowej 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
- Tworzenie definicji zadania platformy Apache Spark
- Tworzenie, konfigurowanie i używanie środowiska w usłudze Microsoft Fabric
- Tworzenie i używanie zarządzanych prywatnych punktów końcowych w usłudze Microsoft Fabric
- Tworzenie, wykonywanie notesów usługi Microsoft Fabric i zarządzanie nimi
- Monitorowanie aplikacji platformy Spark