Поделиться через


Сбор журналов и метрик приложений Apache Spark с помощью учетной записи хранения Azure (предварительная версия)

Расширение средства создания диагностики Apache Spark Fabric — это библиотека, которая позволяет приложениям Apache Spark выдавать журналы, журналы событий и метрики нескольким назначениям, включая Azure Log Analytics, служба хранилища Azure и Центры событий Azure.

В этом руководстве вы узнаете, как использовать расширение средства создания диагностики Apache Spark Для отправки журналов приложений Apache Spark, журналов событий и метрик в учетную запись служба хранилища Azure.

Сбор журналов и метрик в учетную запись хранения

Шаг 1. Создание учетной записи хранения

Для сбора журналов диагностики и метрик можно использовать существующую учетную запись служба хранилища Azure. Если у вас его нет, можно создать учетную запись хранения BLOB-объектов Azure или создать учетную запись хранения для использования с Azure Data Lake Storage 2-го поколения.

Шаг 2. Создание артефакта среды Fabric с помощью конфигурации Apache Spark

Вариант 1. Настройка с помощью URI служба хранилища Azure и ключа доступа

  1. Создание артефакта среды Fabric в Fabric

  2. Добавьте следующие свойства Spark с соответствующими значениями в артефакт среды или выберите " Добавить из .yml" на ленте, чтобы скачать образец yaml-файла, который уже содержит следующие свойства.

    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.
    

    В файле конфигурации задайте следующие параметры: <my-blob-storage>, <container-name>, <folder-name> и <storage-access-key>. Дополнительные сведения об этих параметрах см. в служба хранилища Azure конфигурациях.

Вариант 2. Настройка с помощью Azure Key Vault

Примечание.

Известная проблема: не удается запустить сеанс с помощью параметра 2 предварительно. В настоящее время хранение секретов в Key Vault предотвращает запуск сеансов Spark. Определите приоритеты настройки с помощью метода, описанного в варианте 1.

Убедитесь, что пользователи, отправившие приложения Apache Spark, получают разрешения на чтение секретов. Дополнительные сведения см. в статье Предоставление доступа к ключам, сертификатам и секретам Key Vault с помощью управления доступом на основе ролей Azure.

Чтобы настроить Azure Key Vault для хранения ключа рабочей области:

  1. На портале Azure создайте хранилище ключей и перейдите к нему.

  2. На странице параметров хранилища ключей выберите "Секреты", а затем "Создать и импортировать".

  3. На экране Создание секрета выберите следующие значения:

    • Имя — укажите имя секрета.
    • Значение — введите <storage-access-key> для секрета.
    • Оставьте другие значения по умолчанию. Затем выберите Создать.
  4. Создайте артефакт среды Fabric в Fabric.

  5. Добавьте следующие свойства Spark. Или выберите "Добавить" из .yml на ленте, чтобы отправить пример yaml-файла , который включает следующие свойства 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.
    

    Введите следующие параметры в файле конфигурации: <my-blob-storage>, <container-name>, <folder-name>, <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Дополнительные сведения об этих параметрах см. в служба хранилища Azure конфигурациях.

  6. Сохраните и опубликуйте изменения.

Шаг 3. Присоединение артефакта среды к записным книжкам или определениям заданий Spark или задание в качестве рабочей области по умолчанию

Чтобы подключить среду к определениям заданий Spark и записных книжек, выполните следующие действия.

  1. Перейдите к определенной записной книжке или определению задания Spark в Fabric.
  2. Выберите меню "Среда" на вкладке "Главная" и выберите среду с настроенными свойствами Диагностика Spark.
  3. Конфигурация применяется при запуске сеанса Spark.

Чтобы задать среду в качестве рабочей области по умолчанию, выполните следующие действия.

  1. Перейдите к параметрам рабочей области в Fabric.
  2. Найдите параметры Spark в параметрах рабочей области (параметр рабочей области —> Инжиниринг данных/Science —> параметры Spark).
  3. Выберите вкладку "Среда" и выберите среду с настроенными свойствами Spark диагностика и нажмите кнопку "Сохранить".

Примечание.

Только администраторы рабочих областей могут управлять конфигурациями рабочей области. Изменения, внесенные здесь, будут применяться ко всем записным книжкам и определениям заданий Spark, подключенным к параметрам рабочей области. Дополнительные сведения см. в разделе "Параметры рабочей области Fabric".

Шаг 4. Просмотр файлов журналов в учетной записи хранения Azure

После отправки задания в настроенный сеанс Spark можно просмотреть файлы журналов и метрик в целевой учетной записи хранения. Журналы хранятся в соответствующих путях на основе различных приложений, определяемых <workspaceId>.<fabricLivyId>. Все файлы журнала находятся в формате строк JSON (также известных как json с разделителями newline или ndjson), что удобно для обработки данных.

Доступные конфигурации

Настройка Description
spark.synapse.diagnostic.emitters Обязательное. Имена назначений отправителей диагностических данных, разделенные запятой. Например: MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Обязательный. Встроенный тип назначения. Чтобы включить назначение хранилища Azure, необходимо включить AzureStorage в это поле.
spark.synapse.diagnostic.emitter.<destination>.categories Необязательно. Выбранные категории журнала, разделенные запятой. Доступные значения: DriverLog, ExecutorLog, EventLog, Metrics. Если значение не указано, по умолчанию задаются все категории.
spark.synapse.diagnostic.emitter.<destination>.auth Обязательный. AccessKey для использования авторизации на основе ключа доступа учетной записи хранения. SAS для авторизации на основе подписанных URL-адресов.
spark.synapse.diagnostic.emitter.<destination>.uri Обязательный. URI папки контейнера BLOB-объектов назначения. Ожидается соответствие шаблону https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Необязательно. Секретное содержимое (AccessKey или SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Обязательный параметр, если .secret он не указан. Имя хранилища ключей Azure, где хранится секрет (AccessKey или SAS).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Обязателен, если указан ключ .secret.keyVault. Имя секрета хранилища ключей Azure, где хранится секрет (AccessKey или SAS).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Необязательно. Имена событий Apache Spark, разделенные запятыми; можно указать, какие события нужно собирать. Например: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Необязательно. Имена журналов, разделенных запятыми Log4j, можно указать, какие журналы необходимо собирать. Например: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Необязательно. Суффиксы имен метрик Apache Spark, разделенные запятыми; можно указать, какие метрики нужно собирать. Например: jvm.heap.used
spark.fabric.pools.skipStarterPools Обязательный. Это свойство Spark используется для принудительного выполнения сеанса Spark по запросу. Необходимо задать значение True при использовании пула по умолчанию, чтобы активировать библиотеки для выдачи журналов и метрик.

Пример журнала данных

Ниже приведен пример записи журнала в формате 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"
    //...
  }
}

Рабочие области Fabric с управляемой виртуальной сетью

Создайте управляемую частную конечную точку для целевого Хранилище BLOB-объектов Azure. Подробные инструкции см. в статье "Создание и использование управляемых частных конечных точек" в Microsoft Fabric — Microsoft Fabric.

После утверждения управляемой частной конечной точки пользователи могут начать создавать журналы и метрики в целевой Хранилище BLOB-объектов Azure.

Следующие шаги