Sviluppare soluzioni di calcolo parallele su larga scala con BatchDevelop large-scale parallel compute solutions with Batch

Questa panoramica dei componenti di base del servizio Azure Batch illustra le funzionalità e le risorse primarie del servizio che gli sviluppatori di Batch possono usare per compilare soluzioni di calcolo parallele su larga scala.In this overview of the core components of the Azure Batch service, we discuss the primary service features and resources that Batch developers can use to build large-scale parallel compute solutions.

Si usano molte delle risorse e delle funzionalità illustrate in questo articolo, sia per sviluppare un'applicazione o un servizio di calcolo distribuito che rilascia chiamate API REST dirette che quando si usa uno degli SDK di Batch.Whether you're developing a distributed computational application or service that issues direct REST API calls or you're using one of the Batch SDKs, you'll use many of the resources and features discussed in this article.

Suggerimento

Per un'introduzione più generale al servizio Batch, vedere Panoramica delle funzionalità di Batch per sviluppatori.For a higher-level introduction to the Batch service, see Basics of Azure Batch.

Flusso di lavoro servizio BatchBatch service workflow

Il flusso di lavoro generale seguente è proprio di quasi tutte le applicazioni e i servizi che usano il servizio Batch per l'elaborazione di carichi di lavoro paralleli:The following high-level workflow is typical of nearly all applications and services that use the Batch service for processing parallel workloads:

  1. Caricare i file di dati da elaborare in un account di archiviazione di Azure.Upload the data files that you want to process to an Azure Storage account. Batch include il supporto predefinito per accedere all'archivio BLOB di Azure e le attività possono scaricare questi file nei nodi di calcolo quando vengono eseguite.Batch includes built-in support for accessing Azure Blob storage, and your tasks can download these files to compute nodes when the tasks are run.
  2. Caricare i file dell'applicazione che verranno eseguiti dalle attività.Upload the application files that your tasks will run. Questi file possono essere binari o script con le relative dipendenze e vengono eseguiti dalle attività nei processi.These files can be binaries or scripts and their dependencies, and are executed by the tasks in your jobs. Le attività possono scaricare questi file dall'account di archiviazione oppure è possibile usare la funzionalità Pacchetti dell'applicazione di Batch per la gestione e la distribuzione di applicazioni.Your tasks can download these files from your Storage account, or you can use the application packages feature of Batch for application management and deployment.
  3. Creare un pool di nodi di calcolo.Create a pool of compute nodes. Quando si crea un pool, si specifica il numero di nodi di calcolo per il pool, le dimensioni e il sistema operativo.When you create a pool, you specify the number of compute nodes for the pool, their size, and the operating system. Quando ogni attività del processo viene eseguita, viene assegnata per l'esecuzione a uno dei nodi del pool.When each task in your job runs, it's assigned to execute on one of the nodes in your pool.
  4. Creare un processo.Create a job. Un processo gestisce una raccolta di attività.A job manages a collection of tasks. Ogni processo viene associato a un pool specifico in cui verranno eseguite le attività del processo.You associate each job to a specific pool where that job's tasks will run.
  5. Aggiungere attività al processo.Add tasks to the job. Ogni attività esegue l'applicazione o lo script caricato per elaborare i file di dati scaricati dall'account di archiviazione.Each task runs the application or script that you uploaded to process the data files it downloads from your Storage account. Ogni attività, una volta completata, può caricare l'output in Archiviazione di Azure.As each task completes, it can upload its output to Azure Storage.
  6. Monitorare lo stato del processo e recuperare l'output dell'attività da Archiviazione di Azure.Monitor job progress and retrieve the task output from Azure Storage.

Le sezioni seguenti illustrano queste e altre risorse di Batch che abilitano lo scenario di calcolo distribuito.The following sections discuss these and the other resources of Batch that enable your distributed computational scenario.

Nota

Per usare il servizio Batch, è necessario un account Batch.You need a Batch account to use the Batch service. La maggior parte delle soluzioni Batch usa anche un account di archiviazione di Azure associato per il recupero e l'archiviazione dei file.Most Batch solutions also use an associated Azure Storage account for file storage and retrieval.

Risorse del servizio BatchBatch service resources

Alcune delle risorse seguenti, ovvero account, nodi di calcolo, pool, processi e attività, sono richieste da tutte le soluzioni che usano il servizio Batch.Some of the following resources--accounts, compute nodes, pools, jobs, and tasks--are required by all solutions that use the Batch service. Altre risorse, come le pianificazioni di processi e i pacchetti dell'applicazione, sono funzionalità utili ma facoltative.Others, like job schedules and application packages, are helpful, but optional, features.

AccountAccount

Un account Batch è un'entità identificata in modo univoco all'interno del servizio Batch.A Batch account is a uniquely identified entity within the Batch service. Tutte le operazioni di elaborazione sono associata a un account Batch.All processing is associated with a Batch account.

È possibile creare un account Batch di Azure usando il portale di Azure o a livello di codice, ad esempio con la libreria di gestione .NET per Batch.You can create an Azure Batch account using the Azure portal or programmatically, such as with the Batch Management .NET library. Quando si crea l'account, è possibile associare un account di archiviazione di Azure per l'archiviazione di applicazioni e dati di input e output correlati al processo.When creating the account, you can associate an Azure storage account for storing job-related input and output data or applications.

È possibile eseguire più carichi di lavoro Batch in un solo account Batch o distribuire i carichi di lavoro tra gli account Batch nella stessa sottoscrizione, ma in aree di Azure diverse.You can run multiple Batch workloads in a single Batch account, or distribute your workloads among Batch accounts that are in the same subscription, but in different Azure regions.

Nota

Quando si crea un account Batch, è in genere consigliabile scegliere la modalità Servizio Batch predefinita, in cui i pool vengono associati in background nelle sottoscrizioni gestite da Azure.When creating a Batch account, you should generally choose the default Batch service mode, in which pools are allocated behind the scenes in Azure-managed subscriptions. Nella modalità Sottoscrizione utente alternativa, che non è più consigliata per la maggior parte degli scenari, le VM e le altre risorse di Batch vengono create direttamente nella sottoscrizione durante la creazione di un pool.In the alternative user subscription mode, which is no longer recommended for most scenarios, Batch VMs and other resources are created directly in your subscription when a pool is created. Per creare un account Batch in modalità Sottoscrizione utente, è anche necessario registrare la sottoscrizione in Azure Batch e associare l'account ad Azure Key Vault.To create a Batch account in user subscription mode, you must also register your subscription with Azure Batch, and associate the account with an Azure Key Vault.

Account di archiviazione di AzureAzure Storage account

La maggior parte delle soluzioni Batch usa l'Archiviazione di Azure per archiviare i file delle risorse e i file di output.Most Batch solutions use Azure Storage for storing resource files and output files.

Batch supporta attualmente solo il tipo di account di archiviazione per utilizzo generico, come descritto nel passaggio 5 di Creare un account di archiviazione in Informazioni sugli account di archiviazione di Azure.Batch currently supports only the general-purpose storage account type, as described in step 5 of Create a storage account in About Azure storage accounts. Le attività di Batch, incluse le attività standard, le attività di avvio, le attività di preparazione del processo e le attività di rilascio del processo, devono specificare file di risorse che si trovano negli account di archiviazione per utilizzo generico.Your Batch tasks (including standard tasks, start tasks, job preparation tasks, and job release tasks) must specify resource files that reside in general-purpose storage accounts.

Nodo di calcoloCompute node

Un nodo di calcolo è una macchina virtuale (VM) di Azure o una VM del servizio cloud dedicata all'elaborazione di una parte del carico di lavoro dell'applicazione.A compute node is an Azure virtual machine (VM) or cloud service VM that is dedicated to processing a portion of your application's workload. Le dimensioni di un nodo determinano il numero di core CPU, la capacità di memoria e le dimensioni del file system locale allocati al nodo.The size of a node determines the number of CPU cores, memory capacity, and local file system size that is allocated to the node. È possibile creare pool di nodi Windows o Linux usando i servizi cloud di Azure, immagini di Marketplace per Macchine virtuali di Azure oppure immagini personalizzate preparate dall'utente.You can create pools of Windows or Linux nodes by using Azure Cloud Services, images from the Azure Virtual Machines Marketplace, or custom images that you prepare. Per altre informazioni su queste opzioni, vedere la sezione Pool seguente.See the following Pool section for more information on these options.

I nodi possono eseguire qualsiasi eseguibile o script supportato dall'ambiente del sistema operativo del nodo,Nodes can run any executable or script that is supported by the operating system environment of the node. inclusi *.exe, *.cmd, *.bat e script di PowerShell per Windows e file binari, shell e script di Python per Linux.This includes *.exe, *.cmd, *.bat and PowerShell scripts for Windows--and binaries, shell, and Python scripts for Linux.

Tutti i nodi di Calcolo in Batch includono anche:All compute nodes in Batch also include:

poolPool

Un pool è una raccolta di nodi in cui viene eseguita l'applicazione.A pool is a collection of nodes that your application runs on. Il pool può essere creato manualmente dall'utente o automaticamente dal servizio Batch quando si specifica il lavoro da eseguire.The pool can be created manually by you, or automatically by the Batch service when you specify the work to be done. È possibile creare e gestire un pool che soddisfi i requisiti relativi alle risorse dell'applicazione.You can create and manage a pool that meets the resource requirements of your application. Un pool può essere usato solo dall'account Batch in cui è stato creato.A pool can be used only by the Batch account in which it was created. Un account Batch può avere più pool.A Batch account can have more than one pool.

I pool di Azure Batch sono basati sulla piattaforma di calcolo Azure.Azure Batch pools build on top of the core Azure compute platform. Offrono allocazione su larga scala, installazione di applicazioni, distribuzione dei dati, monitoraggio dell'integrità e regolazione flessibile del numero di nodi di calcolo in un pool (ridimensionamento).They provide large-scale allocation, application installation, data distribution, health monitoring, and flexible adjustment of the number of compute nodes within a pool (scaling).

A ogni nodo aggiunto a un pool viene assegnato un nome univoco e un indirizzo IP.Every node that is added to a pool is assigned a unique name and IP address. Quando un nodo viene rimosso da un pool, vengono perse tutte le modifiche apportate al sistema operativo o ai file e il relativo nome e indirizzo IP vengono rilasciati per uso futuro.When a node is removed from a pool, any changes that are made to the operating system or files are lost, and its name and IP address are released for future use. Quando un nodo esce da un pool, la sua durata è terminata.When a node leaves a pool, its lifetime is over.

Quando si crea un pool, è possibile specificare gli attributi seguenti:When you create a pool, you can specify the following attributes:

  • Versione e sistema operativo dei nodi di calcoloCompute node operating system and version
  • Tipo di nodo di calcolo e numero di nodi di destinazioneCompute node type and target number of nodes
  • Dimensioni dei nodi di calcoloSize of the compute nodes
  • Criteri di ridimensionamentoScaling policy
  • Criteri di pianificazione attivitàTask scheduling policy
  • Stato delle comunicazioni dei nodi di calcoloCommunication status for compute nodes
  • Attività di avvio per i nodi di calcoloStart tasks for compute nodes
  • Pacchetti dell'applicazioneApplication packages
  • Network configurationNetwork configuration

Ognuna di queste sezioni è descritta in modo più dettagliato nelle sezioni seguenti.Each of these settings is described in more detail in the following sections.

Importante

Gli account Batch hanno una quota predefinita che limita il numero di core in ogni account.Batch accounts have a default quota that limits the number of cores in a Batch account. Il numero di core corrisponde al numero di nodi di calcolo.The number of cores corresponds to the number of compute nodes. Le quote predefinite e le istruzioni su come aumentare una quota sono disponibili in Quote e limiti del servizio Batch.You can find the default quotas and instructions on how to increase a quota in Quotas and limits for the Azure Batch service. Se il pool non raggiungere il numero di nodi di destinazione, la causa potrebbe essere la quota di core.If your pool is not achieving its target number of nodes, the core quota might be the reason.

Versione e sistema operativo dei nodi di calcoloCompute node operating system and version

Quando si crea un pool di Batch, è possibile specificare la configurazione delle macchine virtuali di Azure e il tipo di sistema operativo da eseguire in ogni nodo di calcolo nel pool.When you create a Batch pool, you can specify the Azure virtual machine configuration and the type of operating system you want to run on each compute node in the pool. I due tipi di configurazioni disponibili in Batch sono:The two types of configurations available in Batch are:

  • Configurazione macchina virtuale, che specifica che il pool è composto da macchine virtuali di Azure.The Virtual Machine Configuration, which specifies that the pool is comprised of Azure virtual machines. È possibile creare queste VM da immagini Linux o Windows.These VMs may be created from either Linux or Windows images.

    Quando si crea un pool basato su Configurazione macchina virtuale, è necessario specificare non solo le dimensioni dei nodi e l'origine delle immagini usate per crearli, ma anche il riferimento a un'immagine della macchina virtuale e lo SKU dell'agente del nodo Batch da installare nei nodi.When you create a pool based on the Virtual Machine Configuration, you must specify not only the size of the nodes and the source of the images used to create them, but also the virtual machine image reference and the Batch node agent SKU to be installed on the nodes. Per altre informazioni sulla specifica di queste proprietà del pool, vedere Effettuare il provisioning di nodi di calcolo Linux nei pool di Azure Batch.For more information about specifying these pool properties, see Provision Linux compute nodes in Azure Batch pools. È anche possibile collegare uno o più dischi di dati vuoti a VM in pool create da immagini del Marketplace oppure includere i dischi di dati nelle immagini personalizzate usate per creare le macchine virtuali.You can optionally attach one or more empty data disks to pool VMs created from Marketplace images, or include data disks in custom images used to create the VMs.

  • Cloud Services Configuration (Configurazione servizi cloud), che specifica che il pool è composto da nodi di Servizi cloud di Azure.The Cloud Services Configuration, which specifies that the pool is comprised of Azure Cloud Services nodes. Servizi cloud fornisce solo nodi di calcolo di Windows.Cloud Services provide Windows compute nodes only.

    I sistemi operativi disponibili per i pool Configurazione servizi cloud sono elencati in Rilasci del sistema operativo guest Azure e matrice di compatibilità dell'SDK.Available operating systems for Cloud Services Configuration pools are listed in the Azure Guest OS releases and SDK compatibility matrix. Quando si crea un pool contenente nodi di Servizi cloud, è necessario specificare dimensioni dei nodi e Famiglia del sistema operativo.When you create a pool that contains Cloud Services nodes, you need to specify the node size and its OS Family. La distribuzione di Servizi cloud in Azure è più veloce rispetto alle macchine virtuali che eseguono Windows.Cloud Services are deployed to Azure more quickly than virtual machines running Windows. Se si vuole disporre di pool di nodi di calcolo di Windows, le prestazioni di Servizi cloud in termini di tempo di distribuzione potrebbero essere migliori.If you want pools of Windows compute nodes, you may find that Cloud Services provide a performance benefit in terms of deployment time.

    • La famiglia del sistema operativo determina anche le versioni di .NET installate con il sistema operativo.The OS Family also determines which versions of .NET are installed with the OS.
    • Analogamente ai ruoli di lavoro nei servizi cloud, è possibile specificare una Versione sistema operativo. Per altre informazioni sui ruoli di lavoro, vedere la sezione Informazioni sui servizi cloud in Perché scegliere Servizi cloud.As with worker roles within Cloud Services, you can specify an OS Version (for more information on worker roles, see the Tell me about cloud services section in the Cloud Services overview).
    • Analogamente ai ruoli di lavoro, è consigliabile specificare * per la Versione sistema operativo, in modo che i nodi vengano aggiornati automaticamente senza doversi occupare delle nuove versioni rilasciate.As with worker roles, we recommend that you specify * for the OS Version so that the nodes are automatically upgraded, and there is no work required to cater to newly released versions. Il caso d'uso principale per la selezione di una versione specifica del sistema operativo consiste nell'assicurare la compatibilità delle applicazioni, che permette l'esecuzione del test di compatibilità con le versioni precedenti prima di consentire l'aggiornamento della versione.The primary use case for selecting a specific OS version is to ensure application compatibility, which allows backward compatibility testing to be performed before allowing the version to be updated. Dopo la convalida, la Versione sistema operativo per il pool può essere aggiornata ed è possibile installare la nuova immagine del sistema operativo. Eventuali attività in esecuzione vengono interrotte e accodate di nuovo.After validation, the OS Version for the pool can be updated and the new OS image can be installed--any running tasks are interrupted and requeued.

Quando si crea un pool, è necessario selezionare il valore appropriato di nodeAgentSkuId, a seconda del sistema operativo dell'immagine di base del disco rigido virtuale.When you create a pool, you need to select the appropriate nodeAgentSkuId, depending on the OS of the base image of your VHD. È possibile ottenere un mapping tra gli ID SKU dell'agente del nodo e i relativi riferimenti all'immagine del sistema operativo chiamando l'operazione di elenco degli SKU degli agenti dei nodi supportati.You can get a mapping of available node agent SKU ID's to their OS Image references by calling the List Supported Node Agent SKUs operation.

Immagini personalizzate per pool di macchine virtualiCustom images for Virtual Machine pools

Per usare un'immagine personalizzata, sarà necessario preparare l'immagine generalizzandola.To use a custom image, you'll need to prepare the image by generalizing it. Per informazioni sulla preparazione di immagini Linux personalizzate da VM di Azure, vedere Come creare un'immagine di una macchina virtuale o un disco rigido virtuale.For information about preparing custom Linux images from Azure VMs, see How to create an image of a virtual machine or VHD. Per informazioni sulla preparazione di immagini Windows personalizzate da macchine virtuali di Azure, vedere Creare un'immagine gestita di una macchina virtuale generalizzata in Azure.For information about preparing custom Windows images from Azure VMs, see Create a managed image of a generalized VM in Azure.

Per i requisiti e i passaggi dettagliati, vedere Usare un'immagine personalizzata per creare un pool di macchine virtuali.For detailed requirements and steps, see Use a custom image to create a pool of virtual machines.

Supporto dei contenitori nei pool di macchine virtualiContainer support in Virtual Machine pools

Quando si crea un pool Configurazione macchina virtuale usando le API di Batch, è possibile impostare il pool per eseguire attività in contenitori Docker.When creating a Virtual Machine Configuration pool using the Batch APIs, you can set up the pool to run tasks in Docker containers. Attualmente è necessario creare il pool usando un'immagine che supporti contenitori Docker.Currently, you must create the pool using an image that supports Docker containers. Usare l'immagine Windows Server 2016 Datacenter con contenitori di Azure Marketplace oppure specificare un'immagine di VM personalizzata che includa Docker Community Edition o Enterprise Edition e tutti i driver necessari.Use the Windows Server 2016 Datacenter with Containers image from the Azure Marketplace, or supply a custom VM image that includes Docker Community Edition or Enterprise Edition and any required drivers. Le impostazioni del pool devono includere una configurazione del contenitore che copia le immagini del contenitore nelle macchine virtuali quando viene creato il pool.The pool settings must include a container configuration that copies container images to the VMs when the pool is created. Le attività eseguite nel pool potranno quindi fare riferimento a immagini del contenitore e opzioni di esecuzione del contenitore.Tasks that run on the pool can then reference the container images and container run options.

Per altre informazioni, vedere Eseguire applicazioni contenitore Docker in Azure Batch.For more information, see Run Docker container applications on Azure Batch.

Tipo di nodo di calcolo e numero di nodi di destinazioneCompute node type and target number of nodes

Quando si crea un pool, è possibile specificare i tipi di nodi di calcolo desiderati e il numero di destinazione di ognuno.When you create a pool, you can specify which types of compute nodes you want and the target number for each. I due tipi di nodi di calcolo sono i seguenti:The two types of compute nodes are:

  • Nodi di calcolo dedicati.Dedicated compute nodes. I nodi di calcolo dedicati sono riservati per i carichi di lavoro.Dedicated compute nodes are reserved for your workloads. Sono più costosi dei nodi con priorità bassa, ma non vengono mai superati.They are more expensive than low-priority nodes, but they are guaranteed to never be preempted.

  • Nodi di calcolo con priorità bassa.Low-priority compute nodes. I nodi con priorità bassa sfruttano la capacità in eccesso di Azure per l'esecuzione dei carichi di lavoro di Batch.Low-priority nodes take advantage of surplus capacity in Azure to run your Batch workloads. I nodi con priorità bassa hanno un costo orario inferiore a quello dei nodi dedicati e supportano carichi di lavoro che richiedono una potenza di calcolo elevata.Low-priority nodes are less expensive per hour than dedicated nodes, and enable workloads requiring a lot of compute power. Per altre informazioni, vedere Usare le VM con priorità bassa in Batch.For more information, see Use low-priority VMs with Batch.

    Può verificarsi il superamento dei nodi di calcolo con priorità bassa quando Azure ha capacità in eccesso insufficiente.Low-priority compute nodes may be preempted when Azure has insufficient surplus capacity. In caso di superamento di un nodo durante l'esecuzione di attività, le attività vengono accodate ed eseguite di nuovo quando il nodo di calcolo torna disponibile.If a node is preempted while running tasks, the tasks are requeued and run again once a compute node becomes available again. I nodi con priorità bassa sono utili per i carichi di lavoro con tempi di completamento del processo flessibili e in cui il lavoro è distribuito tra più nodi.Low-priority nodes are a good option for workloads where the job completion time is flexible and the work is distributed across many nodes. Prima di scegliere di usare nodi con priorità bassa per lo scenario, assicurarsi che l'eventuale quantità di lavoro persa a causa del processo di prelazione sia minima e facile da ricreare.Before you decide to use low-priority nodes for your scenario, make sure that any work lost due to preemption will be minimal and easy to recreate.

Lo stesso pool può includere nodi di calcolo con priorità bassa e nodi di calcolo dedicati.You can have both low-priority and dedicated compute nodes in the same pool. Ogni tipo di nodo, con priorità bassa e dedicato, ha un'impostazione di destinazione propria, per cui è possibile specificare il numero desiderato di nodi.Each type of node — low-priority and dedicated — has its own target setting, for which you can specify the desired number of nodes.

Il numero di nodi di calcolo viene definito numero di destinazione, perché in alcuni casi il pool può non raggiungere il numero desiderato di nodi.The number of compute nodes is referred to as a target because, in some situations, your pool might not reach the desired number of nodes. Ad esempio, un pool potrebbe non realizzare la destinazione se prima raggiunge la quota core per l'account Batch.For example, a pool might not achieve the target if it reaches the core quota for your Batch account first. Il pool potrebbe non realizzare la destinazione, inoltre, se al pool è stata applicata una formula di scalabilità automatica che limita il numero massimo di nodi.Or, the pool might not achieve the target if you have applied an auto-scaling formula to the pool that limits the maximum number of nodes.

Per informazioni sui prezzi per i nodi di calcolo dedicati e con priorità bassa, vedere Prezzi di Batch.For pricing information for both low-priority and dedicated compute nodes, see Batch Pricing.

Dimensioni dei nodi di calcoloSize of the compute nodes

Cloud Services Configuration (Configurazione servizi cloud) sono elencate in Dimensioni dei servizi cloud.Cloud Services Configuration compute node sizes are listed in Sizes for Cloud Services. Batch supporta tutte le dimensioni dei servizi cloud tranne ExtraSmall, STANDARD_A1_V2 e STANDARD_A2_V2.Batch supports all Cloud Services sizes except ExtraSmall, STANDARD_A1_V2, and STANDARD_A2_V2.

Le dimensioni disponibili per i nodi di calcolo Configurazione macchina virtuale sono elencate in Dimensioni delle macchine virtuali in Azure (Linux) e Dimensioni delle macchine virtuali in Azure (Windows).Virtual Machine Configuration compute node sizes are listed in Sizes for virtual machines in Azure (Linux) and Sizes for virtual machines in Azure (Windows). Batch supporta tutte le dimensioni delle VM di Azure tranne STANDARD_A0 e quelle con l'archiviazione Premium (serie STANDARD_GS, STANDARD_DS e STANDARD_DSV2).Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series).

Quando si seleziona una dimensione per il nodo di calcolo, tenere in considerazione le caratteristiche e i requisiti delle applicazioni che si eseguiranno nei nodi.When selecting a compute node size, consider the characteristics and requirements of the applications you'll run on the nodes. Per determinare la dimensioni del nodo più appropriate e convenienti, considerare vari aspetti, ad esempio se si tratta di un'applicazione multithreading e la quantità di memoria che utilizza.Aspects like whether the application is multithreaded and how much memory it consumes can help determine the most suitable and cost-effective node size. Le dimensioni del nodo vengono in genere selezionate presupponendo che in un nodo venga eseguita un'attività alla volta.It's typical to select a node size assuming one task will run on a node at a time. È possibile,tuttavia, che più attività (e quindi più istanze dell'applicazione) vengano eseguite in parallelo nei nodi di calcolo durante l'esecuzione del processo.However, it is possible to have multiple tasks (and therefore multiple application instances) run in parallel on compute nodes during job execution. In questo caso, è normale scegliere una dimensione maggiore per il nodo per soddisfare la richiesta più elevata di esecuzione di attività parallele.In this case, it is common to choose a larger node size to accommodate the increased demand of parallel task execution. Per altre informazioni, vedere Criteri di pianificazione delle attività.See Task scheduling policy for more information.

Tutti i nodi in un pool devono hanno le stesse dimensioni.All of the nodes in a pool are the same size. Se si prevede di eseguire applicazioni con requisiti di sistema e/o livelli di carico diversi, è consigliabile usare pool separati.If you intend to run applications with differing system requirements and/or load levels, we recommend that you use separate pools.

Criteri di ridimensionamentoScaling policy

Per carichi di lavoro dinamici, è possibile scrivere e applicare una formula di ridimensionamento automatico a un pool.For dynamic workloads, you can write and apply an auto-scaling formula to a pool. Il servizio Batch valuta periodicamente la formula e rettifica il numero di nodi nel pool in base a vari parametri relativi a pool, processi e attività specificati.The Batch service periodically evaluates your formula and adjusts the number of nodes within the pool based on various pool, job, and task parameters that you can specify.

Criteri di pianificazione attivitàTask scheduling policy

L'opzione di configurazione Numero massimo attività per nodo determina il numero massimo di attività che è possibile eseguire in parallelo in ogni nodo di calcolo del pool.The max tasks per node configuration option determines the maximum number of tasks that can be run in parallel on each compute node within the pool.

La configurazione predefinita specifica che viene eseguita una sola attività alla volta in un nodo, ma in alcuni scenari risulta utile eseguire due o più attività contemporaneamente in un nodo.The default configuration specifies that one task at a time runs on a node, but there are scenarios where it is beneficial to have two or more tasks executed on a node simultaneously. Vedere lo scenario di esempio nell'articolo Ottimizzare l'utilizzo delle risorse di calcolo di Azure Batch con attività dei nodi simultanee per informazioni su come sfruttare al meglio più attività per nodo.See the example scenario in the concurrent node tasks article to see how you can benefit from multiple tasks per node.

È anche possibile specificare un tipo di riempimento che determina se Batch distribuisce le attività in modo uniforme a tutti i nodi di un pool o se satura ogni nodo con il numero massimo di attività prima di assegnarle ad altri nodi.You can also specify a fill type which determines whether Batch spreads the tasks evenly across all nodes in a pool, or packs each node with the maximum number of tasks before assigning tasks to another node.

Stato delle comunicazioni dei nodi di calcoloCommunication status for compute nodes

Nella maggior parte degli scenari le attività funzionano in modo indipendente e non devono comunicare tra loro.In most scenarios, tasks operate independently and do not need to communicate with one another. È tuttavia possibile che siano presenti applicazioni in cui le attività devono comunicare, ad esempio negli scenari MPI.However, there are some applications in which tasks must communicate, like MPI scenarios.

È possibile configurare un pool per consentire la comunicazione tra nodi, di modo che i nodi all'interno di un pool passano comunicare durante l'esecuzione.You can configure a pool to allow internode communication, so that nodes within a pool can communicate at runtime. Quando la comunicazione tra nodi è abilitata, i nodi nei pool Cloud Services Configuration (Configurazione servizi cloud) possono comunicare tra loro tramite porte superiori alla 1100 e i pool Configurazione macchina virtuale non limitano il traffico su nessuna porta.When internode communication is enabled, nodes in Cloud Services Configuration pools can communicate with each other on ports greater than 1100, and Virtual Machine Configuration pools do not restrict traffic on any port.

Si noti che l'abilitazione della comunicazione tra nodi ha effetto anche sul posizionamento dei nodi nel cluster e potrebbe limitare il numero massimo di nodi in un pool a causa di restrizioni relative alla distribuzione.Note that enabling internode communication also impacts the placement of the nodes within clusters and might limit the maximum number of nodes in a pool because of deployment restrictions. Se l'applicazione non richiede la comunicazione tra nodi, il servizio Batch può allocare al pool un numero potenzialmente elevato di nodi da diversi cluster e data center per consentire una maggiore capacità di elaborazione parallela.If your application does not require communication between nodes, the Batch service can allocate a potentially large number of nodes to the pool from many different clusters and datacenters to enable increased parallel processing power.

Attività di avvio per i nodi di calcoloStart tasks for compute nodes

L' attività di avvio facoltativa viene eseguita in ogni nodo aggiunto al pool e ogni volta che si riavvia o si ricrea l'immagine del nodo.The optional start task executes on each node as that node joins the pool, and each time a node is restarted or reimaged. L'attività di avvio è utile soprattutto per preparare i nodi di calcolo per l'esecuzione di attività, ad esempio l'installazione delle applicazioni eseguite dalle attività nei nodi di calcolo.The start task is especially useful for preparing compute nodes for the execution of tasks, like installing the applications that your tasks run on the compute nodes.

Pacchetti dell'applicazioneApplication packages

È possibile specificare pacchetti dell'applicazione da distribuire nei nodi di calcolo del pool.You can specify application packages to deploy to the compute nodes in the pool. I pacchetti dell'applicazione consentono una distribuzione e un controllo delle versioni più semplici delle applicazioni eseguite dalle attività.Application packages provide simplified deployment and versioning of the applications that your tasks run. I pacchetti dell'applicazione specificati per un pool vengono installati in ogni nodo di calcolo aggiunto al pool e ogni volta che un nodo viene riavviato o ne viene ricreata l'immagine.Application packages that you specify for a pool are installed on every node that joins that pool, and every time a node is rebooted or reimaged.

Nota

I pacchetti dell'applicazione sono supportati in tutti i pool di Batch creati dopo il 5 luglio 2017.Application packages are supported on all Batch pools created after 5 July 2017. Sono supportati nei pool di Batch creati tra il 10 marzo 2016 e il 5 luglio 2017 solo se il pool è stato creato usando una configurazione del servizio cloud.They are supported on Batch pools created between 10 March 2016 and 5 July 2017 only if the pool was created using a Cloud Service configuration. I pool di Batch creati prima del 10 marzo 2016 non supportano i pacchetti dell'applicazione.Batch pools created prior to 10 March 2016 do not support application packages. Per altre informazioni sull'uso di pacchetti dell'applicazione per distribuire applicazioni ai nodi Batch, vedere Distribuire le applicazioni nei nodi di calcolo con i pacchetti dell'applicazione Batch.For more information about using application packages to deploy your applications to your Batch nodes, see Deploy applications to compute nodes with Batch application packages.

Network configurationNetwork configuration

È possibile specificare la subnet di una rete virtuale di Azure in cui devono essere creati i nodi di calcolo del pool.You can specify the subnet of an Azure virtual network (VNet) in which the pool's compute nodes should be created. Per altre informazioni, vedere la sezione Pool della configurazione di rete.See the Pool network configuration section for more information.

ProcessoJob

Un processo è una raccolta di attività.A job is a collection of tasks. Gestisce la modalità di esecuzione dei calcoli da parte delle attività nei nodi di calcolo di un pool.It manages how computation is performed by its tasks on the compute nodes in a pool.

  • Il processo specifica il pool in cui eseguire il lavoro.The job specifies the pool in which the work is to be run. È possibile creare un nuovo pool per ogni processo o usare un pool per più processi.You can create a new pool for each job, or use one pool for many jobs. È possibile creare un pool per ogni processo associato a una pianificazione o per tutti i processi associati a una pianificazione.You can create a pool for each job that is associated with a job schedule, or for all jobs that are associated with a job schedule.
  • È possibile specificare una priorità del processo facoltativa.You can specify an optional job priority. Quando si invia un processo con priorità più alta rispetto ad altri processi in corso, le attività del processo con la priorità più alta vengono inserite nella coda prima delle attività del processo con priorità più bassa.When a job is submitted with a higher priority than jobs that are currently in progress, the tasks for the higher-priority job are inserted into the queue ahead of tasks for the lower-priority jobs. Le attività nei processi con priorità più bassa già in esecuzione non vengono messe in attesa.Tasks in lower-priority jobs that are already running are not preempted.
  • È possibile usare i vincoli del processo per specificare determinati limiti per i processi:You can use job constraints to specify certain limits for your jobs:

    È possibile impostare un tempo massimo in modo che, se un processo viene eseguito per un periodo più lungo del tempo specificato, il processo e tutte le attività vengano terminati.You can set a maximum wallclock time, so that if a job runs for longer than the maximum wallclock time that is specified, the job and all of its tasks are terminated.

    Batch può rilevare e quindi provare a eseguire di nuovo le attività non riuscite.Batch can detect and then retry failed tasks. È possibile specificare il numero massimo di tentativi per l'attività sotto forma di vincolo, indicando anche se un'attività viene sempre ripetuta oppure mai.You can specify the maximum number of task retries as a constraint, including whether a task is always or never retried. Per nuovo tentativo si intende che l'attività viene riaccodata per essere eseguita di nuovo.Retrying a task means that the task is requeued to be run again.

  • L'applicazione client può aggiungere attività a un processo oppure è possibile specificare un'attività del gestore di processi.Your client application can add tasks to a job, or you can specify a job manager task. Un'attività del gestore di processi contiene le informazioni necessarie per creare le attività obbligatorie per un processo. L'attività del gestore di processi viene eseguita in uno dei nodi di calcolo del pool.A job manager task contains the information that is necessary to create the required tasks for a job, with the job manager task being run on one of the compute nodes in the pool. L'attività del gestore di processi viene gestita in modo specifico da Batch, ovvero viene accodata non appena si crea il processo e viene riavviata se l'operazione non riesce.The job manager task is handled specifically by Batch--it is queued as soon as the job is created, and is restarted if it fails. Un'attività del gestore di processi è obbligatoria per i processi creati da una pianificazione di processi, perché è l'unico modo per definire le attività prima della creazione di istanze del processo.A job manager task is required for jobs that are created by a job schedule because it is the only way to define the tasks before the job is instantiated.
  • Per impostazione predefinita, i processi rimangono nello stato attivo dopo il completamento di tutte le attività del processo.By default, jobs remain in the active state when all tasks within the job are complete. È possibile modificare questo comportamento in modo che il processo venga terminato automaticamente una volta completate tutte le relative attività.You can change this behavior so that the job is automatically terminated when all tasks in the job are complete. Impostare la proprietà onAllTasksComplete del processo (OnAllTasksComplete in Batch .NET) su terminatejob per terminare automaticamente il processo quando tutte le relative attività risultano completate.Set the job's onAllTasksComplete property (OnAllTasksComplete in Batch .NET) to terminatejob to automatically terminate the job when all of its tasks are in the completed state.

    Si noti che il servizio Batch considera un processo senza attività quando ha tutte le relative attività completate.Note that the Batch service considers a job with no tasks to have all of its tasks completed. Di conseguenza, questa opzione viene usata più comunemente con un' attività del gestore di processi.Therefore, this option is most commonly used with a job manager task. Se si vuole usare la chiusura automatica di processi senza un gestore di processi, è necessario impostare inizialmente la proprietà onAllTasksComplete di un nuovo processo su noaction, quindi impostarlo su terminatejob solo dopo aver completato l'aggiunta di attività al processo.If you want to use automatic job termination without a job manager, you should initially set a new job's onAllTasksComplete property to noaction, then set it to terminatejob only after you've finished adding tasks to the job.

Priorità del processoJob priority

È possibile assegnare una priorità ai processi creati in Batch.You can assign a priority to jobs that you create in Batch. Il servizio Batch usa il valore di priorità del processo per determinare l'ordine di programmazione dei processi in un account, da non confondere con un processo pianificato.The Batch service uses the priority value of the job to determine the order of job scheduling within an account (this is not to be confused with a scheduled job). I valori di priorità sono compresi in un intervallo da -1000 a 1000, dove -1000 è la priorità più bassa e 1000 la più alta.The priority values range from -1000 to 1000, with -1000 being the lowest priority and 1000 being the highest. Per aggiornare la priorità di un processo richiamare l'operazione Aggiornare le proprietà di un processo (Batch REST) o modificare la proprietà CloudJob.Priority (Batch .NET).To update the priority of a job, call the Update the properties of a job operation (Batch REST), or modify the CloudJob.Priority property (Batch .NET).

All'interno dello stesso account i processi con priorità più alta hanno precedenza di pianificazione rispetto ai processi con priorità inferiori.Within the same account, higher-priority jobs have scheduling precedence over lower-priority jobs. Un processo con un valore di priorità più elevato in un account non ha tale precedenza di pianificazione rispetto a un altro processo con un valore di priorità inferiore in un account diverso.A job with a higher-priority value in one account does not have scheduling precedence over another job with a lower-priority value in a different account.

La pianificazione di attività dei pool è indipendente.Job scheduling across pools is independent. Tra pool diversi, non è garantito che un processo con priorità più elevato venga pianificato per primo se il relativo pool associato non ha un numero sufficiente di nodi inattivi.Between different pools, it is not guaranteed that a higher-priority job is scheduled first if its associated pool is short of idle nodes. Nello stesso pool i processi con lo stesso livello di priorità hanno la stessa probabilità di essere pianificati.In the same pool, jobs with the same priority level have an equal chance of being scheduled.

Scheduled jobsScheduled jobs

Le programmazioni dei processi consentono di creare processi ricorrenti nel servizio Batch.Job schedules enable you to create recurring jobs within the Batch service. Una pianificazione del processo specifica quando eseguire i processi e include le specifiche per i processi da eseguire.A job schedule specifies when to run jobs and includes the specifications for the jobs to be run. È possibile specificare la durata della pianificazione, per quanto tempo e quando è effettiva la pianificazione, e con quale frequenza vengono creati i processi durante quell'intervallo di tempo.You can specify the duration of the schedule--how long and when the schedule is in effect--and how frequently jobs are created during the scheduled period.

AttivitàTask

Un'attività è un'unità di calcolo che viene associata a un processoA task is a unit of computation that is associated with a job. e viene eseguita su un nodo.It runs on a node. Le attività vengono assegnate a un nodo per l'esecuzione o vengono accodate fino a quando non diventa disponibile un nodo.Tasks are assigned to a node for execution, or are queued until a node becomes free. In parole semplici, un'attività esegue uno o più programmi o script in un nodo di calcolo per eseguire le operazioni necessarie.Put simply, a task runs one or more programs or scripts on a compute node to perform the work you need done.

Quando si crea un'attività, è possibile specificare:When you create a task, you can specify:

  • La riga di comando dell'attività.The command line for the task. È la riga di comando che esegue l'applicazione o lo script nel nodo di calcolo.This is the command line that runs your application or script on the compute node.

    È importante notare che la riga di comando non viene effettivamente eseguita in una shell.It is important to note that the command line does not actually run under a shell. Non può quindi usare in modo nativo i vantaggi delle funzionalità della shell, ad esempio l'espansione delle variabili di ambiente, incluso PATH.Therefore, it cannot natively take advantage of shell features like environment variable expansion (this includes the PATH). Per usare queste funzionalità, è necessario richiamare la shell nella riga di comando, ad esempio avviando cmd.exe nei nodi Windows o /bin/sh in Linux:To take advantage of such features, you must invoke the shell in the command line--for example, by launching cmd.exe on Windows nodes or /bin/sh on Linux:

    cmd /c MyTaskApplication.exe %MY_ENV_VAR%

    /bin/sh -c MyTaskApplication $MY_ENV_VAR

    Se le attività devono eseguire un'applicazione o uno script non presente nell'elemento PATH del nodo o fare riferimento alle variabili di ambiente, richiamare la shell in modo esplicito nella riga di comando dell'attività.If your tasks need to run an application or script that is not in the node's PATH or reference environment variables, invoke the shell explicitly in the task command line.

  • File di risorse contenenti i dati da elaborare.Resource files that contain the data to be processed. Questi file vengono copiati automaticamente nel nodo dall'archivio BLOB in un account di archiviazione di Azure di uso generico prima che venga eseguita la riga di comando dell'attività.These files are automatically copied to the node from Blob storage in a general-purpose Azure Storage account before the task's command line is executed. Per altre informazioni, vedere le sezioni Attività di avvio e File e directory.For more information, see the sections Start task and Files and directories.
  • Variabili di ambiente richieste dall'applicazione.The environment variables that are required by your application. Per altre informazioni, vedere la sezione Impostazioni di ambiente per le attività .For more information, see the Environment settings for tasks section.
  • Vincoli in base ai quali viene eseguita l'attività.The constraints under which the task should execute. Ad esempio, i vincoli includono l'intervallo di tempo massimo in cui l'attività può essere eseguita, il numero massimo di ripetizioni dei tentativi di un'attività non riuscita e l'intervallo di tempo massimo in cui i file vengono mantenuti nella directory di lavoro dell'attività.For example, constraints include the maximum time that the task is allowed to run, the maximum number of times a failed task should be retried, and the maximum time that files in the task's working directory are retained.
  • Pacchetti dell'applicazione per distribuire il nodo di calcolo in cui è pianificata l'esecuzione dell'attività.Application packages to deploy to the compute node on which the task is scheduled to run. Application packages consentono una distribuzione e un controllo delle versioni più semplici delle applicazioni eseguite dalle attività.Application packages provide simplified deployment and versioning of the applications that your tasks run. I pacchetti dell'applicazione a livello di attività sono particolarmente utili in ambienti di pool condivisi, in cui diversi processi vengono eseguiti in un pool e il pool non viene eliminato quando viene completato un processo.Task-level application packages are especially useful in shared-pool environments, where different jobs are run on one pool, and the pool is not deleted when a job is completed. Se il processo ha meno attività che nodi nel pool, i pacchetti dell'applicazione di attività possono ridurre il trasferimento dei dati, perché l'applicazione viene distribuita solo nei nodi che eseguono le attività.If your job has fewer tasks than nodes in the pool, task application packages can minimize data transfer since your application is deployed only to the nodes that run tasks.
  • Un riferimento all'immagine del contenitore nell'hub Docker oppure in un registro privato e altre impostazioni per creare un contenitore Docker in cui l'attività viene eseguita nel nodo.A container image reference in Docker Hub or a private registry and additional settings to create a Docker container in which the task runs on the node. Queste informazioni vengono specificate solo se il pool è definito con una configurazione del contenitore.You only specify this information if the pool is set up with a container configuration.

Oltre alle attività definite dall'utente per eseguire il calcolo in un nodo, il servizio Batch fornisce anche le attività speciali seguenti:In addition to tasks you define to perform computation on a node, the following special tasks are also provided by the Batch service:

Attività di avvioStart task

Associando un' attività di avvio a un pool, è possibile preparare l'ambiente operativo dei rispettivi nodi.By associating a start task with a pool, you can prepare the operating environment of its nodes. È ad esempio possibile eseguire azioni quali l'installazione delle applicazioni che vengono eseguite dalle attività o l'avvio dei processi in background.For example, you can perform actions like installing the applications that your tasks run or starting background processes. L'attività di avvio viene eseguita a ogni avvio di un nodo per tutto il tempo in cui questa rimane nel pool, incluso il momento in cui il nodo viene aggiunto al pool e in cui viene riavviato o ne viene ricreata l'immagine.The start task runs every time a node starts, for as long as it remains in the pool--including when the node is first added to the pool and when it is restarted or reimaged.

Il vantaggio principale dell'attività di avvio consiste nel fatto che può contenere tutte le informazioni necessarie per configurare un nodo di calcolo e installare le applicazioni necessarie per l'esecuzione dell'attività.A primary benefit of the start task is that it can contain all of the information that is necessary to configure a compute node and install the applications that are required for task execution. Pertanto, l'aumento del numero di nodi in un pool è semplice quanto specificare il nuovo numero di nodi di destinazione.Therefore, increasing the number of nodes in a pool is as simple as specifying the new target node count. L'attività di avvio fornisce al servizio Batch le informazioni necessarie per configurare i nuovi nodi e prepararli per l'accettazione delle attività.The start task provides the Batch service the information that is needed to configure the new nodes and get them ready for accepting tasks.

Come per qualsiasi attività di Azure Batch, è possibile specificare un elenco di file di risorse in Archiviazione di Azure, oltre a una riga di comando da eseguire.As with any Azure Batch task, you can specify a list of resource files in Azure Storage, in addition to a command line to be executed. Il servizio Batch copia prima di tutto i file di risorse nel nodo da Archiviazione di Azure, quindi esegue la riga di comando.The Batch service first copies the resource files to the node from Azure Storage, and then runs the command line. Per un'attività di avvio del pool l'elenco di file include in genere l'applicazione dell'attività e le rispettive dipendenze.For a pool start task, the file list typically contains the task application and its dependencies.

L'attività di avvio può tuttavia includere anche dati di riferimento che devono essere usati da tutte le attività in esecuzione nel nodo di calcolo.However, the start task could also include reference data to be used by all tasks that are running on the compute node. La riga di comando di un'attività di avvio può ad esempio eseguire un'operazione robocopy per copiare i file dell'applicazione, che sono stati specificati come file di risorse e scaricati nel nodo, dalla directory di lavoro dell'attività di avvio alla cartella condivisa ed eseguire quindi un file MSI o setup.exe.For example, a start task's command line could perform a robocopy operation to copy application files (which were specified as resource files and downloaded to the node) from the start task's working directory to the shared folder, and then run an MSI or setup.exe.

È in genere consigliabile che il servizio Batch attenda il completamento dell'attività di avvio prima di considerare il nodo pronto per l'assegnazione di attività, ma questo comportamento è configurabile.It is typically desirable for the Batch service to wait for the start task to complete before considering the node ready to be assigned tasks, but you can configure this.

Se un'attività di avvio non riesce in un nodo di calcolo, lo stato del nodo viene aggiornato per riflettere l'errore e al nodo non viene assegnata alcuna attività.If a start task fails on a compute node, then the state of the node is updated to reflect the failure, and the node is not assigned any tasks. Un'attività di avvio può non riuscire se si verifica un problema durante la copia dei file di risorse dall'archiviazione o se il processo eseguito dalla riga di comando restituisce un codice di uscita diverso da zero.A start task can fail if there is an issue copying its resource files from storage, or if the process executed by its command line returns a nonzero exit code.

Se si aggiunge o si aggiorna l'attività di avvio per un pool esistente, è necessario riavviare i relativi nodi di calcolo per applicare l'attività di avvio ai nodi.If you add or update the start task for an existing pool, you must reboot its compute nodes for the start task to be applied to the nodes.

Nota

La dimensione totale di un'attività di avvio deve essere inferiore o uguale a 32768 caratteri, inclusi i file di risorse e le variabili di ambiente.The total size of a start task must be less than or equal to 32768 characters, including resource files and environment variables. Per assicurarsi che l'attività di avvio soddisfi questo requisito, è possibile usare uno dei due approcci seguenti:To ensure that your start task meets this requirement, you can use one of two approaches:

  1. È possibile usare i pacchetti dell'applicazione per distribuire le applicazioni o i dati in ogni nodo del pool di Batch.You can use application packages to distribute applications or data across each node in your Batch pool. Per altre informazioni sui pacchetti dell'applicazione, vedere Distribuire le applicazioni nei nodi di calcolo con i pacchetti dell'applicazione Batch.For more information about application packages, see Deploy applications to compute nodes with Batch application packages.
  2. È possibile creare manualmente un archivio compresso contenente i file delle applicazioni.You can manually create a zipped archive containing your applications files. Caricare l'archivio compresso in Archiviazione di Azure come BLOB.Upload your zipped archive to Azure Storage as a blob. Specificare l'archivio compresso come file di risorse per l'attività di avvio.Specify the zipped archive as a resource file for your start task. Prima di eseguire la riga di comando per l'attività di avvio, decomprimere l'archivio dalla riga di comando.Before you run the command line for your start task, unzip the archive from the command line.

    Per decomprimere l'archivio, è possibile usare lo strumento di archiviazione preferito.To unzip the archive, you can use the archiving tool of your choice. Sarà necessario includere lo strumento usato per decomprimere l'archivio come file di risorse per l'attività di avvio.You will need to include the tool that you use to unzip the archive as a resource file for the start task.

Attività di gestione dei processiJob manager task

Si usa in genere un' attività del gestore di processi per controllare e/o monitorare l'esecuzione dei processi, ad esempio per creare e inviare le attività per un processo, determinare le attività aggiuntive da eseguire e stabilire quando il lavoro è stato completato.You typically use a job manager task to control and/or monitor job execution--for example, to create and submit the tasks for a job, determine additional tasks to run, and determine when work is complete. Un'attività del gestore di processi, tuttavia, non è limitata a queste attività.However, a job manager task is not restricted to these activities. Si tratta di un'attività completa, che consente di eseguire qualsiasi azione necessaria per il processo.It is a fully fledged task that can perform any actions that are required for the job. Un'attività del gestore di processi può ad esempio scaricare un file specificato come parametro, analizzare il contenuto del file e inviare attività aggiuntive in base a quel contenuto.For example, a job manager task might download a file that is specified as a parameter, analyze the contents of that file, and submit additional tasks based on those contents.

Un'attività di gestione dei processi viene avviata prima di tutte le altre attivitàA job manager task is started before all other tasks. Fornisce le funzionalità seguenti:It provides the following features:

  • Viene inviata automaticamente come attività dal servizio Batch quando si crea il processo.It is automatically submitted as a task by the Batch service when the job is created.
  • Viene pianificata per l'esecuzione prima di altre attività di un processo.It is scheduled to execute before the other tasks in a job.
  • Il nodo associato è l'ultimo a essere rimosso da un pool quando il pool viene ridimensionato.Its associated node is the last to be removed from a pool when the pool is being downsized.
  • La sua terminazione può essere associata alla terminazione di tutte le attività del processo.Its termination can be tied to the termination of all tasks in the job.
  • A questa attività viene assegnata la priorità più alta quando deve essere riavviata.A job manager task is given the highest priority when it needs to be restarted. Se un nodo inattivo non è disponibile, il servizio Batch può terminare una delle altre attività in esecuzione nel pool per consentire l'esecuzione dell'attività del gestore di processi.If an idle node is not available, the Batch service might terminate one of the other running tasks in the pool to make room for the job manager task to run.
  • Un'attività del gestore di processi in un processo non ha la priorità sulle attività di altri processi.A job manager task in one job does not have priority over the tasks of other jobs. Tra i processi vengono rispettate solo le priorità a livello di processo.Across jobs, only job-level priorities are observed.

Attività di preparazione e rilascio dei processiJob preparation and release tasks

Il servizio Batch offre attività di preparazione dei processi per la configurazione dell'esecuzione pre-processo.Batch provides job preparation tasks for pre-job execution setup. Le attività di rilascio dei processi vengono usate per manutenzione o pulizia post-processo.Job release tasks are for post-job maintenance or cleanup.

  • Attività di preparazione del processo: viene eseguita in tutti i nodi di calcolo pianificati per l'esecuzione di attività, prima dell'esecuzione di qualsiasi altra attività di un processo.Job preparation task: A job preparation task runs on all compute nodes that are scheduled to run tasks, before any of the other job tasks are executed. Per copiare i dati condivisi da tutte le attività, ma univoci per il processo, ad esempio, è possibile usare l'attività di preparazione del processo.You can use a job preparation task to copy data that is shared by all tasks, but is unique to the job, for example.
  • Attività di rilascio del processo: dopo aver completato il processo, viene eseguita un'attività di rilascio del processo in ogni nodo del pool che ha eseguito almeno un'attività.Job release task: When a job has completed, a job release task runs on each node in the pool that executed at least one task. È possibile, ad esempio, usare l'attività di rilascio del processo per eliminare i dati copiati dall'attività di preparazione del processo o comprimere e caricare i dati del log di diagnostica.You can use a job release task to delete data that is copied by the job preparation task, or to compress and upload diagnostic log data, for example.

Sia le attività di preparazione del processo sia quelle di rilascio del processo consentono di specificare una riga di comando da eseguire quando viene richiamata l'attività.Both job preparation and release tasks allow you to specify a command line to run when the task is invoked. Le attività offrono funzionalità quali download di file, esecuzione con privilegi elevati, variabili di ambiente personalizzate, durata massima di esecuzione, numero di tentativi e periodo di conservazione dei file.They offer features like file download, elevated execution, custom environment variables, maximum execution duration, retry count, and file retention time.

Per altre informazioni sulle attività di preparazione e rilascio dei processi, vedere Eseguire attività di preparazione e completamento dei processi nei nodi di calcolo di Azure Batch.For more information on job preparation and release tasks, see Run job preparation and completion tasks on Azure Batch compute nodes.

Attività a istanze multipleMulti-instance task

Un' attività a istanze multiple è un'attività configurata per l'esecuzione contemporanea in più nodi di calcolo.A multi-instance task is a task that is configured to run on more than one compute node simultaneously. Con le attività a istanze multiple è possibile abilitare scenari di tipo che richiedono un gruppo di nodi di calcolo allocati insieme per elaborare un singolo carico di lavoro, ad esempio MPI (Message Passing Interface).With multi-instance tasks, you can enable high-performance computing scenarios that require a group of compute nodes that are allocated together to process a single workload (like Message Passing Interface (MPI)).

Per una discussione dettagliata sull'esecuzione di processi MPI in Batch usando la libreria Batch .NET, vedere Usare le attività a istanze multiple per eseguire applicazioni MPI (Message Passing Interface) in Azure Batch.For a detailed discussion on running MPI jobs in Batch by using the Batch .NET library, check out Use multi-instance tasks to run Message Passing Interface (MPI) applications in Azure Batch.

Dipendenze dell'attivitàTask dependencies

Le relazioni tra attività, come suggerito dal nome, consentono di specificare che un'attività dipende dal completamento di altre attività prima della rispettiva esecuzione.Task dependencies, as the name implies, allow you to specify that a task depends on the completion of other tasks before its execution. Questa funzionalità fornisce il supporto nelle situazioni in cui un'attività di tipo "downstream" utilizza l'output di un'attività di tipo "upstream" oppure quando un'attività upstream esegue un'inizializzazione richiesta da un'attività downstream.This feature provides support for situations in which a "downstream" task consumes the output of an "upstream" task--or when an upstream task performs some initialization that is required by a downstream task. Per usare questa funzionalità, prima è necessario abilitare le relazioni tra attività nel processo batch.To use this feature, you must first enable task dependencies on your Batch job. Per ogni attività che dipende da un'altra (o da più altre), specificare quindi le attività da cui dipende tale attività.Then, for each task that depends on another (or many others), you specify the tasks which that task depends on.

Con le relazioni tra attività, è possibile configurare scenari come i seguenti:With task dependencies, you can configure scenarios like the following:

  • L'attivitàB dipende dall'attivitàA, ovvero l'esecuzione dell'attivitàB inizierà solo dopo il completamento dell'attivitàA.taskB depends on taskA (taskB will not begin execution until taskA has completed).
  • L'attivitàC dipende sia dall'attivitàA che dall'attivitàB.taskC depends on both taskA and taskB.
  • L'attivitàD dipende da un intervallo di attività, ad esempio le attività da 1 a 10, prima che venga eseguita.taskD depends on a range of tasks, such as tasks 1 through 10, before it executes.

Vedere Relazioni tra attività in Azure Batch e l'esempio di codice TaskDependencies nel repository azure-batch-samples in GitHub per altri dettagli su questa funzionalità.Check out Task dependencies in Azure Batch and the TaskDependencies code sample in the azure-batch-samples GitHub repository for more in-depth details on this feature.

Impostazioni di ambiente per le attivitàEnvironment settings for tasks

Ogni attività eseguita dal servizio Batch ha accesso a variabili di ambiente che imposta sui nodi di calcolo.Each task executed by the Batch service has access to environment variables that it sets on compute nodes. Sono incluse variabili di ambiente definite dal servizio Batch (service-defined) e variabili di ambiente personalizzate che è possibile definire per le attività.This includes environment variables defined by the Batch service (service-defined) and custom environment variables that you can define for your tasks. Le applicazioni e gli script eseguiti dalle attività hanno accesso a queste variabili di ambiente durante l'esecuzione.The applications and scripts your tasks execute have access to these environment variables during execution.

È possibile impostare variabili di ambiente personalizzate a livello di attività o di processo popolando le proprietà delle impostazioni di ambiente per queste entità.You can set custom environment variables at the task or job level by populating the environment settings property for these entities. Vedere ad esempio l'operazione Aggiungere un'attività a un processo (API Batch REST) o le proprietà CloudTask.EnvironmentSettings e CloudJob.CommonEnvironmentSettings in Batch .NET.For example, see the Add a task to a job operation (Batch REST API), or the CloudTask.EnvironmentSettings and CloudJob.CommonEnvironmentSettings properties in Batch .NET.

L'applicazione o il servizio client può ottenere le variabili di ambiente di un'attività, sia quelle definite dal servizio che quelle personalizzate, usando l'operazione Ottenere informazioni su un'attività (Batch REST) o accedendo alla proprietà CloudTask.EnvironmentSettings (Batch .NET).Your client application or service can obtain a task's environment variables, both service-defined and custom, by using the Get information about a task operation (Batch REST) or by accessing the CloudTask.EnvironmentSettings property (Batch .NET). I processi eseguiti in un nodo di calcolo possono accedere a queste e ad altre variabili di ambiente nel nodo, ad esempio usando la sintassi familiare %VARIABLE_NAME% (Windows) o $VARIABLE_NAME (Linux).Processes executing on a compute node can access these and other environment variables on the node, for example, by using the familiar %VARIABLE_NAME% (Windows) or $VARIABLE_NAME (Linux) syntax.

È possibile trovare un elenco completo di tutte le variabili di ambiente definite dal servizio in Compute node environment variables (Variabili di ambiente dei nodi di calcolo).You can find a full list of all service-defined environment variables in Compute node environment variables.

File e directoryFiles and directories

Ogni attività ha una directory di lavoro in cui crea zero o più file e directory.Each task has a working directory under which it creates zero or more files and directories. Questa directory di lavoro può essere usata per archiviare il programma eseguito dall'attività, i dati elaborati e l'output dell'elaborazione eseguita dall'attività.This working directory can be used for storing the program that is run by the task, the data that it processes, and the output of the processing it performs. Tutti i file e le directory di un'attività sono proprietà dell'utente dell'attività.All files and directories of a task are owned by the task user.

Il servizio Batch espone una parte del file system in un nodo come directory radice.The Batch service exposes a portion of the file system on a node as the root directory. Le attività possono accedere a questa directory facendo riferimento alla variabile di ambiente AZ_BATCH_NODE_ROOT_DIR .Tasks can access the root directory by referencing the AZ_BATCH_NODE_ROOT_DIR environment variable. Per altre informazioni sull'uso delle variabili di ambiente, vedere Impostazioni di ambiente per le attività.For more information about using environment variables, see Environment settings for tasks.

La directory radice contiene la struttura di directory seguente:The root directory contains the following directory structure:

Struttura di directory dei nodi di calcolo

  • shared: questa directory fornisce l'accesso in lettura/scrittura a tutte le attività eseguite in un nodo.shared: This directory provides read/write access to all tasks that run on a node. Le attività eseguite nel nodo possono creare, leggere, aggiornare ed eliminare file in questa directory.Any task that runs on the node can create, read, update, and delete files in this directory. Le attività possono accedere a questa directory facendo riferimento alla variabile di ambiente AZ_BATCH_NODE_SHARED_DIR .Tasks can access this directory by referencing the AZ_BATCH_NODE_SHARED_DIR environment variable.
  • startup: questa directory viene usata da un'attività di avvio come directory di lavoro.startup: This directory is used by a start task as its working directory. Tutti i file scaricati nel nodo dall'attività di avvio vengono archiviati qui.All of the files that are downloaded to the node by the start task are stored here. L'attività di avvio può creare, leggere, aggiornare ed eliminare file in tale directory.The start task can create, read, update, and delete files under this directory. Le attività possono accedere a questa directory facendo riferimento alla variabile di ambiente AZ_BATCH_NODE_STARTUP_DIR .Tasks can access this directory by referencing the AZ_BATCH_NODE_STARTUP_DIR environment variable.
  • Attività: viene creata una directory per ogni attività in esecuzione sul nodo,Tasks: A directory is created for each task that runs on the node. accessibile tramite un riferimento alla variabile di ambiente AZ_BATCH_TASK_DIR.It is accessed by referencing the AZ_BATCH_TASK_DIR environment variable.

    All'interno di ogni directory di attività, il servizio Batch crea una directory di lavoro (wd), il cui percorso univoco viene specificato dalla variabile di ambiente AZ_BATCH_TASK_WORKING_DIR.Within each task directory, the Batch service creates a working directory (wd) whose unique path is specified by the AZ_BATCH_TASK_WORKING_DIR environment variable. Questa directory fornisce l'accesso in lettura/scrittura all'attività.This directory provides read/write access to the task. L'attività può creare, leggere, aggiornare ed eliminare file in tale directory.The task can create, read, update, and delete files under this directory. Questa directory viene mantenuta in base al vincolo RetentionTime specificato per l'attività.This directory is retained based on the RetentionTime constraint that is specified for the task.

    stdout.txt e stderr.txt: questi file vengono scritti nella cartella dell'attività durante l'esecuzione di quest'ultima.stdout.txt and stderr.txt: These files are written to the task folder during the execution of the task.

Importante

Quando un nodo viene rimosso dal pool, vengono rimossi tutti i file archiviati nel nodo.When a node is removed from the pool, all of the files that are stored on the node are removed.

Pacchetti dell'applicazioneApplication packages

La funzionalità relativa ai pacchetti dell'applicazione consente di gestire e distribuire con facilità le applicazioni ai nodi di calcolo nei pool.The application packages feature provides easy management and deployment of applications to the compute nodes in your pools. È possibile caricare e gestire più versioni delle applicazioni eseguite dalle attività, inclusi i relativi file binari e i file di supporto,You can upload and manage multiple versions of the applications run by your tasks, including their binaries and support files. quindi distribuire automaticamente una o più applicazioni nei nodi di calcolo del pool.Then you can automatically deploy one or more of these applications to the compute nodes in your pool.

È possibile specificare i pacchetti dell'applicazione a livello di pool e di attività.You can specify application packages at the pool and task level. Quando si specificano pacchetti dell'applicazione del pool, l'applicazione viene distribuita in ogni nodo del pool.When you specify pool application packages, the application is deployed to every node in the pool. Quando si specificano pacchetti dell'applicazione di attività, l'applicazione viene distribuita solo ai nodi pianificati per eseguire almeno una delle attività del processo, appena prima dell'esecuzione della riga di comando dell'attività.When you specify task application packages, the application is deployed only to nodes that are scheduled to run at least one of the job's tasks, just before the task's command line is run.

Batch gestisce i dettagli dell'utilizzo di Archiviazione di Azure per archiviare i pacchetti dell'applicazione e distribuirli nei nodi di calcolo, in modo da semplificare il codice e ridurre il sovraccarico in termini di gestione.Batch handles the details of working with Azure Storage to store your application packages and deploy them to compute nodes, so both your code and management overhead can be simplified.

Per altre informazioni sulla funzionalità relativa ai pacchetti dell'applicazione, vedere Distribuire le applicazioni nei nodi di calcolo con i pacchetti dell'applicazione Batch.To find out more about the application package feature, check out Deploy applications to compute nodes with Batch application packages.

Nota

Se si aggiungono pacchetti dell'applicazione a un pool esistente , è necessario riavviare i relativi nodi di calcolo per distribuire i pacchetti dell'applicazione nei nodi.If you add pool application packages to an existing pool, you must reboot its compute nodes for the application packages to be deployed to the nodes.

Durata del pool e dei nodi di calcoloPool and compute node lifetime

Quando si progetta una soluzione Azure Batch, è necessario prendere una decisione a livello di progettazione per stabilire come e quando vengono creati i pool e per quanto tempo vengono mantenuti disponibili i nodi di calcolo all'interno dei pool.When you design your Azure Batch solution, you have to make a design decision about how and when pools are created, and how long compute nodes within those pools are kept available.

Da un lato, è possibile creare un pool per ogni processo inviato ed eliminare il pool al termine dell'esecuzione dell'attività.On one end of the spectrum, you can create a pool for each job that you submit, and delete the pool as soon as its tasks finish execution. In questo modo è possibile massimizzare l'utilizzo, perché i nodi vengono allocati solo quando è necessario e vengono arrestati non appena sono inattivi.This maximizes utilization because the nodes are only allocated when needed, and shut down as soon as they're idle. Mentre ciò significa che il processo deve attendere l'allocazione dei nodi, è importante notare che le attività vengono pianificate per l'esecuzione non appena i nodi risultano disponibili e allocati individualmente e dopo il completamento dell'attività di avvio.While this means that the job must wait for the nodes to be allocated, it's important to note that tasks are scheduled for execution as soon as nodes are individually available, allocated, and the start task has completed. Il servizio Batch not attende che tutti i nodi di un pool siano disponibili prima di assegnare le attività ai nodi,Batch does not wait until all nodes within a pool are available before assigning tasks to the nodes. assicurando quindi il massimo utilizzo di tutti i nodi disponibili.This ensures maximum utilization of all available nodes.

Dall'altro lato, se l'avvio immediato dei processi ha la priorità più alta, è possibile può creare subito un pool e rendere disponibili i relativi nodi prima dell'invio dei processi.At the other end of the spectrum, if having jobs start immediately is the highest priority, you can create a pool ahead of time and make its nodes available before jobs are submitted. In questo scenario le attività possono essere avviate immediatamente, ma i nodi possono rimanere inattivi in attesa che vengano assegnate.In this scenario, tasks can start immediately, but nodes might sit idle while waiting for them to be assigned.

Un approccio combinato viene in genere usato per la gestione di un carico variabile ma continuo.A combined approach is typically used for handling a variable, but ongoing, load. È possibile inviare più processi a un pool, ma aumentare o ridurre il numero di nodi in base al carico del processo. Vedere Ridimensionamento delle risorse di calcolo nella prossima sezione.You can have a pool that multiple jobs are submitted to, but can scale the number of nodes up or down according to the job load (see Scaling compute resources in the following section). Questa operazione può essere eseguita in modo reattivo in base al carico corrente o in modo proattivo se è possibile prevedere il carico.You can do this reactively, based on current load, or proactively, if load can be predicted.

Configurazione della rete virtuale e del firewallVirtual network (VNet) and firewall configuration

Quando si effettua il provisioning di un pool di nodi di calcolo in Batch di Azure, è possibile associare il pool a una subnet di una rete virtuale di Azure.When you provision a pool of compute nodes in Batch, you can associate the pool with a subnet of an Azure virtual network (VNet). Per usare una rete virtuale di Azure, l'API client di Batch deve usare l'autenticazione di Azure Active Directory (AD).To use an Azure VNet, the Batch client API must use Azure Active Directory (AD) authentication. Il supporto di Azure Batch per Azure AD è documentato in Autenticare le soluzioni del servizio Batch con Active Directory.Azure Batch support for Azure AD is documented in Authenticate Batch service solutions with Active Directory.

Requisiti per la rete virtualeVNet requirements

  • La rete virtuale deve trovarsi nella stessa area e nella stessa sottoscrizione di Azure dell'account Batch.The VNet must be in the same Azure region and subscription as the Batch account.

  • Per i pool creati con una configurazione di macchina virtuale, sono supportate solo le reti virtuali basate su Azure Resource Manager.For pools created with a virtual machine configuration, only Azure Resource Manager-based VNets are supported. Per i pool creati con una configurazione di servizi cloud, sono supportate solo le reti virtuali classiche.For pools created with a cloud services configuration, only classic VNets are supported.

  • Per usare una rete virtuale classica, l'entità servizio MicrosoftAzureBatch deve avere il ruolo di controllo di accesso basato sui ruoli (RBAC) Classic Virtual Machine Contributor per la rete virtuale specificata.To use a classic VNet, the MicrosoftAzureBatch service principal must have the Classic Virtual Machine Contributor Role-Based Access Control (RBAC) role for the specified VNet. Tuttavia per usare una rete virtuale basata su Azure Resource Manager, non è necessaria alcuna ulteriore configurazione di autorizzazioni.However, to use an Azure Resource Manager-based VNet, no additional permission setup is required.

  • La subnet specificata per il pool deve disporre di indirizzi IP non assegnati sufficienti per contenere il numero di macchine virtuali usate come destinazione per il pool; questo valore corrisponde alla somma delle proprietà targetDedicatedNodes e targetLowPriorityNodes del pool.The subnet specified for the pool must have enough unassigned IP addresses to accommodate the number of VMs targeted for the pool; that is, the sum of the targetDedicatedNodes and targetLowPriorityNodes properties of the pool. Se la subnet non dispone di sufficienti indirizzi IP non assegnati, il pool alloca parzialmente i nodi di calcolo e si verifica un errore di ridimensionamento.If the subnet doesn't have enough unassigned IP addresses, the pool partially allocates the compute nodes, and a resize error occurs.

  • La rete virtuale deve consentire la comunicazione dal servizio Batch per essere in grado di pianificare le operazioni sui nodi di calcolo.The VNet must allow communication from the Batch service to be able to schedule tasks on the compute nodes. Questa condizione può essere verificata controllando se la rete virtuale dispone di gruppi di sicurezza di rete (NSG) associati.This can be verified by checking if the VNet has any associated network security groups (NSGs). Se la comunicazione ai nodi di calcolo nella subnet specificata viene negata da un gruppo di sicurezza di rete, il servizio Batch imposta lo stato dei nodi di calcolo su Non utilizzabile.If communication to the compute nodes in the specified subnet is denied by an NSG, then the Batch service sets the state of the compute nodes to unusable.

  • Se la rete virtuale specificata dispone di gruppi di sicurezza di rete (NSG) e/o di un firewall, configurare le porte in ingresso e in uscita, come illustrato nelle tabelle seguenti:If the specified VNet has associated Network Security Groups (NSGs) and/or a firewall, configure the inbound and outbound ports as shown in the following tables:

Porte di destinazioneDestination Port(s) Indirizzo IP di origineSource IP address Porta di origineSource port Batch aggiunge gruppi di sicurezza di reteDoes Batch add NSGs? Necessarie per l'utilizzabilità della VMRequired for VM to be usable? Azione dell'utenteAction from user
  • Per i pool creati con la configurazione macchina virtuale: 29876, 29877For pools created with the virtual machine configuration: 29876, 29877
  • Per i pool creati con la configurazione di servizi cloud: 10100, 20100 e 30100For pools created with the cloud services configuration: 10100, 20100, 30100
Solo indirizzi IP del ruolo del servizio BatchOnly Batch service role IP addresses * o 443* or 443 Sì.Yes. Batch aggiunge gruppi di sicurezza di rete al livello di interfacce di rete collegate alle VM.Batch adds NSGs at the level of network interfaces (NIC) attached to VMs. Questi gruppi di sicurezza di rete consentono il traffico solo dagli indirizzi IP del ruolo del servizio Batch.These NSGs allow traffic only from Batch service role IP addresses. Anche se si aprono queste porte per l'intero Web, il traffico verrà bloccato nella scheda di interfaccia di rete.Even if you open these ports for the entire web, the traffic will get blocked at the NIC. Yes Non è necessario specificare un gruppo di sicurezza di rete, perché Batch consente solo indirizzi IP Batch.You do not need to specify an NSG, because Batch allows only Batch IP addresses.

Se si specifica ugualmente un gruppo di sicurezza di rete, assicurarsi che queste porte siano aperte per il traffico in ingresso.However, if you do specify an NSG, please ensure that these ports are open for inbound traffic.

Se si specifica * come IP di origine nel gruppo di sicurezza di rete, Batch aggiunge ancora gruppi di sicurezza di rete al livello di scheda di interfaccia di rete collegata alle VM.If you specify * as the source IP in your NSG, Batch still adds NSGs at the level of NIC attached to VMs.
3389 (Windows), 22 (Linux)3389 (Windows), 22 (Linux) Computer utente, usati per il debug, per poter accedere in remoto alla VM.User machines, used for debugging purposes, so that you can remotely access the VM. * NoNo NoNo Aggiungere gruppi di sicurezza di rete per consentire l'accesso remoto (RDP o SSH) alla VM.Add NSGs if you want to permit remote access (RDP or SSH) to the VM.
Porte in uscitaOutbound Port(s) DestinationDestination Batch aggiunge gruppi di sicurezza di reteDoes Batch add NSGs? Necessarie per l'utilizzabilità della VMRequired for VM to be usable? Azione dell'utenteAction from user
443443 Archiviazione di AzureAzure Storage NoNo Yes Se si aggiungono gruppi di sicurezza di rete, assicurarsi che questa porta sia aperta per il traffico in uscita.If you add any NSGs, then ensure that this port is open to outbound traffic.

Assicurarsi anche che l'endpoint di Archiviazione di Azure possa essere risolto da qualsiasi server DNS personalizzato che fornisce informazioni alla rete virtuale.Also, ensure that your Azure Storage endpoint can be resolved by any custom DNS servers that serve your VNet. In particolare, gli URL con formato <account>.table.core.windows.net, <account>.queue.core.windows.net e <account>.blob.core.windows.net devono essere risolvibili.Specifically, URLs of the form <account>.table.core.windows.net, <account>.queue.core.windows.net, and <account>.blob.core.windows.net should be resolvable.

Se si aggiunge un gruppo di sicurezza di rete basato su Resource Manager, è possibile usare i tag di servizio per selezionare gli indirizzi IP di archiviazione dell'area specifica per le connessioni in uscita.If you add a Resource Manager based NSG, you can make use of service tags to select the Storage IP addresses for the specific region for outbound connections. Si noti che gli indirizzi IP di archiviazione devono trovarsi nella stessa area dell'account Batch e della rete virtuale.Note that the Storage IP addresses must be the same region as your Batch account and VNet. I tag servizio sono attualmente disponibili in anteprima in alcune aree di Azure.Service tags are currently in preview in selected Azure regions.

Per altre informazioni sulla configurazione di un pool di Batch in una rete virtuale, vedere Creare un pool di macchine virtuali con la rete virtuale.For more information about setting up a Batch pool in a VNet, see Create a pool of virtual machines with your virtual network.

Ridimensionamento delle risorse di calcoloScaling compute resources

Con il ridimensionamento automaticoè possibile fare in modo che il servizio Batch modifichi dinamicamente il numero di nodi di calcolo in un pool in base al carico di lavoro corrente e all'utilizzo delle risorse dello scenario di calcolo.With automatic scaling, you can have the Batch service dynamically adjust the number of compute nodes in a pool according to the current workload and resource usage of your compute scenario. In questo modo è possibile ridurre il costo complessivo dell'esecuzione dell'applicazione usando solo le risorse necessarie e rilasciando quelle non necessarie.This allows you to lower the overall cost of running your application by using only the resources you need, and releasing those you don't need.

Per abilitare il ridimensionamento automatico, scrivere una formula di ridimensionamento automatico e associarla a un pool.You enable automatic scaling by writing an automatic scaling formula and associating that formula with a pool. Il servizio Batch usa la formula per determinare il numero di nodi di destinazione nel pool per l'intervallo di ridimensionamento successivo (un intervallo che è possibile configurare).The Batch service uses the formula to determine the target number of nodes in the pool for the next scaling interval (an interval that you can configure). È possibile specificare le impostazioni di ridimensionamento automatico per un pool quando lo si crea oppure abilitare il ridimensionamento in un pool in seguito.You can specify the automatic scaling settings for a pool when you create it, or enable scaling on a pool later. È anche possibile aggiornare le impostazioni di ridimensionamento in un pool abilitato per il ridimensionamento.You can also update the scaling settings on a scaling-enabled pool.

Ad esempio, un processo richiede l'invio di un numero molto elevato di attività da eseguire.As an example, perhaps a job requires that you submit a very large number of tasks to be executed. È possibile assegnare al pool una formula di ridimensionamento che regola il numero di nodi nel pool in base al numero corrente di attività accodate e alla percentuale di completamento delle attività nel processo.You can assign a scaling formula to the pool that adjusts the number of nodes in the pool based on the current number of queued tasks and the completion rate of the tasks in the job. Il servizio Batch valuta periodicamente la formula e ridimensiona il pool in base al carico di lavoro e alle altre impostazioni della formula.The Batch service periodically evaluates the formula and resizes the pool, based on workload and your other formula settings. Il servizio aggiunge nodi in base alle necessità quando c'è un numero elevato di attività in coda e rimuove i nodi quando non sono presenti attività in coda o in esecuzione.The service adds nodes as needed when there are a large number of queued tasks, and removes nodes when there are no queued or running tasks.

Una formula può essere basata sulle metriche seguenti:A scaling formula can be based on the following metrics:

  • Metriche temporali : basate sulle statistiche raccolte ogni cinque minuti nel numero di ore specificato.Time metrics are based on statistics collected every five minutes in the specified number of hours.
  • Metriche delle risorse : basate su utilizzo di CPU, larghezza di banda, memoria e numero di nodi.Resource metrics are based on CPU usage, bandwidth usage, memory usage, and number of nodes.
  • Metriche delle attività: basate sullo stato delle attività, ad esempio Attiva (in coda), In esecuzione o Completata.Task metrics are based on task state, such as Active (queued), Running, or Completed.

Quando il ridimensionamento automatico riduce il numero di nodi di calcolo in un pool, è necessario considerare come gestire le attività in esecuzione al momento dell'operazione di riduzione.When automatic scaling decreases the number of compute nodes in a pool, you must consider how to handle tasks that are running at the time of the decrease operation. A questo scopo, il servizio Batch offre un' opzione di deallocazione dei nodi che è possibile includere nelle formule.To accommodate this, Batch provides a node deallocation option that you can include in your formulas. Ad esempio, è possibile specificare che le attività in esecuzione devono essere arrestate immediatamente e quindi riaccodate per l'esecuzione in un altro nodo o che ne deve essere consentita la fine prima della rimozione del nodo dal pool.For example, you can specify that running tasks are stopped immediately and then requeued for execution on another node, or allowed to finish before the node is removed from the pool.

Per altre informazioni sulla scalabilità automatica di un'applicazione, vedere Ridimensionare automaticamente i nodi di calcolo in un pool di Azure Batch.For more information about automatically scaling an application, see Automatically scale compute nodes in an Azure Batch pool.

Suggerimento

Per massimizzare l'utilizzo delle risorse di calcolo, impostare il numero di nodi su zero alla fine di un processo, ma consentire il completamento delle attività in esecuzione.To maximize compute resource utilization, set the target number of nodes to zero at the end of a job, but allow running tasks to finish.

Sicurezza con certificatiSecurity with certificates

È in genere necessario usare certificati per crittografare o decrittografare informazioni riservate per le attività, ad esempio la chiave per un account di archiviazione di Azure.You typically need to use certificates when you encrypt or decrypt sensitive information for tasks, like the key for an Azure Storage account. Per supportare questa funzionalità, è possibile installare certificati nei nodi.To support this, you can install certificates on nodes. I segreti crittografati vengono passati alle attività nei parametri della riga di comando o incorporati in una delle risorse dell'attività e i certificati installati possono essere usati per decrittografarli.Encrypted secrets are passed to tasks via command-line parameters or embedded in one of the task resources, and the installed certificates can be used to decrypt them.

Per aggiungere un certificato a un account Batch, usare l'operazione Aggiungi certificato (Batch REST) o il metodo CertificateOperations.CreateCertificate (Batch .NET).You use the Add certificate operation (Batch REST) or CertificateOperations.CreateCertificate method (Batch .NET) to add a certificate to a Batch account. È quindi possibile associare il certificato a un pool nuovo o esistente.You can then associate the certificate with a new or existing pool. Quando un certificato è associato a un pool, il servizio Batch installa il certificato in ogni nodo del pool.When a certificate is associated with a pool, the Batch service installs the certificate on each node in the pool. Il servizio Batch installa i certificati appropriati all'avvio del nodo, prima di avviare le attività, incluse quelle di avvio e del gestore di processi.The Batch service installs the appropriate certificates when the node starts up, before launching any tasks (including the start task and job manager task).

Se si aggiungono certificati a un pool esistente , è necessario riavviare i relativi nodi di calcolo per applicare i certificati ai nodi.If you add certificates to an existing pool, you must reboot its compute nodes for the certificates to be applied to the nodes.

Gestione degli erroriError handling

Potrebbe essere necessario gestire sia gli errori delle attività che quelli delle applicazioni nella soluzione Batch.You might find it necessary to handle both task and application failures within your Batch solution.

Gestione degli errori delle attivitàTask failure handling

Gli errori delle attività rientrano nelle categorie seguenti:Task failures fall into these categories:

  • Errori di pre-elaborazionePre-processing failures

    Se un'attività non può essere avviata, viene impostato un errore di pre-elaborazione per l'attività stessa.If a task fails to start, a pre-processing error is set for the task.

    Gli errori di pre-elaborazione possono essere dovuti a file di risorse dell'attività spostati, un account di archiviazione non più disponibile o un altro problema che ha impedito la copia corretta dei file nel nodo.Pre-processing errors can occur if the task's resource files have moved, the Storage account is no longer available, or another issue was encountered that prevented the successful copying of files to the node.

  • Errori di caricamento fileFile upload failures

    Se il caricamento dei file specificati per un'attività non riesce per qualsiasi motivo, per l'attività viene impostato un errore di caricamento file.If uploading files that are specified for a task fails for any reason, a file upload error is set for the task.

    Gli errori di caricamento dei file possono verificarsi se la firma di accesso condiviso specificata per l'accesso ad Archiviazione di Azure non è valida oppure non concede le autorizzazioni di scrittura, se l'account di archiviazione non è più disponibile oppure se si è verificato un altro problema che ha impedito la copia corretta dei file dal nodo.File upload errors can occur if the SAS supplied for accessing Azure Storage is invalid or does not provide write permissions, if the storage account is no longer available, or if another issue was encountered that prevented the successful copying of files from the node.

  • Errori delle applicazioniApplication failures

    Anche il processo specificato dalla riga di comando dell'attività può non riuscire.The process that is specified by the task's command line can also fail. Il processo viene considerato non riuscito quando il processo eseguito dall'attività restituisce un codice di uscita diverso da zero. Vedere Codici di uscita delle attività nella prossima sezione.The process is deemed to have failed when a nonzero exit code is returned by the process that is executed by the task (see Task exit codes in the next section).

    Per gli errori delle applicazioni è possibile configurare il servizio Batch in modo che riprovi automaticamente a eseguire l'attività per un numero di volte specificato.For application failures, you can configure Batch to automatically retry the task up to a specified number of times.

  • Errori relativi ai vincoliConstraint failures

    È possibile impostare un vincolo che specifichi la durata massima di esecuzione per un processo o un'attività, maxWallClockTime.You can set a constraint that specifies the maximum execution duration for a job or task, the maxWallClockTime. Questa impostazione può essere utile per terminare le attività bloccate.This can be useful for terminating tasks that fail to progress.

    Quando viene superata la quantità massima di tempo impostata, l'attività viene contrassegnata come completata, ma il codice di uscita viene impostato su 0xC000013A e il campo schedulingError viene contrassegnato come { category:"ServerError", code="TaskEnded"}.When the maximum amount of time has been exceeded, the task is marked as completed, but the exit code is set to 0xC000013A and the schedulingError field is marked as { category:"ServerError", code="TaskEnded"}.

Debug degli errori delle applicazioniDebugging application failures

  • stderr e stdoutstderr and stdout

    Durante l'esecuzione un'applicazione può generare un output di diagnostica che può essere usato per la risoluzione dei problemi.During execution, an application might produce diagnostic output that you can use to troubleshoot issues. Come indicato nella sezione precedente File e directory, il servizio Batch scrive l'output standard e l'output degli errori standard nei file stdout.txt e stderr.txt nella directory dell'attività nel nodo di calcolo.As mentioned in the earlier section Files and directories, the Batch service writes standard output and standard error output to stdout.txt and stderr.txt files in the task directory on the compute node. Per scaricare questi file, è possibile usare il portale di Azure oppure uno degli SDK di Batch.You can use the Azure portal or one of the Batch SDKs to download these files. È ad esempio possibile recuperare questi e altri file per la risoluzione dei problemi con ComputeNode.GetNodeFile e CloudTask.GetNodeFile nella libreria Batch .NET.For example, you can retrieve these and other files for troubleshooting purposes by using ComputeNode.GetNodeFile and CloudTask.GetNodeFile in the Batch .NET library.

  • Codici di uscita delle attivitàTask exit codes

    Come indicato in precedenza, un'attività viene contrassegnata come non riuscita dal servizio Batch se il processo eseguito dall'attività restituisce un codice di uscita non zero.As mentioned earlier, a task is marked as failed by the Batch service if the process that is executed by the task returns a nonzero exit code. Quando un'attività esegue un processo, il servizio Batch popola la proprietà del codice di uscita dell'attività con il codice restituito del processo.When a task executes a process, Batch populates the task's exit code property with the return code of the process. È importante notare che il codice di uscita dell'attività non è determinato dal servizio Batch.It is important to note that a task's exit code is not determined by the Batch service. Il codice di uscita di un'attività è determinato dal processo stesso o dal sistema operativo in cui il processo è stato eseguito.A task's exit code is determined by the process itself or the operating system on which the process executed.

Considerazioni sugli errori o sulle interruzioni delle attivitàAccounting for task failures or interruptions

In alcuni casi, le attività non riescono o vengono interrotte.Tasks might occasionally fail or be interrupted. È possibile che si verifichi un errore dell'applicazione dell'attività stessa, che il nodo in cui è in esecuzione l'attività venga riavviato o che il nodo venga rimosso dal pool durante un'operazione di ridimensionamento se nei criteri di deallocazione del pool è impostata la rimozione immediata dei nodi senza attendere il completamento delle attività.The task application itself might fail, the node on which the task is running might be rebooted, or the node might be removed from the pool during a resize operation if the pool's deallocation policy is set to remove nodes immediately without waiting for tasks to finish. In ogni caso, Batch può riaccodare automaticamente l'attività per eseguirla in un altro nodo.In all cases, the task can be automatically requeued by Batch for execution on another node.

È anche possibile che un problema intermittente provochi il blocco di un'attività o ne renda troppo lunga l'esecuzione.It is also possible for an intermittent issue to cause a task to hang or take too long to execute. È possibile impostare l'intervallo di esecuzione massimo per un'attività.You can set the maximum execution interval for a task. Se si supera l'intervallo di esecuzione massimo, il servizio Batch consente di interrompere l'applicazione dell'attività.If the maximum execution interval is exceeded, the Batch service interrupts the task application.

Connessione ai nodi di calcoloConnecting to compute nodes

È possibile eseguire altre operazioni di debug e di risoluzione dei problemi accedendo a un nodo di calcolo in remoto.You can perform additional debugging and troubleshooting by signing in to a compute node remotely. È possibile usare il portale di Azure per scaricare un file Remote Desktop Protocol (RDP) per i nodi Windows e ottenere informazioni sulla connessione SSH (Secure Shell) per i nodi Linux.You can use the Azure portal to download a Remote Desktop Protocol (RDP) file for Windows nodes and obtain Secure Shell (SSH) connection information for Linux nodes. È anche possibile eseguire questa operazione usando le API Batch, ad esempio con Batch .NET o Batch Python.You can also do this by using the Batch APIs--for example, with Batch .NET or Batch Python.

Importante

Per connettersi a un nodo tramite RDP o SSH, è necessario creare prima di tutto un utente nel nodo.To connect to a node via RDP or SSH, you must first create a user on the node. A questo scopo è possibile usare il Portale di Azure, aggiungere un account utente a un nodo con l'API Batch REST, chiamare il metodo ComputeNode.CreateComputeNodeUser in Batch .NET o chiamare il metodo add_user nel modulo Batch Python.To do this, you can use the Azure portal, add a user account to a node by using the Batch REST API, call the ComputeNode.CreateComputeNodeUser method in Batch .NET, or call the add_user method in the Batch Python module.

Risoluzione dei problemi dei nodi di calcoloTroubleshooting problematic compute nodes

Nei casi in cui alcune attività non riescono, il servizio o l'applicazione client Batch può esaminare i metadati delle attività non riuscite per identificare un nodo non correttamente funzionante.In situations where some of your tasks are failing, your Batch client application or service can examine the metadata of the failed tasks to identify a misbehaving node. A ogni nodo di un pool viene assegnato un ID univoco e il nodo in cui viene eseguita un'attività viene incluso nei metadati dell'attività.Each node in a pool is given a unique ID, and the node on which a task runs is included in the task metadata. Dopo avere identificato un "nodo problematico", è possibile intervenire in diversi modi:After you've identified a problem node, you can take several actions with it:

  • Riavviare un nodo (REST | .NET)Reboot the node (REST | .NET)

    Il riavvio del nodo a volte consente di eliminare problemi latenti, ad esempio processi bloccati o arrestati in modo anomalo.Restarting the node can sometimes clear up latent issues like stuck or crashed processes. Si noti che, se il pool usa un'attività di avvio o il processo usa un'attività di preparazione del processo, vengono eseguite quando il nodo viene riavviato.Note that if your pool uses a start task or your job uses a job preparation task, they are executed when the node restarts.

  • Ricreare l'immagine di un nodo (REST | .NET)Reimage the node (REST | .NET)

    Il sistema operativo viene reinstallato nel nodo.This reinstalls the operating system on the node. Come durante il riavvio di un nodo, le attività di avvio e le attività di preparazione del processo vengono rieseguite dopo che è stata ricreata l'immagine del nodo.As with rebooting a node, start tasks and job preparation tasks are rerun after the node has been reimaged.

  • Rimuovere i nodi di calcolo da un pool (REST | .NET)Remove the node from the pool (REST | .NET)

    A volte è necessario rimuovere completamente il nodo dal pool.Sometimes it is necessary to completely remove the node from the pool.

  • Disabilitare la pianificazione delle attività in un nodo (REST | .NET)Disable task scheduling on the node (REST | .NET)

    In questo modo il nodo in realtà passa offline e non è possibile assegnargli altre attività, ma può rimanere in esecuzione e nel pool.This effectively takes the node offline so that no further tasks are assigned to it, but allows the node to remain running and in the pool. È quindi possibile eseguire altre indagini sulla causa degli errori senza perdere i dati delle attività non riuscite e senza che il nodo generi altri errori delle attività.This enables you to perform further investigation into the cause of the failures without losing the failed task's data, and without the node causing additional task failures. È ad esempio possibile disabilitare la pianificazione delle attività nel nodo, quindi accedere in remoto per esaminare i registri eventi del nodo o eseguire altre operazioni di risoluzione dei problemi.For example, you can disable task scheduling on the node, then sign in remotely to examine the node's event logs or perform other troubleshooting. Al termine dell'indagine, è possibile riportare il nodo online abilitando la pianificazione delle attività (REST | .NET) o eseguire una delle altre azioni illustrate in precedenza.After you've finished your investigation, you can then bring the node back online by enabling task scheduling (REST | .NET), or perform one of the other actions discussed earlier.

Importante

Con ogni azione illustrata in questa sezione, ovvero riavvio, ricreazione dell'immagine, rimozione, disabilitazione della pianificazione delle attività, è possibile specificare come gestire le attività attualmente in esecuzione nel nodo quando si esegue l'azione.With each action that is described in this section--reboot, reimage, remove, and disable task scheduling--you are able to specify how tasks currently running on the node are handled when you perform the action. Quando ad esempio si disabilita la pianificazione delle attività in un nodo con la libreria client Batch .NET, è possibile specificare un valore enum DisableComputeNodeSchedulingOption per specificare se eseguire l'operazione Termina per terminare le attività in esecuzione o Reinserisci nella coda per la pianificazione in altri nodi oppure consentire il completamento delle attività in esecuzione prima di eseguire l'azione (TaskCompletion).For example, when you disable task scheduling on a node by using the Batch .NET client library, you can specify a DisableComputeNodeSchedulingOption enum value to specify whether to Terminate running tasks, Requeue them for scheduling on other nodes, or allow running tasks to complete before performing the action (TaskCompletion).

Passaggi successiviNext steps