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
Creación de un artefacto de entorno de Fabric en Fabric
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:
Cree un almacén de claves en Azure Portal y desplácese hasta él.
En la página de configuración del almacén de claves, seleccione Secretos y, a continuación, Generar/importar.
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.
Creación de un artefacto de entorno de Fabric en Fabric.
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.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:
- Vaya al cuaderno específico o definición de trabajo de Spark en Fabric.
- Seleccione el menú Entorno en la pestaña Inicio y seleccione el entorno con las propiedades de Spark de diagnóstico configuradas.
- La configuración se aplica al iniciar una sesión de Spark.
Para establecer el entorno como valor predeterminado del área de trabajo:
- Vaya a Configuración del área de trabajo en Fabric.
- 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).
- 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.