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:

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 automático del proceso de Spark sin servidor 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.

Diagrama ampliable que muestra escenarios para el período de inactividad de la sesión de Apache Spark y el desmontaje del clúster.

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 seguir el vínculo para determinar los paquetes disponibles en la imagen base de la versión de Apache Spark en uso:

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

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 mejorar el tiempo de arranque en frío de la sesión de Spark estableciendo la variable de configuración spark.hadoop.aml.enable_cache en true. 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.

Diagrama expandible que muestra la etiqueta de configuración de sesión de Spark que habilita la memoria caché.

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 otros pasos para poder usar el grupo en Azure Machine Learning para:

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 Spark de Synapse.

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 usan el 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