Apache Spark en Azure Machine Learning
La integración de Azure Machine Learning con Azure Synapse Analytics proporciona un acceso sencillo a los recursos de cálculo distribuidos con el marco de Apache Spark. Esta integración ofrece estas experiencias de procesamiento informático de Apache Spark:
- Proceso de Spark sin servidor
- Grupo de Spark de Synapse asociado
Proceso de Spark sin servidor
Con el marco de Apache Spark, el proceso de Spark sin servidor de Azure Machine Learning es la manera más fácil de realizar tareas de procesamiento informático distribuido en el entorno de Azure Machine Learning. Azure Machine Learning ofrece un clúster de proceso de Apache Spark a petición totalmente administrado y sin servidor. Sus usuarios pueden evitar la necesidad de crear un área de trabajo de Azure Synapse y un grupo de Spark de Synapse.
Los usuarios pueden definir recursos, incluido el tipo de instancia y la versión del entorno de ejecución de Apache Spark. Después, pueden usar esos recursos para acceder al proceso de Spark sin servidor en los cuadernos de Azure Machine Learning para:
- Desarrollo de código de Spark interactivo
- Ejecución de canalizaciones de aprendizaje automático con un componente de Spark
- envíos de trabajos por lotes de Spark
Puntos que se deben tener en cuenta
El proceso de Spark sin servidor funciona bien para la mayoría de los escenarios de usuario que requieren acceso rápido a los recursos informáticos distribuidos a través de Apache Spark. Sin embargo, para tomar una decisión informada, los usuarios deben tener en cuenta las ventajas y desventajas de este enfoque.
Ventajas:
- No hay dependencias en la creación de otros recursos de Azure para Apache Spark (la infraestructura de Azure Synapse funciona en segundo plano).
- No se requieren permisos de suscripción para crear recursos relacionados con Azure Synapse.
- No son necesarias las cuotas del grupo de SQL.
Desventajas:
- Falta un metastore de Hive persistente. El proceso de Spark sin servidor solo admite Spark SQL en memoria.
- No están disponibles las tablas ni las bases de datos.
- Falta la integración de Azure Purview.
- No están disponibles los servicios vinculados.
- Hay menos orígenes y conectores de datos.
- No hay ninguna configuración de nivel de grupo.
- No hay ninguna administración de bibliotecas de nivel de grupo.
- Solo compatibilidad parcial con
mssparkutils
.
Configuración de red
Para usar el aislamiento de red con Azure Machine Learning y el proceso de Spark sin servidor, use una red virtual administrada.
Períodos de inactividad y mecanismo de desmontaje
Al iniciarse por primera vez, un recurso de proceso de Spark sin servidor (arranque en frío) puede necesitar de tres a cinco minutos para iniciar la sesión de Spark en sí. El aprovisionamiento del recurso informático Spark sin servidor automatizado, respaldado por Azure Synapse, provoca este retraso. Después de aprovisionarse el proceso de Spark sin servidor e iniciarse una sesión de Apache Spark, las ejecuciones de código posteriores (arranque en caliente) no experimentarán este retraso.
La configuración de la sesión de Spark ofrece una opción que define un tiempo de espera de sesión (en minutos). La sesión de Spark finalizará después de un período de inactividad que supere el tiempo de espera definido por el usuario. Si no se inicia otra sesión de Spark en los 10 minutos siguientes, se desmontarán los recursos aprovisionados para el proceso de Spark sin servidor.
Tras producirse el desmontaje del recurso de proceso de Spark sin servidor, el envío del siguiente trabajo requerirá un arranque en frío. En la siguiente visualización, se muestran algunos escenarios de desmontaje de clústeres y períodos de inactividad de sesión.
Paquetes de Conda de nivel de sesión
Un archivo YAML de dependencias de Conda puede definir muchos paquetes de Conda a nivel de sesión en una configuración de sesión. Una sesión agotará el tiempo de espera si necesita más de 15 minutos para instalar los paquetes de Conda definidos en el archivo YAML. Es importante comprobar primero si un paquete necesario ya está disponible en la imagen base de Azure Synapse. Para ello, los usuarios deben visitar estos recursos para determinar los paquetes disponibles en la imagen base para la versión de Apache Spark que estén usando:
- Entorno de ejecución de Azure Synapse para Apache Spark 3.3
- Entorno de ejecución de Azure Synapse para Apache Spark 3.2
Importante
Azure Synapse Runtime para Apache Spark: Anuncios
- Entorno de ejecución de Azure Synapse para Apache Spark 3.2:
- Fecha de anuncio de EOLA: 8 de julio de 2023
- Fecha de fin de la asistencia: 8 de julio de 2024. Luego de esta fecha, el tiempo de ejecución se desactivará.
- Para una asistencia continuada y un rendimiento óptimo, aconsejamos migrar a Apache Spark 3.4
Nota:
Para un paquete de Conda de nivel de sesión:
- el arranque en frío necesitará de diez a quince minutos aproximadamente.
- el arranque en caliente con el mismo paquete de Conda necesitará un minuto aproximadamente.
- el arranque en caliente con un paquete de Conda diferente también necesitará de diez a quince minutos aproximadamente.
- Si el paquete que instala es grande o necesita un tiempo de instalación largo, podría afectar al tiempo de inicio de la instancia de Spark.
- No se admite la modificación de la versión de PySpark, Python, Scala/Java, .NET o Spark.
- No se admiten las imágenes de Docker.
Mejora de la hora de arranque en frío de sesión al usar paquetes de Conda de nivel de sesión
Puede establecer la variable de configuración spark.hadoop.aml.enable_cache
en true
, para mejorar el tiempo de arranque en frío de la sesión de Spark. El arranque en frío de sesión con paquetes de Conda de nivel de sesión suele tardar entre 10 y 15 minutos cuando la sesión se inicia por primera vez. Sin embargo, los arranques en frío de sesiones posteriores duran entre tres y cinco minutos. Defina la variable de configuración en la interfaz de usuario Configurar sesión, en Opciones de configuración.
Grupo de Spark de Synapse asociado
Un grupo de Spark creado en un área de trabajo de Azure Synapse está disponible en el área de trabajo de Azure Machine Learning mediante el grupo de Spark conectado de Synapse. Esta opción puede ser adecuada para los usuarios que quieran reutilizar un grupo de Spark de Synapse existente.
La conexión de un grupo de Spark de Synapse a un área de trabajo de Azure Machine Learning requiere más pasos para poder usar el grupo en Azure Machine Learning para:
- Desarrollo de código de Spark interactivo
- Envío de trabajos por lotes de Spark
- Ejecución de canalizaciones de aprendizaje automático con un componente de Spark
Un grupo de Spark de Synapse conectado proporciona acceso a las características nativas de Azure Synapse. El usuario es responsable del aprovisionamiento, la conexión, la configuración y la administración del grupo de Synapse Spark.
La configuración de la sesión de Spark para un grupo de Spark de Synapse conectado también ofrece una opción para definir un tiempo de espera de sesión (en minutos). El comportamiento del tiempo de espera de la sesión es similar a la descripción que se muestra en la sección anterior, excepto que los recursos asociados nunca se desmontan después del tiempo de espera de la sesión.
Definición del tamaño del clúster de Spark
En trabajos de Spark de Azure Machine Learning, puede definir el tamaño del clúster de Spark con tres valores de parámetro:
- Número de ejecutores
- Núcleos del ejecutor
- Memoria del ejecutor
Debe considerar un ejecutor de Apache Spark de Azure Machine Learning como equivalente a los nodos de trabajo de Azure Spark. Un ejemplo puede explicar estos parámetros. Supongamos que ha definido el número de ejecutores en 6 (equivalente a seis nodos de trabajo), el número de núcleos del ejecutor en 4 y la memoria del ejecutor en 28 GB. De este modo, el trabajo de Spark tiene acceso a un clúster con 24 núcleos en total y 168 GB de memoria.
Garantizar el acceso a los recursos para trabajos de Spark
Para acceder a los datos y otros recursos, un trabajo de Spark puede usar un paso a través de la identidad del usuario o una identidad administrada. En esta tabla, se resumen los mecanismos que usan los trabajos de Spark para acceder a los recursos.
Grupo de Spark | Identidades admitidas | Identidad predeterminada |
---|---|---|
Proceso de Spark sin servidor | Identidad de usuario, identidad administrada asignada por el usuario asociada al área de trabajo | Identidad del usuario |
Grupo de Spark de Synapse asociado | Identidad de usuario, identidad administrada asignada por el usuario asociada al grupo de Spark de Synapse conectado, identidad administrada asignada por el sistema del grupo de Spark de Synapse asociado | Identidad administrada asignada por el sistema del grupo de Spark de Synapse asociado |
En este artículo se describe el acceso a los recursos para trabajos de Spark. En una sesión de cuaderno, tanto el proceso de Spark sin servidor como el grupo de Spark de Synapse asociado dependen del paso a través de la identidad del usuario para el acceso a los datos durante la limpieza y transformación de datos interactivos.
Nota:
- Para garantizar la ejecución correcta del trabajo de Spark, debe asignar los roles Colaborador y Colaborador de datos de Storage Blob (que hay en la cuenta de almacenamiento de Azure que se usa para la entrada y salida de datos) a la identidad que se utilizará para el envío del trabajo de Spark.
- Si un grupo de Spark de Synapse conectado apunta a un grupo de Spark de Synapse de un área de trabajo de Azure Synapse que tiene asociada una red virtual administrada, configure un punto de conexión privado administrado a una cuenta de almacenamiento. Esta configuración ayudará a garantizar el acceso a los datos.
Pasos siguientes
- Asociación y administración de un grupo de Spark de Synapse en Azure Machine Learning
- Limpieza y transformación de datos interactivos con Apache Spark en Azure Machine Learning
- Envío de trabajos de Spark en Azure Machine Learning
- Ejemplos de código para trabajos de Spark mediante la CLI de Azure Machine Learning
- Ejemplos de código para trabajos de Spark mediante el SDK de Python de Azure Machine Learning