Ejercicio: Creación de un trabajo de Azure Batch en la CLI para ejecutar la tarea paralela
La CLI de Azure le permite crear e implementar recursos de Azure Batch desde la línea de comandos.
Como el arquitecto de soluciones de la organización sin fines de lucro, quiere empezar por crear una solución de Batch para el escenario de OCR en Azure. Como primer paso, va a intentar crear una cuenta de Batch, un grupo de nodos de trabajo, un trabajo y tareas, todo esto con la CLI de Azure.
La CLI de Azure es una línea de comandos multiplataforma para crear y administrar recursos de Azure. Usa una sintaxis az noun verb --properties
coherente. Los comandos de la CLI para administrar Azure Batch siguen esta convención, por lo que todos los comandos adoptan el formato de az batch verb --properties
.
Importante
Los ejercicios de este módulo son opcionales. Para completar los ejercicios, necesitará su propia suscripción de Azure.
Creación de los recursos de Azure Batch
En primer lugar, creará la cuenta de Azure Batch y el grupo de nodos de trabajo para el escenario de prueba. Luego creará un trabajo de Batch y tareas para ejecutar en el grupo.
Creación de un grupo de recursos
Inicie sesión en Azure Portal.
Seleccione Grupos de recursos en el menú de la izquierda.
Seleccione + Create (+ Crear).
Complete el formulario para crear un grupo de recursos para el ejercicio y anote el nombre.
Creación de una cuenta de Azure Batch
En el portal, abra Cloud Shell, seleccione el icono de Cloud Shell (>_) en el menú superior. Use el menú desplegable de la parte superior de la ventana de terminal para asegurarse de que está en Bash.
Cree variables de entorno para el grupo de recursos y los recursos de Batch.
RESOURCE_GROUP=<your resource group> BATCH_ACCOUNT=batchaccount$RANDOM
Ejecute el comando siguiente en Cloud Shell para crear una cuenta de Azure Batch. Elija una de las ubicaciones siguientes:
westeurope,eastus,eastus2,westus,northcentralus,brazilsouth,northeurope,centralus,eastasia,japaneast,australiasoutheast,japanwest,koreasouth,koreacentral,southeastasia,southcentralus,australiaeast,southindia,centralindia,westindia,canadacentral,canadaeast,uksouth,ukwest,westcentralus,westus2,francecentral,southafricanorth
az batch account create \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --location <choose a location from the preceding list>
Ejecute el comando siguiente para iniciar sesión en la cuenta de Azure Batch:
az batch account login \ --name $BATCH_ACCOUNT \ --resource-group $RESOURCE_GROUP \ --shared-key-auth
Cree un grupo de tres máquinas virtuales Estándar A1 v2 que ejecuten Ubuntu 18.04:
az batch pool create \ --id mypool --vm-size Standard_A1_v2 \ --target-dedicated-nodes 3 \ --image canonical:ubuntuserver:18.04-LTS \ --node-agent-sku-id "batch.node.ubuntu 18.04"
Ejecute el comando siguiente para determinar de manera periódica si los nodos están listos:
az batch pool show --pool-id mypool \ --query "allocationState"
Cuando esta consulta muestra que los nodos son "estables", están listos para funcionar. Aunque aparezcan como "redimensionados", en realidad se están aprovisionando. Puede usar la tecla de flecha arriba para repetir el comando más reciente en Cloud Shell si quiere consultar el estado de los nodos más de una vez.
Ejecute el siguiente comando para crear un trabajo de Batch, que es una agrupación lógica para todas las tareas que se ejecutarán en los nodos:
az batch job create \ --id myjob \ --pool-id mypool
Ejecute el comando siguiente para crear tareas de Batch:
for i in {1..10} do az batch task create \ --task-id mytask$i \ --job-id myjob \ --command-line "/bin/bash -c 'echo \$(printenv | grep \AZ_BATCH_TASK_ID) processed by; echo \$(printenv | grep \AZ_BATCH_NODE_ID)'" done
Este bucle crea una serie de tareas de Batch numeradas, donde cada una de las cuales genera información sobre el identificador de tarea y el identificador de nodo implicados. Si examina detalladamente lo que ocurre aquí, verá algunas características de la forma en que funciona Azure Batch. Las tareas se programan de manera automática en nodos con capacidad disponible. Sin embargo, las variables de entorno que usamos (
AZ_BATCH_TASK_ID
yAZ_BATCH_NODE_ID
) para mostrar información sobre qué tarea está en ejecución en qué nodo, solo están disponibles en el contexto del usuario de la tarea, una cuenta predeterminada que se crea en cada nodo para ejecutar tareas. Además, el argumento--command-line
no se ejecuta directamente en un shell, por lo que deberá invocar de manera explícita el shell con/bin/bash -c
para usar comandos comoprintenv
ygrep
.Este bucle completa la implementación del trabajo de Azure Batch. Dejaremos la cuenta de Azure Batch y el grupo de nodos de trabajo para usarlos en el módulo siguiente, pero sí eliminaremos el trabajo de Batch. Como el trabajo de Batch actúa como contenedor para sus tareas de Batch, las tareas también se eliminan.
Ejecute el comando siguiente en Cloud Shell para eliminar el trabajo de Batch:
az batch job delete --job-id myjob -y