Compartir vía


¿Qué es el proceso de Apache Spark en Microsoft Fabric?

Se aplica a:✅ Ingeniería de datos y ciencia de datos en Microsoft Fabric

Las experiencias de Ingeniería de datos y Ciencia de datos de Microsoft Fabric funcionan en una plataforma de proceso Apache Spark totalmente administrada. Esta plataforma está diseñada para ofrecer una velocidad y eficiencia inigualables. Con los grupos de inicio, puede esperar una rápida inicialización de la sesión de Apache Spark, normalmente en 5 a 10 segundos, sin necesidad de configuración manual. También dispone de flexibilidad para personalizar los grupos de Apache Spark según sus requisitos específicos de ingeniería y ciencia de datos. La plataforma permite una experiencia de análisis optimizada y adaptada. En resumen, un grupo de inicio es una manera rápida de usar Spark preconfigurado, mientras que un grupo de Spark ofrece personalización y flexibilidad.

Imagen de una plataforma de proceso Spark con grupos de inicio y grupos Spark personalizados.

Grupos de inicio

Los grupos de inicio son una manera rápida y sencilla de usar Spark en la plataforma de Microsoft Fabric en cuestión de segundos. Puede usar las sesiones de Spark de inmediato, en lugar de esperar a que Spark configure los nodos, lo que le ayuda a hacer más con los datos y obtener información más rápido.

Imagen de una tabla que muestra la configuración del grupo de inicio.

Los grupos de inicio tienen clústeres de Apache Spark con sesiones que siempre están activas y listas para sus solicitudes. Usan nodos medianos que se escalan verticalmente de forma dinámica en función de las necesidades del trabajo de Spark.

Diagrama que muestra el diseño de alto nivel de los pools iniciales.

Cuando se usa un grupo de inicio sin dependencias de biblioteca adicionales o propiedades personalizadas de Spark, la sesión normalmente se inicia en 5 a 10 segundos. Este inicio rápido es posible porque el clúster ya se está ejecutando y no requiere tiempo de aprovisionamiento.

Nota:

Los grupos de inicio solo se admiten para tamaños de nodo medio y seleccionar cualquier otro tamaño de nodo o personalizar las configuraciones de proceso darán lugar a una experiencia de inicio de sesión a petición que podría tardar entre 2 y 5 minutos.

Sin embargo, hay varios escenarios en los que la sesión puede tardar más tiempo en iniciarse:

  1. Tiene bibliotecas personalizadas o propiedades de Spark
    Si ha configurado bibliotecas o opciones personalizadas en su entorno, Spark tiene que personalizar la sesión una vez creada. Este proceso puede agregar aproximadamente 30 segundos a 5 minutos al tiempo de inicio, según el número y el tamaño de las dependencias de la biblioteca.

  2. Los grupos de inicio de su región están completamente utilizados
    En raras ocasiones, los "Starter Pools" de una región podrían agotarse temporalmente debido a un tráfico elevado. Cuando esto sucede, Fabric pone en marcha un nuevo clúster para dar cabida a la solicitud, lo que tarda aproximadamente entre 2 y 5 minutos. Una vez disponible el nuevo clúster, se inicia la sesión. Si también tiene bibliotecas personalizadas para instalar, debe agregar los 30 segundos adicionales a 5 minutos necesarios para la personalización.

  3. Características avanzadas de red o seguridad (vínculos privados o redes virtuales administradas)
    Cuando el área de trabajo tiene características de red como Tenant Private Links o Managed VNets, los Pools de inicio no son compatibles. En esta situación, Fabric debe crear un clúster a petición, que agrega de 2 a 5 minutos a la hora de inicio de la sesión. Si también tiene dependencias de biblioteca, ese paso de personalización puede agregar de nuevo otros 30 segundos a 5 minutos.

Estos son algunos escenarios de ejemplo para ilustrar las posibles horas de inicio:

Escenario Tiempo de inicio típico
Configuración predeterminada, sin bibliotecas De 5 a 10 segundos
Configuración predeterminada y dependencias de biblioteca 5 – 10 segundos + 30 segundos – 5 minutos (para la configuración de la biblioteca)
Tráfico elevado en la región, sin bibliotecas De 2 a 5 minutos
Alto tráfico y dependencias de biblioteca 2 – 5 minutos + 30 segundos – 5 minutos (para bibliotecas)
Seguridad de red (vínculos privados/red virtual), sin bibliotecas De 2 a 5 minutos
Seguridad de red y dependencias de biblioteca 2 – 5 minutos + 30 segundos – 5 minutos (para bibliotecas)

En lo que respecta a la facturación y el consumo de capacidad, se le cobra por el consumo de capacidad cuando empieza a ejecutar la definición de trabajo de bloc de notas o Apache Spark. No se le cobrará por el tiempo que los clústeres estén inactivos en el grupo.

Diagrama que muestra las etapas de alto nivel en la facturación de las piscinas de iniciación.

Por ejemplo, si envía un trabajo de bloc de notas a un grupo de inicio, solo se le facturará por el periodo de tiempo en el que la sesión de bloc de notas esté activa. El tiempo facturado no incluye el tiempo de inactividad ni el tiempo empleado en personalizar la sesión con el contexto Spark. Para más información, consulte cómo configurar grupos destarter en Fabric.

Grupos de Spark

Un grupo de Spark es una manera de indicar a Spark qué tipo de recursos necesita para las tareas de análisis de datos. Puede asignar un nombre al grupo de Spark y elegir el número y el tamaño de los nodos (las máquinas que realizan el trabajo). También puede indicar a Spark cómo ajustar el número de nodos en función del trabajo que tenga. La creación de un grupo de Spark es gratuita; solo paga cuando ejecuta un trabajo de Spark en el grupo y, a continuación, Spark configura los nodos por usted.

Si no utiliza su grupo de Spark durante 2 minutos después de que expire su sesión, su grupo de Spark será desasignado. Este período de tiempo de expiración de sesión predeterminado se establece en 20 minutos y puede cambiarlo si lo desea. Si es administrador del área de trabajo, también puede crear grupos de Spark personalizados para el área de trabajo y convertirlos en la opción predeterminada para otros usuarios. De este modo, puede ahorrar tiempo y evitar la configuración de un nuevo grupo de Spark cada vez que ejecute un cuaderno o un trabajo de Spark. Los grupos de Spark personalizados tardan unos tres minutos en iniciarse, ya que Spark debe obtener los nodos de Azure.

Incluso puede crear grupos de Spark de un solo nodo, estableciendo el número mínimo de nodos en uno, de modo que el controlador y el ejecutor se ejecuten en un único nodo que viene con alta disponibilidad restaurable y es adecuado para cargas de trabajo pequeñas.

El tamaño y el número de nodos que puede tener en el grupo de Spark personalizado depende de la capacidad de Microsoft Fabric. La capacidad es una medida de la potencia informática que puede usar en Azure. Una manera de pensar es que dos núcleos virtuales de Apache Spark (una unidad de potencia informática para Spark) son iguales a una unidad de capacidad.

Nota:

En Apache Spark, los usuarios obtienen dos núcleos virtuales de Apache Spark para cada unidad de capacidad que reservan como parte de su SKU. Una unidad de capacidad equivale a dos Spark VCores, por lo que F64 => 128 Spark VCores, y se aplica un multiplicador de ráfaga de 3x, lo que proporciona un total de 384 Spark VCores.

Por ejemplo, una SKU de capacidad de Fabric F64 tiene 64 unidades de capacidad, lo que equivale a 384 núcleos virtuales Spark (64 * 2 * 3X ráfaga multiplicador). Puede usar estos núcleos virtuales de Spark para crear nodos de diferentes tamaños para el grupo de Spark personalizado, siempre que el número total de núcleos virtuales de Spark no supere los 384.

Los grupos de Spark se facturan como los grupos iniciales; no paga por los grupos de Spark personalizados que haya creado a menos que tenga una sesión Spark activa creada para ejecutar un bloc de notas o una definición de trabajo Spark. Solo se le factura por la duración de sus trabajos. No se le facturan etapas como la creación del clúster y la desasignación una vez finalizado el trabajo.

Diagrama de las etapas de alto nivel de la facturación de pools personalizados.

Por ejemplo, si envía un trabajo de bloc de notas a un grupo de Spark personalizado, solo se le cobrará por el periodo de tiempo en que la sesión esté activa. La facturación de esa sesión de bloc de notas se detiene una vez que la sesión de Spark se ha detenido o ha expirado. No se le cobrará por el tiempo empleado en adquirir instancias de clúster de la nube ni por el tiempo empleado en inicializar el contexto de Spark.

Posibles configuraciones de grupo personalizadas para F64 en función del ejemplo anterior. Los tamaños de nodo más pequeños tienen capacidad distribuida entre más nodos, por lo que el número máximo de nodos es mayor. Mientras que los nodos más grandes son enriquecidos con recursos, por lo que se necesitan menos nodos:

SKU de capacidad de Fabric Unidades de capacidad Número máximo de núcleos virtuales de Spark con factor de ráfaga Tamaño del nodo Número máximo de nodos
F64 64 384 Pequeño 96
F64 64 384 Media 48
F64 64 384 Grande veinticuatro
F64 64 384 Mas grande 12
F64 64 384 Extra grande 6

Nota:

Para crear grupos personalizados, necesita permisos de administrador para el área de trabajo. Además, el administrador de capacidad de Microsoft Fabric debe conceder permisos para permitir que los administradores del área de trabajo dimensionen sus grupos de Spark personalizados. Para más información, consulte Introducción a grupos de Spark personalizados en Fabric.

Nodos

Una instancia de grupo de Spark Apache consta de un nodo principal y nodos trabajadores, podría iniciar un mínimo de un nodo en una instancia de Spark. El nodo principal ejecuta servicios de administración adicionales, como Livy, Yarn Resource Manager, Zookeeper y el controlador de Apache Spark. Todos los nodos ejecutan servicios como Node Agent y Yarn Node Manager. Todos los nodos de trabajo ejecutan el servicio Apache Spark Executor.

Nota:

En Fabric, la relación de nodos con los ejecutores siempre es 1:1. Al configurar un grupo, un nodo se dedica al controlador y los nodos restantes se usan para los ejecutores. La única excepción es en una configuración de nodo único, donde los recursos para el controlador y el ejecutor se reducen a la mitad.

Tamaño de nodo

Un grupo de Spark puede definirse con tamaños de nodo que van desde un nodo de computación pequeño (con 4 vCore y 32 GB de memoria) hasta un nodo de computación extremadamente grande (con 64 vCore y 512 GB de memoria por nodo). El tamaño de los nodos puede modificarse tras la creación del pool, aunque habría que reiniciar la sesión activa.

Tamaño vCore Memoria
Pequeño 4 32 GB
Media 8 64 GB
Grande 16 128 GB
Mas grande 32 256 GB
Extra grande 64 512 GB

Nota:

Los tamaños de nodo X-Large y XX-Large solo se permiten para SKU de Fabric que no sean de prueba.

Escalado automático

La escalabilidad automática para grupos de Apache Spark proporciona la capacidad de escalar y reducir verticalmente los recursos de proceso en función de la cantidad de actividad. Cuando activas la función de auto escalado, establece el número mínimo y máximo de nodos a escalar. Cuando se deshabilita la función de auto escala, el número de nodos establecido permanece fijo. Puede modificar esta configuración tras la creación del grupo, aunque es posible que tenga que reiniciar la instancia.

Nota:

De forma predeterminada, spark.yarn.executor.decommission.enabled se establece como “true”, lo que permite el apagado automático de nodos infrautilizados para optimizar la eficacia del proceso. Si se prefiere reducir verticalmente de forma menos agresiva, esta configuración se puede establecer como “false”.

Asignación dinámica

La asignación dinámica permite a la aplicación Apache Spark solicitar más ejecutores si las tareas superan la carga que los ejecutores actuales pueden soportar. También libera los ejecutores cuando se completan los trabajos, y si la aplicación Spark pasa a estado inactivo. A los usuarios empresariales a menudo les resulta difícil ajustar las configuraciones del ejecutor porque son muy diferentes en las distintas etapas del proceso de ejecución de un trabajo de Spark. Estas configuraciones también dependen del volumen de datos procesados, que cambian de vez en cuando. Puede habilitar la opción de asignación dinámica de ejecutores como parte de la configuración del grupo, lo que permite la asignación automática de ejecutores a la aplicación Spark en función de los nodos disponibles en el grupo Spark.

Cuando habilite la opción de asignación dinámica para cada aplicación Spark enviada, el sistema reserva ejecutores durante el paso de envío del trabajo basándose en los nodos mínimos. Se especifican los nodos máximos para admitir escenarios de escalado automático satisfactorios.