Administración de cargas de trabajo de Azure Batch desde una aplicación .NET

Completado

Azure Batch es una colección de recursos que se combinan para generar una solución de alto rendimiento, en paralelo y a gran escala.

Por ahora, decide escribir la aplicación que administra todo el proceso de Azure Batch como una aplicación de consola .NET Core. En primer lugar, la aplicación carga los vídeos de mascotas en la nube. Después, crea un grupo de Azure Batch con nodos de proceso (máquinas virtuales). Luego, la aplicación crea un trabajo que se ejecuta en esos nodos.

El trabajo que se ejecuta en cada nodo de proceso contiene tareas para todos los vídeos que se hayan cargado al contenedor de almacenamiento de entrada. La tarea carga los vídeos de mascotas en MP4, los convierte en GIF animados y guarda los archivos en un contenedor de salida. La tarea hace referencia a la biblioteca ffmpeg que se almacena como un paquete de aplicación en la cuenta de Azure Batch. En el siguiente diagrama se muestra el proceso:

Diagram showing how an app can use Azure Storage and Azure Batch to run apps on compute nodes in pools.

Azure Batch se usa en combinación con Azure Storage. Azure Storage proporciona la ubicación para los datos de entrada, un lugar para registrar y supervisar la información y el almacenamiento para la salida final. Ahí también se pueden almacenar las aplicaciones que ejecuta una instancia de Azure Batch, aunque una opción más flexible consiste en usar la característica de paquete de aplicación de Azure Batch.

Los componentes de Azure Batch son los siguientes:

  • Cuenta de Azure Batch: un contenedor que contiene los siguientes recursos necesarios para la solución de Azure Batch:
    • Paquete de aplicación: Un paquete de aplicación agrega aplicaciones que las tareas de instancias de Batch podrán usar. Una cuenta de Azure Batch puede contener hasta 20 paquetes de aplicación. Se puede realizar una solicitud para aumentar este límite si la empresa necesita más.
    • Grupo: Un grupo contiene nodos de proceso, que son los motores que ejecutan el trabajo de Batch. El número, el tamaño y el sistema operativo de los nodos se especifican en tiempo de creación. Una cuenta de Azure Batch puede contener muchos grupos.
    • Nodo: A cada nodo se le puede asignar un número de tareas para ejecutar y Azure Batch las asignará y administrará. Los nodos están asociados a un grupo específico.
    • Trabajo: los trabajos administran colecciones de tareas. Un trabajo está asociado a un grupo específico. Una cuenta de Azure Batch puede contener muchos trabajos.
    • Tarea: las tareas ejecutan aplicaciones. Se pueden incluir en un paquete de aplicación o en un contenedor de Azure Storage. Las tareas procesan archivos de entrada y, cuando se completan, pueden escribir en contenedores de salida.

Para poder administrar los componentes de Azure Batch desde dentro de una aplicación .NET, tendrá que crear las cuentas de Azure Batch y Azure Storage. Para crear estas cuentas, use Azure Portal, PowerShell o la CLI de Azure.

Por qué usar una aplicación para administrar las cargas de trabajo de Batch

El uso de una aplicación para controlar el procesamiento de Azure Batch permite automatizar la ejecución y supervisión de las tareas en la instancia de Azure Batch. El amplio conjunto de las API cliente disponibles permiten controlar el flujo de trabajo de Batch completo desde el código. Una vez que se complete el procesamiento por lotes, la aplicación podrá eliminar de forma automática los recursos creados, lo que reducirá los costes de Azure.

Las cargas de trabajo de Batch permiten escalar a miles de nodos, lo que hará más factibles aquellas soluciones que necesiten recursos de proceso intensivo del procesador, como las de transcodificación de video, previsión meteorológica y análisis de imágenes. Todos estos casos de uso son más eficientes cuando se administran mediante programación.

API de servicio de cliente de Batch

Microsoft ha publicado API de Batch para diferentes lenguajes. Con estas bibliotecas cliente, es posible controlar mediante programación todos los componentes de proceso de Batch, como la autenticación, los archivos de procesamiento, la creación de grupos de nodos, la creación de trabajos con tareas y la supervisión del estado de esas tareas en ejecución.

En .NET, estas API de Batch se cargan como paquetes NuGet en las aplicaciones. También se usará la biblioteca cliente de Azure Storage para administrar los archivos y recursos de la solución.

Cómo usar una aplicación .NET para controlar Azure Batch

Los pasos que seguirá en el resto del módulo permiten crear cuentas de Azure Batch y Azure Storage mediante Azure Portal. Después, cargará la aplicación ffmpeg como un paquete de aplicación para que se pueda usar en tareas. La aplicación usará tareas que ejecutan ffmepg para convertir los vídeos.

Con las cuentas de Batch y Storage creadas en Azure Portal, tendrá que crear una aplicación de consola de .NET Core en Cloud Shell que use las bibliotecas cliente de Azure Batch y Azure Storage.

La aplicación usará la biblioteca cliente de Azure Storage para cargar los vídeos MP4 en el almacenamiento de blobs. Después, la aplicación usará la biblioteca cliente de Batch para crear un grupo con tres nodos (máquinas virtuales de Windows Server), crear un trabajo y agregar las tareas de conversión de vídeo al trabajo que se vaya a ejecutar en esos nodos. Con las tareas en ejecución, la aplicación tendrá que supervisar su estado, comprobar que se completan de forma correcta y eliminar los recursos no deseados.