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


Мониторинг приложений Apache Spark с помощью Azure Log Analytics (предварительная версия)

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

В этом руководстве вы узнаете, как настроить журналы и метрики Spark в Log Analytics в Fabric. После настройки вы сможете собирать и анализировать метрики и журналы приложений Apache Spark в рабочей области Log analytics.

Настройка сведений о рабочей области

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

Шаг 1. Создание рабочей области Log Analytics

Чтобы создать эту рабочую область, ознакомьтесь с одним из следующих ресурсов:

Шаг 2. Создание артефакта среды Fabric с конфигурацией Apache Spark

Чтобы настроить Spark, создайте артефакт среды Fabric и выберите один из следующих вариантов:

Вариант 1. Настройка с помощью идентификатора рабочей области Log Analytics и ключа

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

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

    • <LOG_ANALYTICS_WORKSPACE_ID> — идентификатор рабочей области Log Analytics.
    • <LOG_ANALYTICS_WORKSPACE_KEY> — ключ Log Analytics. Чтобы найти это, в портал Azure перейдите к первичному ключу агентов>рабочей области>Azure Log Analytics.
    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.
    

    Кроме того, чтобы применить ту же конфигурацию, что и Azure Synapse, используйте следующие свойства или выберите " Добавить из .yml" на ленте, чтобы скачать образец 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.
    
  3. Сохраните и опубликуйте изменения.

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

Примечание.

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

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

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

  1. Перейдите в Хранилище ключей в портал Azure.

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

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

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

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

    • <LOG_ANALYTICS_WORKSPACE_ID> — идентификатор рабочей области Log Analytics.
    • <AZURE_KEY_VAULT_NAME> — имя настроенного хранилища ключей.
    • <AZURE_KEY_VAULT_SECRET_KEY_NAME> (необязательно) — имя секрета в хранилище ключей для ключа рабочей области. Значение по умолчанию — SparkLogAnalyticsSecret.
    // 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.
    

    Кроме того, чтобы применить ту же конфигурацию, что и Azure Synapse, используйте следующие свойства или выберите "Добавить из .yml" на ленте, чтобы скачать образец 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.
    

    Примечание.

    Вы также можете сохранить идентификатор рабочей области в Key Vault. Задайте имя SparkLogAnalyticsWorkspaceIdсекрета или используйте конфигурацию spark.synapse.logAnalytics.keyVault.key.workspaceId , чтобы указать имя секрета идентификатора рабочей области.

    Список конфигураций Apache Spark см. в разделе "Доступные конфигурации Apache Spark"

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

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

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

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

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

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

Примечание.

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

Отправка приложения Apache Spark и просмотр журналов и метрик

Чтобы отправить приложение Apache Spark, выполните приведенные действия.

  1. Отправьте приложение Apache Spark с связанной средой, настроенной на предыдущем шаге. Можно использовать любой из следующих способов:

    • Запустите записную книжку в Fabric.
    • Отправьте пакетное задание Apache Spark с помощью определения задания Apache Spark.
    • Запустите действия Spark в конвейерах.
  2. Когда приложение Apache Spark запустится, перейдите в указанную рабочую область Log Analytics, а затем просмотрите метрики и журналы приложения.

Запись настраиваемых журналов приложений

Для записи настраиваемых журналов можно использовать библиотеку Apache Log4j. Ниже приведены примеры для Scala и PySpark:

Пример 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()

Пример 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")

Запрос данных с помощью Kusto

Запрос событий Apache Spark:

SparkListenerEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

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

SparkLoggingEvent_CL
| where fabricWorkspaceId_g == "{FabricWorkspaceId}" and artifactId_g == "{ArtifactId}" and fabricLivyId_g == "{LivyId}"
| order by TimeGenerated desc
| limit 100 

Запрос метрик 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

Ограничения данных

Fabric отправляет данные журнала в Azure Monitor с помощью API сборщика данных HTTP. Данные, опубликованные в API сбора данных Azure Monitor, подвергаются определенным ограничениям:

  • Не более 30 МБ на одну запись в API сборщика данных Azure Monitor. Это ограничение размера для одной публикации. Если данные одной публикации превышают 30 МБ, необходимо разделить данные на меньшие фрагменты и отправить их параллельно.
  • Не более 32 КБ для значений полей. Если значение поля больше 32 КБ, данные усечены.
  • Рекомендуемое максимальное количество полей для данного типа — 50. Это ограничение введено для удобства поиска и использования.
  • Таблицы в рабочих областях Log Analytics поддерживают только до 500 столбцов.
  • Максимальное число символов в имени столбца — 45.

Создание оповещений и управление ими

Пользователи могут отправлять запросы для оценки метрик и журналов с заданной периодичностью и запуска оповещений на основе результатов. Дополнительные сведения см. в разделе Создание и просмотр оповещений журналов, а также управление ими с помощью Azure Monitor.

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

Сейчас Azure Log Analytics нельзя выбрать в качестве назначения для журналов Spark и выбросов метрик в управляемой виртуальной сети, так как управляемая частная конечная точка не поддерживает Log Analytics в качестве источника данных.

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