Gerir cargas de trabalho do Azure Batch a partir de uma aplicação .NET

Concluído

O Azure Batch é uma coleção de recursos que você combina para produzir uma solução em grande escala, paralela e de alto desempenho.

O utilizador escrever a aplicação que gere todo o processo do Azure Batch como uma aplicação de consola .NET Core. Em primeiro lugar, a aplicação carrega os vídeos de animais para a cloud. Em seguida, ele cria um pool de lotes do Azure com nós de computação (máquinas virtuais). A aplicação cria um trabalho para executar nesses nós.

O trabalho executado em cada nó de computação contém tarefas para cada vídeo carregado no contêiner de armazenamento de entrada. A tarefa carrega os vídeos de animais de estimação MP4, converte-os em GIFs animados e salva os arquivos em um contêiner de saída. A tarefa faz referência à biblioteca ffmpeg armazenada como um pacote de aplicativo na conta do Lote do Azure. O diagrama a seguir mostra nosso processo:

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

O Azure Batch é utilizado em conjunto com o Armazenamento do Azure. O Armazenamento do Azure fornece a localização para quaisquer dados de entrada, um local para registo e monitorização de informações e armazenamento para a saída final. Os aplicativos que um Lote do Azure executa também podem ser armazenados lá, mas uma opção mais flexível é usar o recurso de pacote de aplicativos do Lote do Azure.

Os componentes do Azure Batch são:

  • Conta do Lote do Azure: um contêiner que contém os seguintes recursos necessários para nossa solução do Lote do Azure:
    • Pacote de aplicativo: um pacote de aplicativo adiciona aplicativos que as tarefas em um lote podem usar. Uma conta do Azure Batch pode incluir até 20 pacotes de aplicações. Pode fazer um pedido para aumentar este limite se a sua empresa necessitar de mais.
    • Pool: um pool contém nós de computação, que são os mecanismos que executam seu trabalho em lote. Tem de especificar o número, tamanho e sistema operativo dos nós no momento da criação. Uma conta do Azure Batch pode conter muitos conjuntos.
    • : Cada nó pode receber um número de tarefas para executar e as tarefas são alocadas e gerenciadas pelo Lote do Azure. Os nós estão associados a um conjunto específico.
    • Trabalho: Os trabalhos gerenciam coleções de tarefas. Um trabalho está associado a um conjunto específico. Uma conta do Azure Batch pode conter muitos trabalhos.
    • Tarefa: As tarefas executam aplicativos. Eles podem estar contidos em um pacote de aplicativo ou em um contêiner de Armazenamento do Azure. As tarefas processam ficheiros de entrada e, aquando da conclusão, podem escrever em contentores de saída.

Antes de começar a gerir os componentes do Azure Batch a partir de uma aplicação .NET, tem de criar a conta do Azure Batch e a conta de Armazenamento do Azure. Você pode usar o portal do Azure, o PowerShell ou a CLI do Azure para criar essas contas.

Porquê utilizar uma aplicação para gerir cargas de trabalho do Batch

Usar um aplicativo para controlar o processamento em Lote do Azure permite automatizar tarefas de execução e monitoramento em seu Lote do Azure. O rico conjunto de APIs de cliente disponíveis permite que você controle todo o fluxo de trabalho do Batch a partir do seu código. Quando o processamento em lote estiver concluído, o aplicativo poderá excluir os recursos criados automaticamente, mantendo seus custos do Azure baixos.

As cargas de trabalho em lote possibilitam a escalabilidade para milhares de nós, tornando as soluções que precisam de recursos de computação intensivos do processador — como transcodificação de vídeo, previsão do tempo e análise de imagem — mais viáveis. Todos estes casos de utilização tornam-se mais eficientes quando são geridos de forma programática.

APIs de serviço de cliente do Batch

A Microsoft lançou APIs do Batch para uma variedade de linguagens. Usando essas bibliotecas de cliente, você pode controlar programaticamente todos os componentes do processo em lote, incluindo autenticação, processamento de arquivos, criação de pools de nós, criação de trabalhos com tarefas e monitoramento do estado dessas tarefas em execução.

No .NET, estas APIs do Batch são carregadas como pacotes NuGet para as suas aplicações. Também iremos utilizar a biblioteca de cliente do Armazenamento do Azure para gerir ficheiros e recursos na nossa solução.

Como utilizar uma aplicação .NET para controlar o Azure Batch

As etapas que você seguirá no restante do módulo criam contas do Lote do Azure e do Armazenamento do Azure usando o portal do Azure. Em seguida, irá carregar a aplicação ffmpeg como um pacote de aplicação para disponibilizá-lo para utilizar em tarefas. Seu aplicativo usará tarefas que executam ffmepg para converter os vídeos.

Com as contas de Armazenamento e do Batch criadas no portal do Azure, terá de criar uma aplicação de consola .NET Core no Cloud Shell que utiliza bibliotecas de cliente do Azure Batch e do Armazenamento do Azure.

A sua aplicação irá utilizar a biblioteca de cliente do Armazenamento do Azure para carregar os vídeos MP4 para o armazenamento de blobs. O aplicativo usará a biblioteca de cliente em lote para criar um pool com três nós (VMs do Windows Server), criar um trabalho e adicionar tarefas de conversão de vídeo ao trabalho para ser executado nesses nós. Com as tarefas em execução, o aplicativo precisa monitorar seu status, verificar se foram concluídas com êxito e limpar recursos indesejados.