Compartir a través de


Recopilación de los registros de aplicaciones y las métricas de Apache Spark mediante Azure Event Hubs (versión preliminar)

La extensión de emisor de diagnóstico de Apache Spark de Fabric es una biblioteca que permite a las aplicaciones de Apache Spark emitir registros, registros de eventos y métricas a varios destinos, incluidos Azure Log Analytics, Azure Storage y Azure Event Hubs.

En este tutorial aprenderá a usar la extensión de emisión de diagnósticos de Apache Spark de Fabric para enviar registros, registros de eventos y métricas de la aplicación Apache Spark a Azure Event Hubs.

Recopilación de registros y métricas en Azure Event Hubs

Paso 1: Crear una instancia de Azure Event Hubs

Para recopilar registros y métricas de diagnóstico puede usar una instancia de Azure Event Hubs existente. Si no tiene, puede crear un centro de eventos.

Paso 2: Crear un artefacto de entorno de Fabric con la configuración de Apache Spark

Opción 1: Configurar con la cadena de conexión de Azure Event Hubs

  1. Crear un artefacto de entorno de Fabric en Fabric

  2. Agregue las siguientes propiedades de Spark con los valores adecuados al artefacto de entorno o seleccione Agregar desde .yml en la cinta de opciones para descargar el archivo yaml de ejemplo, que ya contiene las siguientes propiedades.

    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.
    

    Rellene los parámetros <connection-string> en el archivo de configuración. Para obtener más información, consulte configuraciones de Azure Event Hubs.

Opción 2: Configuración con Azure Key Vault

Nota:

Problema conocido: provisionalmente, no se puede iniciar una sesión con la opción 2. Actualmente, almacenar los secretos en Key Vault impide que se inicien las sesiones de Spark. Dé prioridad a la configuración mediante el método descrito en la opción 1.

Asegúrese de que a los usuarios que envían aplicaciones de Apache Spark se les conceden permisos de lectura de secretos. Para obtener más información, consulta Acceso a las claves, los certificados y los secretos de Key Vault con un control de acceso basado en rol de Azure.

Para configurar Azure Key Vault para almacenar la clave del área de trabajo:

  1. Cree un almacén de claves en Azure Portal y desplácese hasta él.

  2. En la página de configuración del almacén de claves, seleccione Secretos y, a continuación, Generar/importar.

  3. En la pantalla Crear un secreto, elija los siguientes valores:

    • Nombre: escriba un nombre para el secreto.
    • Valor: escriba el valor de <connection-string> del secreto.
    • Deje las restantes opciones con sus valores predeterminados. Seleccione Crear.
  4. Creación de un artefacto de entorno de Fabric en Fabric.

  5. Agregue las siguientes propiedades de Spark. O bien, seleccione Agregar desde .yml de la cinta de opciones para descargar el archivo yaml de ejemplo que incluye las siguientes propiedades de 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_NAME>
    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.
    

    En el archivo de configuración, rellene estos parámetros: <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Para más información sobre estos parámetros, consulte configuraciones de Azure Event Hubs.

  6. Guarde y publique los cambios.

Paso 3: Adjuntar el artefacto de entorno a cuadernos o definiciones de trabajos de Spark, o establecerlo como el valor predeterminado del área de trabajo

Para adjuntar el entorno a cuadernos o definiciones de trabajos de Spark:

  1. Vaya al cuaderno específico o definición de trabajo de Spark en Fabric.
  2. Seleccione el menú Entorno en la pestaña Inicio y seleccione el entorno con las propiedades de Spark de diagnóstico configuradas.
  3. La configuración se aplica al iniciar una sesión de Spark.

Para establecer el entorno como valor predeterminado del área de trabajo:

  1. Vaya a Configuración del área de trabajo en Fabric.
  2. Busque la configuración de Spark en la configuración del área de trabajo (Configuración del área de trabajo -> Ingeniería/ciencia de datos ->Configuración de Spark).
  3. Seleccione la pestaña Entorno, elija el entorno con las propiedades de Spark de diagnóstico configuradas y haga clic en Guardar.

Nota:

Solo los administradores del área de trabajo pueden administrar las configuraciones del área de trabajo. Los cambios realizados aquí se aplicarán a todos los cuadernos y definiciones de trabajo de Spark adjuntos a la configuración del área de trabajo. Para más información, consulte Configuración del área de trabajo de Fabric.

Configuraciones disponibles

Configuración Descripción
spark.synapse.diagnostic.emitters Necesario. Nombres de destino separados por comas de emisores de diagnósticos.
spark.synapse.diagnostic.emitter.<destination>.type Necesario. Tipo de destino integrado. Para habilitar Azure Event Hubs como destino, el valor debe ser AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories Opcional. Categorías de registro seleccionadas separadas por comas. Entre los valores disponibles se incluyen: DriverLog, ExecutorLog, EventLog y Metrics. Si no se especifica, se establece en todas categorías.
spark.synapse.diagnostic.emitter.<destination>.secret Opcional. Cadena de conexión de instancia de Azure Event Hubs. Este campo debe coincidir con este patrón Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>.
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Obligatorio si no se ha especificado .secret. Nombre del almacén de claves de Azure donde se almacena el secreto (cadena de conexión).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Requerido si se especifica .secret.keyVault. Nombre del almacén de claves de Azure donde se almacena el secreto (cadena de conexión).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match Opcional. Nombres de eventos de Spark separados por comas, puede especificar qué eventos se recopilan. Por ejemplo: SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match Opcional. Nombres del registrador Log4j separados por comas, puede especificar qué registros se recopilan. Por ejemplo: org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match Opcional. Sufijos de nombre de métrica de Spark separados por comas, puede especificar qué métricas se recopilan. Por ejemplo: jvm.heap.used

Nota

La cadena de conexión de la instancia de Azure Event Hubs siempre debe incluir EntityPath, que es el nombre de la instancia de Azure Event Hubs.

Ejemplo de datos de registro

Este es un registro de ejemplo en formato 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"
    //...
  }
}

Áreas de trabajo de Fabric con red virtual administrada

Cree un punto de conexión privado administrado para Azure Event Hubs de destino. Para obtener instrucciones detalladas, consulte Creación y uso de puntos de conexión privados administrados en Microsoft Fabric: Microsoft Fabric.

Una vez aprobado el punto de conexión privado administrado, los usuarios pueden empezar a emitir registros y métricas al Azure Event Hubs de destino.

Pasos siguientes