Ejercicio: Supervisión del trabajo de Azure Batch en la CLI

Completado

Si usa Azure Batch para ejecutar tareas intensivas, querrá saber con frecuencia cómo van las tareas.

Como arquitecto de soluciones para organizaciones sin ánimo de lucro, siempre necesitará formas de acceder a lo que está pasando en Azure Batch. También deberá determinar si los nodos y las tareas funcionan, ver hasta dónde han progresado y si generaron archivos de salida descargables.

En esta unidad, creará un trabajo similar al de la unidad anterior, supervisará el progreso de sus tareas y descargará los archivos que las tareas generan como salida, todo esto con la CLI de Azure.

Importante

Los ejercicios de este módulo son opcionales. Para completar los ejercicios, necesitará su propia suscripción de Azure.

Supervisión de tareas con la CLI

Azure Batch controla todos los detalles de la creación y la administración de nodos de ejecución y la programación de trabajos para ejecutar en esos nodos.

Cuando creó las tareas en la última unidad, Azure Batch las puso en cola para su ejecución en el grupo. Como se consideraba que los nodos tenían capacidad disponible, Azure Batch programó las tareas para que se ejecutaran en esos nodos.

Al final de la última unidad, eliminamos el trabajo, lo que eliminó también todas sus tareas. Ahora vamos a crear un trabajo nuevo y tareas nuevas. Vale la pena tener en cuenta que eliminar y volver a crear las tareas es una operación bastante rápida que le permite separar fácilmente distintos experimentos y proyectos en Azure Batch. Por el contrario, eliminar y volver a crear entidades de Batch de nivel superior (como las cuentas) tarda más, porque es necesario volver a crear el grupo de Batch y asignar las máquinas virtuales.

  1. Inicie sesión en Azure Portal.

  2. Para abrir Cloud Shell, seleccione el icono de Cloud Shell (>_) en el menú superior.

  3. Ejecute el comando siguiente en Cloud Shell para crear un trabajo de Batch nuevo:

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

    Le pusimos un nombre distinto para evitar cualquier conflicto con el trabajo de la unidad anterior, que se programó para su eliminación, lo que no implica que ya esté eliminado.

  4. Ejecute el comando siguiente para crear tareas de Batch dentro de este trabajo nuevo:

    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. Ejecute el comando siguiente en Cloud Shell para ver el estado de una de las tareas que creó:

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

Descarga de la salida de la tarea con la CLI

Para comprobar que el trabajo por lotes se ejecutó correctamente, descargue y examine los archivos que creó.

  1. Ejecute el comando siguiente en Cloud Shell para mostrar una tabla de todos los archivos generados por una de las tareas que creó:

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

    Nota:

    Si ve un mensaje de error The files of the specified task cannot be accessed as the task state is still active, espere unos minutos y vuelva a ejecutar el comando.

  2. Ejecute el comando siguiente en Cloud Shell para crear un directorio dedicado para las salidas de la tarea y navegue a él:

    mkdir taskoutputs && cd taskoutputs
    
  3. Ejecute el comando siguiente en Cloud Shell para descargar los archivos generados por todas las tareas que creó:

    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
    

    Las tareas tienen un directorio de trabajo predeterminado y, de manera predeterminada, su trabajo se dirige a stdout.txt. Mediante un bucle, es posible redirigir stdout.txt a versiones numeradas de stdout.txt, donde cada una de las cuales muestre el trabajo de una tarea determinada y el nodo que se usó para ejecutarla.

  4. Ejecute el siguiente comando para ver el contenido del texto de un par de los archivos generados por el ejemplo:

    cat stdout1.txt && cat stdout2.txt
    

    Esta salida muestra que se están programando distintas tareas en distintos nodos a medida que el programador de Batch las procesa.

    De nuevo, dejaremos la cuenta de Azure Batch y el grupo de nodos de trabajo para usarlos en la unidad siguiente, pero sí eliminaremos el trabajo de Batch. Como el trabajo de Batch actúa como contenedor para sus tareas de Batch, estas tareas también se eliminan.

  5. Utilice el comando siguiente para eliminar el trabajo por lotes:

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