Aracılığıyla paylaş


Hızlı Başlangıç: Batch hesabı oluşturmak ve bir iş çalıştırmak için Azure CLI'yi kullanma

Bu hızlı başlangıçta, Batch kaynaklarını oluşturmak ve yönetmek için Azure CLI komutlarını ve betiklerini kullanarak Azure Batch'i kullanmaya başlama adımları gösterilmektedir. Sanal makine havuzu veya işlem düğümleri içeren bir Batch hesabı oluşturursunuz. Daha sonra havuz düğümlerinde çalışan görevlerle bir iş oluşturur ve çalıştırırsınız.

Bu hızlı başlangıcı tamamladıktan sonra Batch hizmetinin temel kavramlarını anlarsınız ve Batch'i daha gerçekçi ve daha büyük ölçekli iş yükleriyle kullanmaya hazır olursunuz.

Önkoşullar

  • Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.

  • Azure Cloud Shell veya Azure CLI.

    Bu hızlı başlangıçta Azure CLI komutlarını Azure Cloud Shell'de etkileşimli olarak çalıştırabilirsiniz. Cloud Shell'de komutları çalıştırmak için kod bloğunun sağ üst köşesindeki CloudShell'i Aç'ı seçin. Kodu kopyalamak için Kopyala'yı seçin ve çalıştırmak için Cloud Shell'e yapıştırın. Cloud Shell'i Azure portalından da çalıştırabilirsiniz. Cloud Shell her zaman Azure CLI'nın en son sürümünü kullanır.

    Alternatif olarak, komutları çalıştırmak için Azure CLI'yi yerel olarak yükleyebilirsiniz. Bu makaledeki adımlar Için Azure CLI sürüm 2.0.20 veya üzeri gerekir. Yüklü sürümünüzü ve bağımlı kitaplıklarınızı görmek için az version komutunu çalıştırın ve yükseltmek için az upgrade komutunu çalıştırın. Yerel yükleme kullanıyorsanız uygun komutu kullanarak Azure'da oturum açın.

Uyarı

Bazı bölgeler ve abonelik türleri için kota kısıtlamaları Batch hesabı veya düğüm oluşturma işleminin başarısız olmasına veya tamamlanmamasına neden olabilir. Bu durumda, ücretsiz olarak kota artışı isteyebilirsiniz. Daha fazla bilgi için bkz. Batch hizmeti kotaları ve sınırları.

Kaynak grubu oluşturma

Azure kaynak grubu oluşturmak için aşağıdaki az group create komutunu çalıştırın. Kaynak grubu, bu hızlı başlangıç için Azure kaynaklarını barındıran bir mantıksal kapsayıcıdır.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export REGION="canadacentral"
export RESOURCE_GROUP="qsBatch$RANDOM_SUFFIX"

az group create \
    --name $RESOURCE_GROUP \
    --location $REGION

Sonuç -ları:

{
    "id": "/subscriptions/xxxxx/resourceGroups/qsBatchxxx",
    "location": "eastus2",
    "managedBy": null,
    "name": "qsBatchxxx",
    "properties": {
         "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
}

Depolama hesabı oluşturma

Batch hesabınıza bağlanmak üzere bir Azure Depolama hesabı oluşturmak için az storage account create komutunu kullanın. Bu hızlı başlangıçta depolama hesabı kullanılmasa da, çoğu gerçek dünyadaki Batch iş yükleri uygulamaları dağıtmak ve giriş ve çıkış verilerini depolamak için bağlı bir depolama hesabı kullanır.

Kaynak grubunuzda bir Standard_LRS SKU depolama hesabı oluşturmak için aşağıdaki komutu çalıştırın:

export STORAGE_ACCOUNT="mybatchstorage$RANDOM_SUFFIX"

az storage account create \
    --resource-group $RESOURCE_GROUP \
    --name $STORAGE_ACCOUNT \
    --location $REGION \
    --sku Standard_LRS

Batch hesabı oluştur.

Kaynak grubunuzda bir Batch hesabı oluşturmak ve bunu depolama hesabıyla bağlamak için aşağıdaki az batch account create komutunu çalıştırın.

export BATCH_ACCOUNT="mybatchaccount$RANDOM_SUFFIX"

az batch account create \
    --name $BATCH_ACCOUNT \
    --storage-account $STORAGE_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --location $REGION

az batch account login komutunu çalıştırarak yeni Batch hesabında oturum açın . Batch ile hesabınızın kimliğini doğruladıktan sonra, bu oturumdaki sonraki az batch komutlar bu hesap bağlamını kullanır.

az batch account login \
    --name $BATCH_ACCOUNT \
    --resource-group $RESOURCE_GROUP \
    --shared-key-auth

İşlem düğümleri havuzu oluşturun

Batch hesabınızda linux işlem düğümleri havuzu oluşturmak için az batch pool create komutunu çalıştırın. Aşağıdaki örnek, Ubuntu 20.04 LTS işletim sistemi çalıştıran iki Standard_A1_v2 boyutlu VM'lerden oluşan bir havuz oluşturur. Bu düğüm boyutu, bu hızlı başlangıç örneği için iyi bir performans ve maliyet dengesi sunar.

export POOL_ID="myPool$RANDOM_SUFFIX"

az batch pool create \
    --id $POOL_ID \
    --image canonical:0001-com-ubuntu-server-focal:20_04-lts \
    --node-agent-sku-id "batch.node.ubuntu 20.04" \
    --target-dedicated-nodes 2 \
    --vm-size Standard_A1_v2

Batch havuzu hemen oluşturur, ancak işlem düğümlerinin ayrılması ve başlatılması birkaç dakika sürer. Havuz durumunu görmek için az batch pool show komutunu kullanın. Bu komut, havuzun tüm özelliklerini gösterir. Dilerseniz belirli özellikler için sorgu gönderebilirsiniz. Aşağıdaki komut, havuz ayırma durumu için sorgular:

az batch pool show --pool-id $POOL_ID \
    --query "{allocationState: allocationState}"

Sonuç -ları:

{
    "allocationState": "resizing"
}

Batch düğümleri ayırıp başlatırken havuz resizing durumundadır. Havuz durumu hala resizingiken bir iş ve görevler oluşturabilirsiniz. Ayırma durumu steady olduğunda ve tüm düğümler çalışıyorsa havuz görevleri çalıştırmaya hazırdır.

İş oluşturma

Az batch job create komutunu kullanarak havuzunuzda çalışacak bir Batch görevi oluşturun. Batch işlemi, bir veya daha fazla görevin mantıksal bir grubudur. İş, görevlerle ortak ayarları içerir, örneğin çalıştırılacak havuz gibi. Aşağıdaki örnek başlangıçta hiç görevi olmayan bir iş oluşturur.

export JOB_ID="myJob$RANDOM_SUFFIX"

az batch job create \
    --id $JOB_ID \
    --pool-id $POOL_ID

İş görevleri oluşturma

Batch, uygulamaları ve betikleri işlem düğümlerine dağıtmak için çeşitli yollar sunar. az batch task create komutunu kullanarak işte çalıştırılacak görevler oluşturun. Her görevin bir uygulama veya betik belirten bir komut satırı vardır.

Aşağıdaki Bash betiği, myTask1 ile myTask4 arasında adlandırılmış dört özdeş, paralel görev oluşturur. Görev komut satırı, işlem düğümünde Batch ortam değişkenlerini görüntüler ve 90 saniye bekler.

for i in {1..4}
do
   az batch task create \
    --task-id myTask$i \
    --job-id $JOB_ID \
    --command-line "/bin/bash -c 'printenv | grep AZ_BATCH; sleep 90s'"
done

Batch, işlem düğümlerine görevleri dağıtır.

Görev durumunu görüntüleme

Görevleri oluşturduktan sonra Batch, bunları havuzda çalıştırılmak üzere kuyruğa alır. Bir düğüm kullanılabilir olduğunda, bir görev düğüm üzerinde çalışır.

Batch görevlerinin durumunu görüntülemek için az batch task show komutunu kullanın. Aşağıdaki örnek, myTask1 durumuyla ilgili ayrıntıları göstermektedir.

az batch task show \
    --job-id $JOB_ID \
    --task-id myTask1

Komut çıktısı birçok ayrıntı içerir. Örneğin, bir exitCode değeri 0 görev komutunun başarıyla tamamlandığını gösterir. , nodeId görevi çalıştıran havuz düğümünün adını gösterir.

Görev çıktısını görüntüleme

Bir görevin bir düğümde oluşturduğu dosyaları listelemek için az batch task file list komutunu kullanın. Aşağıdaki komut, oluşturulan dosyaları myTask1 listeler:

# Wait for task to complete before downloading output
echo "Waiting for task to complete..."
while true; do
    STATUS=$(az batch task show --job-id $JOB_ID --task-id myTask1 --query "state" -o tsv)
    if [ "$STATUS" == "running" ]; then
        break
    fi
    sleep 10
done

az batch task file list --job-id $JOB_ID --task-id myTask1 --output table

Sonuçlar, aşağıdaki çıktıya benzer:

Sonuç -ları:

Name        URL                                                                                       Is Directory    Content Length
----------  ----------------------------------------------------------------------------------------  --------------  ----------------
stdout.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stdout.txt  False                  695
certs       https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/certs       True
wd          https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/wd          True
stderr.txt  https://mybatchaccount.eastus2.batch.azure.com/jobs/myJob/tasks/myTask1/files/stderr.txt  False                    0

az batch task file download komutu çıkış dosyalarını yerel bir dizine indirir. stdout.txt dosyasını indirmek için aşağıdaki örneği çalıştırın:

az batch task file download \
    --job-id $JOB_ID \
    --task-id myTask1 \
    --file-path stdout.txt \
    --destination ./stdout.txt

Standart çıktı dosyasının içeriğini bir metin düzenleyicisinde görüntüleyebilirsiniz. Aşağıdaki örnekte tipik bir stdout.txt dosyası gösterilmektedir. Bu görevin standart çıktısı, düğümde ayarlanan Azure Batch ortam değişkenlerini gösterir. Batch iş görevi komut satırlarınızda ve komut satırlarının çalıştırdığı uygulamalar ve betiklerde bu ortam değişkenlerine başvurabilirsiniz.

AZ_BATCH_TASK_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1
AZ_BATCH_NODE_STARTUP_DIR=/mnt/batch/tasks/startup
AZ_BATCH_CERTIFICATES_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/certs
AZ_BATCH_ACCOUNT_URL=https://mybatchaccount.eastus2.batch.azure.com/
AZ_BATCH_TASK_WORKING_DIR=/mnt/batch/tasks/workitems/myJob/job-1/myTask1/wd
AZ_BATCH_NODE_SHARED_DIR=/mnt/batch/tasks/shared
AZ_BATCH_TASK_USER=_azbatch
AZ_BATCH_NODE_ROOT_DIR=/mnt/batch/tasks
AZ_BATCH_JOB_ID=myJob
AZ_BATCH_NODE_IS_DEDICATED=true
AZ_BATCH_NODE_ID=tvm-257509324_2-20180703t215033z
AZ_BATCH_POOL_ID=myPool
AZ_BATCH_TASK_ID=myTask1
AZ_BATCH_ACCOUNT_NAME=mybatchaccount
AZ_BATCH_TASK_USER_IDENTITY=PoolNonAdmin

Sonraki adımlar

Bu başlangıç kılavuzunda bir Batch hesabı ve havuzu oluşturdunuz, bir Batch işi ve görevleri oluşturup çalıştırdınız ve düğümlerden görev çıktısını görüntülediniz. Batch hizmetinin temel kavramlarını anladığınıza göre, Batch'i daha gerçekçi ve daha büyük ölçekli iş yükleriyle kullanmaya hazırsınız. Azure Batch hakkında daha fazla bilgi için Azure Batch öğreticilerine devam edin.