Exercício – Monitorizar a tarefa do Azure Batch na CLI

Concluído

Caso esteja a utilizar o Azure Batch para executar tarefas intensivas, muitas vezes, pretenderá saber qual o progresso das tarefas.

Como arquiteto de soluções para organizações sem fins lucrativos, você precisará de maneiras de acessar o que está acontecendo no Lote do Azure. Você também precisa determinar se os nós e as tarefas estão funcionando, até onde progrediram e se produziram arquivos de saída para download.

Nesta unidade, vai criar uma tarefa semelhante à tarefa da unidade anterior, monitorizar o progresso das tarefas e transferir os ficheiros de resultados produzidos pelas tarefas com a CLI do Azure.

Importante

Os exercícios neste módulo são opcionais. Para concluir os exercícios, você precisará de sua própria assinatura do Azure.

Monitorizar tarefas com a CLI

O Azure Batch processa todos os detalhes da criação e gestão dos nós de computação e do agendamento de tarefas para serem executadas nesses nós.

Quando criou as tarefas na última unidade, o Azure Batch colocou-as em fila para serem executadas no conjunto. Uma vez que os nós foram determinados como tendo capacidade disponível, o Azure Batch agendou as tarefas para serem executadas nesses nós.

No final da última unidade, eliminámos a tarefa, o que também eliminou todas as suas tarefas. Vamos agora criar uma nova tarefa e novas tarefas. Vale a pena realçar que a eliminação e a recriação de tarefas é uma operação relativamente rápida e permite-lhe separar facilmente experiências e projetos diferentes no Azure Batch. Por outro lado, excluir e recriar entidades de Lote de nível superior (como contas) leva mais tempo, porque o pool de Lotes precisa ser recriado e as máquinas virtuais alocadas.

  1. Inicie sessão no Portal do Azure.

  2. Abra o Cloud Shell selecionando o ícone do Cloud Shell (>_) no menu superior.

  3. Execute o seguinte comando no Cloud Shell para criar uma nova tarefa do Batch:

    az batch job create \
     --id myjob2 \
     --pool-id mypool
    

    Nomeámo-lo de forma diferente para evitar qualquer conflito com o trabalho da unidade anterior, que foi agendada para eliminação, mas ainda não necessariamente eliminada.

  4. Execute o seguinte comando para criar tarefas do Batch nesta nova tarefa:

    for i in {1..10}
    do
       az batch task create \
        --task-id mytask$i \
        --job-id myjob2 \
        --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'"
    done
    
  5. Execute o seguinte comando no Cloud Shell para visualizar o estado de uma das tarefas que criou:

    az batch task show \
     --job-id myjob2 \
     --task-id mytask1
    

Transferir o resultado da tarefa com a CLI

Para verificar se o trabalho em lote foi executado corretamente, você pode baixar e examinar os arquivos criados.

  1. Execute o seguinte comando no Cloud Shell para ser apresentada uma tabela de todos os ficheiros gerados por uma das tarefas que criou:

    az batch task file list \
     --job-id myjob2 \
     --task-id mytask5 \
     --output table
    

    Nota

    Se vir uma mensagem de The files of the specified task cannot be accessed as the task state is still active erro, aguarde alguns minutos e execute o comando novamente.

  2. Execute o seguinte comando no Cloud Shell para criar um diretório dedicado para os resultados das tarefas e navegue para o mesmo:

    mkdir taskoutputs && cd taskoutputs
    
  3. Execute o seguinte comando no Cloud Shell para transferir os ficheiros gerados por todas as tarefas que criou:

    for i in {1..10}
    do
    az batch task file download \
        --job-id myjob2 \
        --task-id mytask$i \
        --file-path stdout.txt \
        --destination ./stdout$i.txt
    done
    

    As tarefas têm um diretório de trabalho padrão e, por padrão, seu trabalho é direcionado para stdout.txt. Ao fazer looping, podemos redirecionar stdout.txt para versões numeradas do stdout.txt, cada uma das quais mostra o trabalho de uma determinada tarefa e qual nó foi usado para executá-la.

  4. Execute o seguinte comando para exibir o conteúdo de texto de alguns dos arquivos gerados por exemplo:

    cat stdout1.txt && cat stdout2.txt
    

    Este resultado mostra as diferentes tarefas agendadas em diferentes nós à medida que o agendador do Batch as processa.

    Novamente, deixaremos a conta do Lote do Azure e o pool de nós de trabalho no local para uso na próxima unidade, mas excluiremos o trabalho em lote. Uma vez que a tarefa do Batch age como um contentor para as suas tarefas do Batch, estas tarefas também serão eliminadas.

  5. Use o seguinte comando para excluir o trabalho em lote:

    az batch job delete --job-id myjob2 -y