Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается место назначения Центры событий Azure для средства диагностики Apache Spark для Fabric.
Средство Apache Spark Diagnostic Emitter предоставляет общую модель конфигурации для диагностики Spark по различным направлениям. В этой статье описана настройка модели для маршрутизации журналов Apache Spark, журналов событий и метрик в Центры событий Azure.
Рекомендации по выбору архитектуры и назначения эмиттера можно найти в разделе Обзор эмиттера диагностики Fabric Apache Spark.
Сбор журналов и метрик для Центры событий Azure
Шаг 1. Создание экземпляра Центры событий Azure
Для сбора журналов диагностики и метрик можно использовать существующий экземпляр Центры событий Azure. Если у вас его нет, можно создать концентратор событий.
Шаг 2. Создание артефакта среды Fabric с помощью конфигурации Apache Spark
Вариант 1. Настройка с помощью строки подключения Центры событий Azure
Создание артефакта среды Fabric в Fabric
Добавьте следующие свойства Spark с соответствующими значениями в артефакт среды или выберите "Добавить из .yml" на ленте, чтобы скачать образец yaml файла, содержащий следующие свойства.
spark.synapse.diagnostic.emitters: MyEventHub spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub" spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.<connection-string>Заполните параметры в файле конфигурации. Дополнительные сведения см. в разделе конфигурации Центры событий Azure.
Вариант 2. Настройка с помощью Azure Key Vault
Примечание.
Убедитесь, что пользователи, отправившие приложения Apache Spark, получают разрешения на чтение секретов. Дополнительные сведения см. в разделе Провиде доступ к ключам Key Vault, сертификатам и секретам Azure с помощью управления доступом на основе ролей.
Чтобы настроить Azure Key Vault для хранения ключа рабочей области:
Создайте и перейдите в хранилище ключей на портале Azure.
На странице параметров хранилища ключей выберите "Секреты", а затем "Создать и импортировать".
На экране Создание секрета выберите следующие значения:
- Имя — укажите имя секрета.
-
Значение — введите
<connection-string>для секрета. - Оставьте другие значения по умолчанию. Затем выберите Создать.
Создайте артефакт среды Fabric в системе Fabric.
Добавьте следующие свойства Spark. Или выберите "Добавить из .yml" на ленте, чтобы скачать пример yaml-файла, который включает следующие свойства Spark.
spark.synapse.diagnostic.emitters: MyEventHub spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub" spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_URI> spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.Заполните следующие параметры в файле конфигурации:
<AZURE_KEY_VAULT_URI>,<AZURE_KEY_VAULT_SECRET_KEY_NAME>. Дополнительные сведения об этих параметрах см. в разделе конфигурации Центры событий Azure.Сохраните и опубликуйте изменения.
Вариант 3. Настройка с использованием проверки подлинности по сертификату
Регистрация приложения
Войдите на портал Azure и перейдите к Регистрация приложений.
Создайте регистрацию приложения для отправки журналов и метрик в Центры событий Azure.
Создание сертификата в Key Vault
Перейдите к Key Vault.
Разверните объект и выберите сертификаты.
Щелкните Создать/Импортировать.
Доверие к сертификату в приложении
Перейдите к регистрации приложения, созданной в 1 ->Manage ->Manifest.
Добавьте сведения о сертификате в файл манифеста для установления доверия. Это обеспечивает доверие к сертификату на основе субъектной идентичности сервисного учетного объекта.
"trustedCertificateSubjects": [ { "authorityId": "00000000-0000-0000-0000-000000000001", "subjectName": "Your-Subject-of-Certificate", "revokedCertificateIdentifiers": [] } ]
Назначить роль Отправитель данных Центры событий Azure
В Центры событий Azure перейдите к элементу управления доступом (IAM).
Назначьте роль отправителя данных Центры событий Azure приложению (субъект-служба).
Настройка разрешений доступа Azure Key Vault
На портале Azure перейдите к целевому Azure Key Vault.
В разделе управления доступом (IAM) назначьте роль пользователя сертификатов Key Vault приложению (учетной записи службы), используемому издателем диагностики Spark.
Создайте артефакт среды Fabric в Fabric и добавьте следующие свойства Spark с соответствующими значениями в артефакт среды.
-
<EMITTER_NAME>: имя эмитатора. -
<CERTIFICATE_NAME>: имя сертификата, созданное в хранилище ключей. -
<KEY_VAULT_URL>: URI службы Azure Key Vault (например,https://{keyvault-name}.vault.azure.net/). -
<EVENT_HUB_HOST_NAME>: полное доменное имя для пространства имен Event Hubs (например,<namespace>.servicebus.windows.net). -
<EVENT_HUB_NAME>: имя экземпляра Концентратора событий для отправки диагностических данных. -
<SERVICE_PRINCIPAL_TENANT_ID>: Идентификатор арендатора субъекта-службы, его можно найти в разделе регистрации приложений > имени приложения > Обзор -> Идентификатор директории (арендатора). -
<SERVICE_PRINCIPAL_CLIENT_ID>: Идентификатор клиента служебного принципала, его можно найти в регистрациях приложений > имени вашего приложения > Обзор > Идентификатор приложения (клиента).
"spark.synapse.diagnostic.emitters": "<EMITTER_NAME>", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.type": "AzureEventHub", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.categories": "DriverLog,ExecutorLog,EventLog,Metrics", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.hostName": "<EVENT_HUB_HOST_NAME>", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.entityPath": "<EVENT_HUB_NAME>", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault": "<KEY_VAULT_URL>", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.certificate.keyVault.certificateName": "<CERTIFICATE_NAME>", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.tenantId": "<SERVICE_PRINCIPAL_TENANT_ID>", "spark.synapse.diagnostic.emitter.<EMITTER_NAME>.clientId": "<SERVICE_PRINCIPAL_CLIENT_ID>", "spark.fabric.pools.skipStarterPools": "true"-
Шаг 3. Присоединение артефакта среды к ноутбукам или определениям заданий Spark, или установка его в качестве параметра по умолчанию для рабочей области.
Примечание.
- Только администраторы рабочих областей могут назначать среду как среду по умолчанию для рабочей области.
- После установки она становится средой по умолчанию для всех записных книжек и определений заданий Spark в рабочей области. Дополнительные сведения см. в разделе Fabric Параметры рабочей области.
Чтобы подключить среду к определениям заданий Spark и записных книжек, выполните следующие действия.
- Перейдите к определенной записной книжке или определению задания Spark в Fabric.
- Выберите меню "Среда" на вкладке "Главная" и выберите среду с настроенными свойствами Диагностика Spark.
- Конфигурация применяется при запуске сеанса Spark.
Чтобы задать среду в качестве рабочей области по умолчанию, выполните следующие действия.
- Перейдите к параметрам рабочей области в Fabric.
- Найдите параметры Spark в параметрах рабочей области (параметры рабочей области>Инженерия/Наука о данных>параметры Spark).
- Перейдите на вкладку "Среда " и выберите среду с настроенными свойствами Spark диагностики и нажмите кнопку "Сохранить".
Шаг 4. Отправка приложения Apache Spark и просмотр журналов и метрик
Для записи настраиваемых журналов можно использовать библиотеку Apache Log4j.
Пример для 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")
Доступные конфигурации
| Настройка | Описание |
|---|---|
spark.synapse.diagnostic.emitters |
Обязательное. Имена назначений диагностических излучателей, разделённые запятой. Например: MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Обязательное. Встроенный тип назначения. Чтобы включить назначение Центры событий Azure, значение должно быть AzureEventHub. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Необязательно. Выбранные категории журнала, разделенные запятой. Доступные значения: DriverLog, ExecutorLog, EventLog, Metrics. Если значение по умолчанию не задано, это все категории. |
spark.synapse.diagnostic.emitter.<destination>.secret |
Необязательно. Строка подключения Центры событий Azure. Требуется, если проверка подлинности на основе сертификата не используется и .secret.keyVault не указана. Это поле должно соответствовать шаблону Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Обязательно, если используется проверка подлинности через строку подключения и .secret не указан. URI хранилища Azure Key Vault, в котором хранится секрет (строка подключения). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Обязателен, если указан ключ .secret.keyVault. Имя секретного ключа в Azure Key Vault, где хранится секрет (строка подключения). |
spark.synapse.diagnostic.emitter.<destination>.hostName |
Требуется, если используется проверка подлинности на основе сертификатов. Полное доменное имя пространства имен для Event Hubs. Например: <namespace>.servicebus.windows.net. |
spark.synapse.diagnostic.emitter.<destination>.entityPath |
Требуется, если используется проверка подлинности на основе сертификатов. Имя экземпляра Event Hub, в который необходимо отправить диагностические данные. |
spark.synapse.diagnostic.emitter.<destination>.tenantId |
Требуется, если используется проверка подлинности на основе сертификатов. Идентификатор клиента Azure Active Directory субъекта-службы. |
spark.synapse.diagnostic.emitter.<destination>.clientId |
Требуется, если используется проверка подлинности на основе сертификатов. Идентификатор приложения (клиента) субъекта-службы. |
spark.synapse.diagnostic.emitter.<destination>.certificate.keyVault |
Требуется, если используется проверка подлинности на основе сертификатов. URL-адрес Azure Key Vault, в котором хранится сертификат. |
spark.synapse.diagnostic.emitter.<destination>.certificate.keyVault.certificateName |
Требуется, если используется проверка подлинности на основе сертификатов. Имя сертификата, хранящееся в Azure Key Vault, используемое для проверки подлинности на основе сертификата субъекта-службы. |
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 |
Необязательно. Суффиксы имен метрик Spark, разделенные запятыми, позволяют указать, какие метрики нужно собрать. Например: jvm.heap.used |
spark.fabric.pools.skipStarterPools |
Обязательное. Это свойство Spark используется для принудительного выполнения сеанса Spark по запросу. Необходимо задать значение true при использовании пула по умолчанию, чтобы активировать библиотеки для выдачи журналов и метрик. |
Примечание.
Строка подключения Центры событий Azure всегда должна содержать EntityPath, которое является именем экземпляра Центры событий Azure.
Пример журнала данных
Ниже приведен пример записи журнала в формате 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"
// ...
}
}
После передачи диагностики в концентратор событий Центры событий Azure, этот концентратор можно использовать как источник в потоке событий Fabric для обработки или маршрутизации данных.
Рабочие области Fabric с управляемой виртуальной сетью
Создайте управляемую частную конечную точку для целевого объекта Центры событий Azure. Подробные инструкции см. статью Создание и использование управляемых частных конечных точек в Microsoft Fabric - Microsoft Fabric.
После утверждения управляемой частной конечной точки пользователи могут начать отправлять журналы и метрики в целевой Центры событий Azure.