Monitorowanie aplikacji platformy Apache Spark za pomocą usługi Azure Log Analytics (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 analizy dzienników platformy Azure, usługi Azure Storage i centrów zdarzeń platformy Azure.
Z tego samouczka dowiesz się, jak skonfigurować i emitować dzienniki i metryki platformy Spark do usługi Log Analytics w sieci szkieletowej. Po skonfigurowaniu można zbierać i analizować metryki i dzienniki aplikacji platformy Apache Spark w obszarze roboczym usługi Log Analytics.
Konfigurowanie informacji o obszarze roboczym
Wykonaj następujące kroki, aby skonfigurować niezbędne informacje w sieci szkieletowej.
Krok 1. Tworzenie obszaru roboczego usługi Log Analytics
Zapoznaj się z jednym z następujących zasobów, aby utworzyć ten obszar roboczy:
- Utwórz obszar roboczy w witrynie Azure Portal.
- Tworzenie obszaru roboczego przy użyciu interfejsu wiersza polecenia platformy Azure.
- Tworzenie i konfigurowanie obszaru roboczego w usłudze Azure Monitor przy użyciu programu PowerShell.
Krok 2. Tworzenie artefaktu środowiska sieci szkieletowej przy użyciu konfiguracji platformy Apache Spark
Aby skonfigurować platformę Spark, utwórz artefakt środowiska sieci szkieletowej i wybierz jedną z następujących opcji:
Opcja 1. Konfigurowanie przy użyciu identyfikatora i klucza obszaru roboczego usługi Log Analytics
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ż wymagane właściwości.
<LOG_ANALYTICS_WORKSPACE_ID>
: identyfikator obszaru roboczego usługi Log Analytics.<LOG_ANALYTICS_WORKSPACE_KEY>
: klucz usługi Log Analytics. Aby to znaleźć, w witrynie Azure Portal przejdź do obszaru roboczego>Agenci>usługi Azure Log Analytics Klucz podstawowy.
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.
Alternatywnie, aby zastosować tę samą konfigurację co usługa Azure Synapse, użyj następujących właściwości lub wybierz pozycję Dodaj z .yml na wstążce, aby pobrać przykładowy plik yaml.
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.
Zapisz i opublikuj zmiany.
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.
Musisz udzielić użytkownikom uprawnień do odczytu wpisu tajnego, którzy będą przesyłać aplikacje platformy Apache Spark. 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, wykonaj następujące kroki:
Przejdź do usługi Key Vault w witrynie Azure Portal.
Na stronie ustawień magazynu kluczy wybierz pozycję Wpisy tajne, a następnie pozycję Generuj/Importuj.
Na ekranie Tworzenie wpisu tajnego wprowadź następujące wartości:
- Nazwa: Wprowadź nazwę wpisu tajnego. W polu domyślnym wprowadź .
SparkLogAnalyticsSecret
- Wartość: wprowadź wartość
<LOG_ANALYTICS_WORKSPACE_KEY>
wpisu tajnego. - Dla pozostałych opcji zostaw wartości domyślne. Następnie wybierz Utwórz.
- Nazwa: Wprowadź nazwę wpisu tajnego. W polu domyślnym wprowadź .
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 w artefaktu Środowisko, aby pobrać przykładowy plik yaml zawierający następujące właściwości platformy Spark.
<LOG_ANALYTICS_WORKSPACE_ID>
: identyfikator obszaru roboczego usługi Log Analytics.<AZURE_KEY_VAULT_NAME>
: skonfigurowana nazwa magazynu kluczy.<AZURE_KEY_VAULT_SECRET_KEY_NAME>
(opcjonalnie): nazwa wpisu tajnego w magazynie kluczy dla klucza obszaru roboczego. Wartość domyślna toSparkLogAnalyticsSecret
.
// 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.
Alternatywnie, aby zastosować tę samą konfigurację co usługa Azure Synapse, użyj następujących właściwości lub wybierz pozycję Dodaj z .yml na wstążce, aby pobrać przykładowy plik yaml.
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.
Uwaga
Identyfikator obszaru roboczego można również przechowywać w usłudze Key Vault. Ustaw nazwę wpisu tajnego na
SparkLogAnalyticsWorkspaceId
, lub użyj konfiguracjispark.synapse.logAnalytics.keyVault.key.workspaceId
, aby określić nazwę wpisu tajnego identyfikatora obszaru roboczego.Aby uzyskać listę konfiguracji platformy Apache Spark, zobacz Dostępne konfiguracje platformy Apache Spark
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 notesu lub definicji zadania platformy Spark w usłudze Fabric.
- Wybierz menu Środowisko na karcie Narzędzia główne i wybierz skonfigurowane środowisko.
- Konfiguracja zostanie zastosowana po rozpoczęciu sesji platformy Spark.
Aby ustawić środowisko jako domyślne:
- Przejdź do pozycji Ustawienia obszaru roboczego w sieci szkieletowej.
- Znajdź ustawienia platformy Spark w ustawieniach obszaru roboczego (ustawienie Obszar roboczy —> inżynierowie danych ing/Science —> 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. Wartości będą stosowane do notesów i definicji zadań platformy Spark, które są dołączane do ustawień obszaru roboczego. Aby uzyskać więcej informacji, zobacz Ustawienia obszaru roboczego sieci szkieletowej.
Przesyłanie aplikacji platformy Apache Spark i wyświetlanie dzienników i metryk
Aby przesłać aplikację platformy Apache Spark:
Prześlij aplikację platformy Apache Spark ze skojarzonym środowiskiem, które zostało skonfigurowane w poprzednim kroku. Aby to zrobić, możesz użyć dowolnego z następujących sposobów:
- Uruchom notes w sieci szkieletowej.
- Prześlij zadanie wsadowe platformy Apache Spark za pomocą definicji zadania platformy Apache Spark.
- Uruchom działania platformy Spark w potokach.
Przejdź do określonego obszaru roboczego usługi Log Analytics, a następnie wyświetl metryki aplikacji i dzienniki po uruchomieniu aplikacji Platformy Apache Spark.
Zapisywanie niestandardowych dzienników aplikacji
Możesz użyć biblioteki Apache Log4j do zapisywania dzienników niestandardowych. Oto przykłady dla języka Scala i PySpark:
Przykład scala:
%%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()
Przykład PySpark:
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
Wykonywanie zapytań dotyczących danych za pomocą usługi Kusto
Aby wykonywać zapytania dotyczące zdarzeń platformy Apache Spark:
SparkListenerEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Aby wykonać zapytanie dotyczące sterownika aplikacji Platformy Spark i dzienników funkcji wykonawczej:
SparkLoggingEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Aby wykonywać zapytania dotyczące metryk platformy Apache Spark:
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
Limity danych
Sieć szkieletowa wysyła dane dziennika do usługi Azure Monitor przy użyciu interfejsu API modułu zbierającego dane HTTP. Dane publikowane w interfejsie API zbierania danych usługi Azure Monitor podlegają pewnym ograniczeniom:
- Maksymalnie 30 MB na post do interfejsu API modułu zbierającego dane usługi Azure Monitor. Jest to limit rozmiaru pojedynczego wpisu. Jeśli dane z pojedynczego wpisu przekraczają 30 MB, należy podzielić dane na fragmenty o mniejszym rozmiarze i wysłać je współbieżnie.
- Maksymalnie 32 KB dla wartości pól. Jeśli wartość pola jest większa niż 32 KB, dane są obcięte.
- Zalecane maksymalnie 50 pól dla danego typu. Jest to praktyczny limit z perspektywy użyteczności i środowiska wyszukiwania.
- Tabele w obszarach roboczych usługi Log Analytics obsługują tylko 500 kolumn.
- Maksymalnie 45 znaków dla nazw kolumn.
Tworzenie alertów i zarządzanie nimi
Użytkownicy mogą wykonywać zapytania dotyczące oceny metryk i dzienników z ustawioną częstotliwością oraz wyzwalać alert na podstawie wyników. Aby uzyskać więcej informacji, zobacz Tworzenie, wyświetlanie alertów dzienników i zarządzanie nimi przy użyciu usługi Azure Monitor.
Obszary robocze sieci szkieletowej z zarządzaną siecią wirtualną
Obecnie nie można wybrać usługi Azure Log Analytics jako miejsca docelowego dla dzienników platformy Spark i emisji metryk w zarządzanej sieci wirtualnej, ponieważ zarządzany prywatny punkt końcowy nie obsługuje usługi Log Analytics jako źródła danych.
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