Compartir a través de


Recopilación de los registros de aplicaciones y las métricas de Apache Spark mediante la cuenta de Azure Storage (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 la cuenta de Azure Storage.

Recopilación de registros y métricas en la cuenta de almacenamiento

Paso 1: Crear una cuenta de almacenamiento

Para recopilar registros y métricas de diagnóstico puede usar una cuenta de Azure Storage existente. Si no tiene una, puede crear una cuenta de Azure Blob Storage o crear una cuenta de almacenamiento para usarla con Azure Data Lake Storage Gen2.

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

Opción 1: Configuración con el URI de Azure Storage y la clave de acceso

  1. Creación de 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: 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.
    

    En el archivo de configuración, rellene estos parámetros: <my-blob-storage>, <container-name>, <folder-name>, <storage-access-key>. Para más información sobre estos parámetros, consulte configuraciones de Azure Storage.

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 <storage-access-key> 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 cargar el archivo yaml de ejemplo que incluye las siguientes propiedades de 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.
    

    En el archivo de configuración, rellene estos parámetros: <my-blob-storage>, <container-name>, <folder-name>, <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Para más información sobre estos parámetros, consulte configuraciones de Azure Storage.

  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.

Paso 4: Visualización de los archivos de registro en la cuenta de almacenamiento de Azure

Después de enviar un trabajo a la sesión de Spark configurada, puede ver los archivos de registros y métricas en la cuenta de almacenamiento de destino. Los registros se almacenan en las rutas de acceso correspondientes basadas en diferentes aplicaciones, identificadas por <workspaceId>.<fabricLivyId>. Todos los archivos de registro están en formato de líneas JSON (también conocido JSON delimitado por nuevas líneas o ndjson), lo cual resulta práctico para el procesamiento de los datos.

Configuraciones disponibles

Configuración Descripción
spark.synapse.diagnostic.emitters Necesario. Nombres de destino separados por comas de emisores de diagnósticos. Por ejemplo: MyDest1,MyDest2
spark.synapse.diagnostic.emitter.<destination>.type Necesario. Tipo de destino integrado. Para habilitar el destino de almacenamiento de Azure, AzureStorage debe incluirse en este campo.
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>.auth Necesario. AccessKey para usar la autorización de clave de acceso de la cuenta de almacenamiento. SAS para la autorización mediante firmas de acceso compartido.
spark.synapse.diagnostic.emitter.<destination>.uri Necesario. URI de la carpeta del contenedor de blobs de destino. Debe coincidir con el patrón https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>.
spark.synapse.diagnostic.emitter.<destination>.secret Opcional. Contenido del secreto (AccessKey o SAS).
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 (AccessKey o SAS).
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 (AccessKey o SAS).
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
spark.fabric.pools.skipStarterPools Necesario. Esta propiedad de Spark se usa para forzar una sesión de Spark a petición. Debe establecer el valor en True al usar el grupo predeterminado para desencadenar las bibliotecas para emitir registros y métricas.

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 Blob Storage 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 Blob Storage de destino.

Pasos siguientes