Resolución de retrasos en la creación de nodos por lotes al reiniciar o volver a crearlo
En este artículo se describe cómo resolver retrasos en la creación de nodos por lotes al reiniciar o volver a crear una imagen de un nodo. Evite problemas en Microsoft Azure Batch causados por la instalación del entorno de ejecución de Python grande y los paquetes de Python. Esta instalación provoca retrasos prolongados y posibles errores inesperados cuando se agrega un nodo por lotes por primera vez a un grupo de lotes, o cuando se reinicia o se vuelve a crear una imagen inicial del nodo.
Síntomas
Al crear un grupo de lotes y agregar un nodo al grupo, o bien reiniciar o volver a crear la imagen del nodo, la instalación de la aplicación tarda demasiado tiempo en finalizar o se produce un error después de un tiempo de instalación prolongado.
Causa
Este problema se produce porque un paquete de Python es demasiado grande para usarlo como tarea de inicio.
Al crear un grupo de lotes en Azure Batch y agregar un nodo por lotes, el proceso recomendado es usar una tarea de inicio para preparar el entorno operativo. Esta tarea de inicio puede hacer lo siguiente:
Instale las aplicaciones que ejecutan las tareas.
Inicie los procesos en segundo plano cuando el nodo por lotes se agregue por primera vez al grupo, o cuando se reinicie o se vuelva a crear una imagen inicial del nodo.
Sin embargo, para el entorno de ejecución del lenguaje Python y las aplicaciones que requieren que Se ejecute Python, el paquete puede ser tan grande que tarde mucho tiempo en instalarse la tarea de inicio. Incluso después de que se haya producido la mayoría de la instalación, es posible que la instalación siga fallando debido a un problema inesperado.
Solución
Para corregir este problema, coincida con las ubicaciones de la máquina virtual (VM) y las versiones del sistema operativo y las versiones del sistema operativo, y preinstale Python y sus paquetes antes de capturar una imagen de Gen1.
Use una imagen personalizada empaquetada previamente para asignar nodos por lotes. Para obtener información general sobre este proceso, consulte Uso de una imagen administrada para crear un grupo de imágenes personalizado.
Para evitar tiempos de instalación prolongados y ayudar a evitar errores de instalación, siga estos procedimientos generales:
Especifique la misma ubicación o región que se usará al crear la cuenta por lotes y cree el nodo por lotes de máquina virtual.
Seleccione una imagen que tenga Gen1 en el nombre, como Windows Server 2019 Datacenter - Gen1 (nodo de Windows) o Ubuntu Server 18.04 LTS - Gen1 (nodo Linux). Se necesita una imagen de Gen1 porque algunas familias de máquinas virtuales no admiten imágenes de Gen2 .
Al crear un grupo de nodos en Azure Portal, asegúrese de que la lista de SKU de la sección Sistema operativo contiene la versión del sistema especificada.
Personalice la instalación de Python para que se preinstale en la imagen y funcione para todos los usuarios.
Procedimientos específicos del sistema
En las secciones con pestañas siguientes se describen los pasos que debe seguir para un nodo por lotes de Windows o un nodo por lotes de Linux.
Nodo de Windows: instale la versión necesaria de Python en la unidad C y anexe manualmente la ruta de acceso del sistema.
Resumen de procedimiento
Después de crear e iniciar la máquina virtual, conéctese a la máquina virtual mediante el Protocolo de escritorio remoto (RDP). A continuación, instale todo lo que necesita en la máquina virtual, incluida la versión necesaria del entorno de ejecución de Python (por ejemplo, Python 3.10.4) y edite la ruta de acceso del sistema. Por último, capture la imagen de máquina virtual, impleméntela en un grupo de lotes que use la imagen de máquina virtual, conéctese al nuevo nodo del grupo de lotes y, a continuación, pruébelo para asegurarse de que el entorno de ejecución y los paquetes de Python preinstalados funcionan correctamente.
Pasos de procedimiento
Cree una máquina virtual Windows en Azure Portal especificando la siguiente configuración.
Nombre de valor Valor del valor Región La misma región que se asigna a la cuenta por lotes Imagen Imagen de Windows que tiene Gen1 (no Gen2) en el nombre y es compatible con el servicio por lotes Ejecute el Asistente para la instalación de Python y, a continuación, seleccione la opción Personalizar instalación . A continuación, en la página Opciones avanzadas, vaya al cuadro Personalizar ubicación de instalación y especifique una ruta de acceso en la unidad C.
Edite la variable de entorno del sistema para
Path
para que incluya la ruta de instalación de Python (como C:\Python\) y la ruta de acceso a los paquetes instalados de Python (como C:\Python\Scripts\).Nota:
El Asistente para la instalación de Python agrega estas rutas de acceso solo a la variable de entorno de usuario para
Path
. Por lo tanto, debe agregar las rutas de acceso a la variable de entorno del sistema correspondiente. De lo contrario, al capturar la imagen de máquina virtual, la configuración de Python y los paquetes de software adicionales que el usuario ha instalado se eliminan de la imagen.Para anexar estas rutas de acceso a la variable de entorno del sistema, siga estos pasos:
Seleccione Inicio y, a continuación, busque y seleccione Configuración.
En la aplicación Configuración, seleccione System About>Advanced system settings (Configuración>avanzada del sistema).
En el cuadro de diálogo Propiedades del sistema, seleccione la pestaña Avanzadas y, a continuación, seleccione Variables de entorno.
En el cuadro de diálogo Variables de entorno, vaya a la sección Variables del sistema, seleccione la variable Ruta de acceso y, a continuación, seleccione Editar.
En el cuadro de diálogo Editar variable de entorno, seleccione Nuevo y escriba la ruta de acceso a los paquetes instalados de Python. A continuación, repita este paso para escribir la ruta de acceso al entorno de ejecución de Python.
Seleccione Aceptar tres veces para aplicar los cambios en los tres cuadros de diálogo.
Pruebe la instalación de Python en una consola.
Por ejemplo, después de ejecutar
python --version
para comprobar la versión de Python que instaló, puede ejecutar el intérprete de Python para intentar importar un paquete que aún no se ha instalado (comonumpy
). Después de obtener la excepción esperadaModuleNotFoundError
, ejecute elpip install <package-name>
comando para instalar el paquete y, a continuación, vuelva a ejecutar el intérprete de Python para importar ese paquete. El comando import ahora debe realizarse correctamente.Capture la imagen de máquina virtual siguiendo los pasos descritos en Creación de una imagen de una máquina virtual en el portal, pero aplique solo la siguiente configuración en la página Crear una imagen .
Nombre de valor Valor del valor Grupo de recursos Seleccione en la lista de grupos de recursos o seleccione Crear nuevo para crear un grupo de recursos. Galería de proceso de Azure de destino Seleccione en la lista de galerías de proceso de Azure o seleccione Crear nuevo para crear una galería de proceso de Azure. Definición de imagen de máquina virtual de destino Seleccione Crear nuevo. En la página Crear una definición de imagen de máquina virtual, escriba solo el nombre de la definición de imagen de máquina virtual que quiera asignar a la imagen. (La página proporcionará automáticamente el Configuración del publicador, la oferta y la SKU ). Número de versión Escriba un número de versión que quiera asignar a la imagen de máquina virtual. Después de aplicar la configuración de la imagen de máquina virtual, seleccione Revisar y crear para comprobar la configuración y, a continuación, seleccione Crear para crear la imagen. En este paso se crean los tres tipos de recursos siguientes:
- Azure Compute Gallery
- Definición de imagen personalizada
- Versión de definición de imagen personalizada
Una vez creados los tres recursos, siga estos pasos para crear un nuevo grupo de lotes que use la imagen de máquina virtual:
En Azure Portal, busque y seleccione Cuentas de Batch.
En la lista de cuentas por lotes, seleccione su cuenta.
En el panel de menús de la cuenta por lotes, seleccione Grupos y, a continuación, seleccione Agregar para crear un grupo de lotes.
En la página Agregar grupo , realice la siguiente configuración y, a continuación, seleccione Aceptar.
Nombre de valor Valor del valor Id. de grupo Nuevo nombre para el grupo Tipo de imagen Imagen personalizada: Shared Image Gallery * Galería de imágenes compartidas Nombre de la galería de proceso de Azure de destino que especificó al crear la imagen de máquina virtual. Imagen Nombre de definición de imagen de máquina virtual que especificó al crear la imagen de máquina virtual Versión Número de versión que especificó al crear la imagen de máquina virtual. Sistema operativo Windows Distribución del SO windowsserver SKU del sistema operativo Código de producto de la versión del sistema operativo que seleccionó (por ejemplo, microsoftwindowsserver-2019-datacenter) * Shared Image Gallery es otro nombre para Azure Compute Gallery. Se trata de uno de los recursos que se crearon durante la creación de la imagen de máquina virtual.
Una vez asignado el nodo del grupo de lotes, vaya a la página del nodo del grupo de lotes y seleccione Conectar en el menú de encabezado.
En el panel Conectar , seleccione la opción Generar un usuario , seleccione el botón Generar un usuario aleatorio y, a continuación, seleccione Descargar archivo RDP.
Ejecute el archivo RDP descargado para conectarse al nuevo nodo por lotes.
Vuelva a probar la instalación de Python para asegurarse de que la versión preinstalada funciona correctamente.
Referencias
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.