Rendere persistente l'output di processi e attivitàPersist job and task output

Un'attività in esecuzione in Azure Batch può produrre dati di output quando viene eseguita.A task running in Azure Batch may produce output data when it runs. I dati di output delle attività spesso devono essere archiviati per consentirne il recupero da parte di altre attività del processo, dell'applicazione client che ha eseguito il processo o di entrambe.Task output data often needs to be stored for retrieval by other tasks in the job, the client application that executed the job, or both. Le attività scrivono i dati di output nel file system di un nodo di calcolo di Batch, ma tutti i dati presenti nel nodo vanno persi quando ne viene ricreata l'immagine o quando il nodo lascia il pool.Tasks write output data to the file system of a Batch compute node, but all data on the node is lost when it is reimaged or when the node leaves the pool. Le attività possono anche avere un periodo di memorizzazione dei file, dopo il quale i file creati dall'attività vengono eliminati.Tasks may also have a file retention period, after which files created by the task are deleted. Per questi motivi, è importante salvare in modo permanente l'output delle attività che sarà necessario in seguito in un archivio dati, ad esempio Archiviazione di Azure.For these reasons, it's important to persist task output that you'll need later to a data store such as Azure Storage.

Alcuni esempi comuni di output delle attività includono:Some common examples of task output include:

  • File creati mentre l'attività elabora i dati di input.Files created when the task processes input data.
  • File di log associati all'esecuzione dell'attività.Log files associated with task execution.

Questo articolo descrive diverse opzioni per rendere persistente l'output delle attività e gli scenari in cui è più appropriata ogni opzione.This article describes various options for persisting task output and the scenarios for which each option is most appropriate.

Informazioni sullo standard Batch File ConventionsAbout the Batch File Conventions standard

Batch definisce un set facoltativo di convenzioni per la denominazione dei file di output delle attività in Archiviazione di Azure.Batch defines an optional set of conventions for naming task output files in Azure Storage. Lo standard Batch File Conventions descrive queste convenzioni.The Batch File Conventions standard describes these conventions. Lo standard File Conventions determina i nomi del percorso del contenitore e del BLOB di destinazione in Archiviazione di Azure per un file di output specificato in base ai nomi del processo e dell'attività.The File Conventions standard determines the names of the destination container and blob path in Azure Storage for a given output file based on the names of the job and task.

Ogni utente può decidere se usare lo standard File Conventions per la denominazione dei file di dati di output.It's up to you whether you decide to use the File Conventions standard for naming your output data files. È anche possibile assegnare i nomi preferiti al contenitore e al BLOB di destinazione.You can also name the destination container and blob however you wish. Se si usa lo standard File Conventions per la denominazione dei file di output, i file di output sono disponibili per la visualizzazione nel portale di Azure.If you do use the File Conventions standard for naming output files, then your output files are available for viewing in the Azure portal.

Lo standard File Conventions può essere usato in alcuni modi diversi:There are a few different ways that you can use the File Conventions standard:

  • Se si usa l'API del servizio Batch per rendere persistenti i file di output, è possibile scegliere di assegnare i nomi ai contenitori e ai BLOB di destinazione in base allo standard File Conventions.If you are using the Batch service API to persist output files, you can choose to name destination containers and blobs according to the File Conventions standard. L'API del servizio Batch consente di rendere persistenti i file di output dal codice client, senza modificare l'applicazione dell'attività.The Batch service API enables you to persist output files from client code, without modifying your task application.
  • Se si sviluppa con .NET, è possibile usare la libreria Azure Batch File Conventions per .NET.If you are developing with .NET, you can use the Azure Batch File Conventions library for .NET. Un vantaggio dell'uso di questa libreria è che supporta l'esecuzione di query sui file di output in base al loro ID o scopo.An advantage of using this library is that it supports querying your output files according to their ID or purpose. La funzionalità di query incorporata consente di accedere facilmente ai file di output da un'applicazione client o da altre attività.The built-in querying functionality makes it easy to access output files from a client application or from other tasks. L'applicazione dell'attività deve essere tuttavia modificata per chiamare la libreria File Conventions.However, your task application must be modified to call File Conventions library. Per altre informazioni, vedere le informazioni di riferimento sulla libreria File Conventions per .NET.For more information, see the reference for the File Conventions library for .NET.
  • Se si sviluppa con un linguaggio diverso da .NET, è possibile implementare lo standard File Conventions nell'applicazione.If you are developing with a language other than .NET, you can implement the File Conventions standard in your application.

Considerazioni sulla progettazione per la persistenza dell'outputDesign considerations for persisting output

Quando si progetta una soluzione Batch, è necessario considerare i fattori seguenti correlati agli output di processi e attività.When designing your Batch solution, consider the following factors related to job and task outputs.

  • Durata dei nodi di calcolo: questi nodi sono spesso temporanei, in particolare nei pool abilitati per il ridimensionamento automatico.Compute node lifetime: Compute nodes are often transient, especially in autoscale-enabled pools. L'output da un'attività eseguita su un nodo è disponibile solo finché il nodo esiste e solo durante il periodo di conservazione dei file impostato per l'attività.Output from a task that runs on a node is available only while the node exists, and only within the file retention period you've set for the task. Se un'attività genera output che potrebbe essere necessario dopo il completamento dell'attività, l'attività deve caricare i file di output in un archivio permanente, come Archiviazione di Azure.If a task produces output that may be needed after the task is complete, then the task must upload its output files to a durable store such as Azure Storage.

  • Archiviazione dell'output: Archiviazione di Azure è la soluzione consigliata come archivio dati per l'output delle attività, ma è possibile usare qualsiasi sistema di archiviazione permanente.Output storage: Azure Storage is recommended as a data store for task output, but you can use any durable storage. La funzionalità di scrittura dell'output in Archiviazione di Azure è integrata nell'API del servizio Batch.Writing task output to Azure Storage is integrated into the Batch service API. Se si usa un'altra forma di archiviazione permanente, sarà necessario scrivere autonomamente la logica dell'applicazione per rendere persistente l'output delle attività.If you use another form of durable storage, you'll need to write the application logic to persist task output yourself.

  • Recupero dell'output: è possibile recuperare l'output delle attività direttamente dai nodi di calcolo nel pool oppure da Archiviazione di Azure o un altro archivio dati, se l'output delle attività viene reso persistente.Output retrieval: You can retrieve task output directly from the compute nodes in your pool, or from Azure Storage or another data store if you have persisted task output. Per recuperare l'output di un'attività direttamente da un nodo di calcolo, è necessario il nome del file e il relativo percorso di output nel nodo.To retrieve a task's output directly from a compute node, you need the file name and its output location on the node. Se si rende persistente l'output delle attività in Archiviazione di Azure, sarà necessario il percorso completo del file in Archiviazione di Azure per scaricare i file di output tramite Azure Storage SDK.If you persist task output to Azure Storage, then you need the full path to the file in Azure Storage to download the output files with the Azure Storage SDK.

  • Visualizzazione dell'output: quando si passa a un'attività di Batch nel portale di Azure e si seleziona File nel nodo, vengono visualizzati tutti i file associati all'attività, non solo i file di output a cui si è interessati.Viewing output: When you navigate to a Batch task in the Azure portal and select Files on node, you are presented with all files associated with the task, not just the output files you're interested in. Anche in questo caso, i file nei nodi di calcolo sono disponibili solo finché il nodo esiste e solo durante periodo di conservazione dei file impostato per l'attività.Again, files on compute nodes are available only while the node exists and only within the file retention time you've set for the task. Per visualizzare l'output delle attività reso persistente in Archiviazione di Azure, è possibile usare il portale di Azure o un'applicazione client di Archiviazione di Azure, come Azure Storage Explorer.To view task output that you've persisted to Azure Storage, you can use the Azure portal or an Azure Storage client application such as the Azure Storage Explorer. Per visualizzare i dati di output in Archiviazione di Azure con il portale o un altro strumento, è necessario conoscere il percorso del file e passare direttamente a tale percorso.To view output data in Azure Storage with the portal or another tool, you must know the file's location and navigate to it directly.

Opzioni per la persistenza dell'outputOptions for persisting output

A seconda dello scenario, sono disponibili alcuni approcci diversi che è possibile scegliere per rendere persistente l'output delle attività:Depending on your scenario, there are a few different approaches you can take to persist task output:

  • Usare l'API del servizio Batch.Use the Batch service API.
  • Usare la libreria Batch File Conventions per .NET.Use the Batch File Conventions library for .NET.
  • Implementare lo standard Batch File Conventions nelle applicazioni.Implement the Batch File Conventions standard in your application.
  • Implementare una soluzione personalizzata per lo spostamento dei file.Implement a custom file movement solution.

Le sezioni seguenti descrivono ogni approccio in modo più dettagliato.The following sections describe each approach in more detail.

Usare l'API del servizio BatchUse the Batch service API

A partire dalla versione 2017-05-01 il servizio Batch consente di specificare i di file di output in Archiviazione di Azure per i dati delle attività quando si aggiunge un'attività a un processo o si aggiunge una raccolta di attività a un processo.With version 2017-05-01, the Batch service adds support for specifying output files in Azure Storage for task data when you add a task to a job or add a collection of tasks to a job.

L'API del servizio Batch supporta la persistenza dei dati delle attività in un account di Archiviazione di Azure dai pool creati con la configurazione della macchina virtuale.The Batch service API supports persisting task data to an Azure Storage account from pools created with the virtual machine configuration. Con l'API del servizio Batch, è possibile rendere persistenti i dati delle attività senza modificare l'applicazione che esegue l'attività.With the Batch service API, you can persist task data without modifying the application that your task runs. È facoltativamente possibile scegliere di seguire lo standard Batch File Conventions per la denominazione dei file da rendere persistenti in Archiviazione di Azure.You can optionally adhere to the Batch File Conventions standard for naming the files that you persist to Azure Storage.

Usare l'API del servizio Batch per rendere persistente l'output delle attività nei casi seguenti:Use the Batch service API to persist task output when:

  • Si vogliono rendere persistenti i dati delle attività del servizio Batch e delle attività del gestore di processi nei pool creati con la configurazione della macchina virtuale.You want to persist data from Batch tasks and job manager tasks in pools created with the virtual machine configuration.
  • Si vogliono rendere persistenti i dati in un contenitore di Archiviazione di Azure con un nome arbitrario.You want to persist data to an Azure Storage container with an arbitrary name.
  • Si vogliono rendere persistenti i dati in un contenitore di Archiviazione di Azure denominato in base gli standard di Batch File Conventions.You want to persist data to an Azure Storage container named according to the Batch File Conventions standard.

Nota

L'API del servizio Batch non consente di rendere persistenti i dati dalle attività in esecuzione nei pool creati con la configurazione del servizio cloud.The Batch service API does not support persisting data from tasks running in pools created with the cloud service configuration. Per informazioni su come rendere persistente l'output delle attività dai pool che eseguono la configurazione dei servizi cloud, vedere Rendere persistenti i dati di attività e processi in Archiviazione di Azure con la libreria Batch File Conventions per .NET.For information about persisting task output from pools running the cloud services configuration, see Persist job and task data to Azure Storage with the Batch File Conventions library for .NET to persist

Per altre informazioni su come rendere persistente l'output delle attività con l'API del servizio Batch, vedere Rendere persistenti i dati di attività in Archiviazione di Azure con l'API del servizio Batch.For more information on persisting task output with the Batch service API, see Persist task data to Azure Storage with the Batch service API. Vedere anche il progetto di esempio [PersistOutputs][github_persistoutputs] su GitHub, che dimostra come usare la libreria client Batch per .NET per rendere persistente l'output dell'attività in una risorsa di archiviazione permanente.Also see the [PersistOutputs][github_persistoutputs] sample project on GitHub, which demonstrates how to use the Batch client library for .NET to persist task output to durable storage.

Usare la libreria Batch File Conventions per .NETUse the Batch File Conventions library for .NET

Gli sviluppatori che creano soluzioni per Batch con C# e .NET possono usare la libreria File Conventions per .NET per rendere persistenti i dati delle attività in un account di Archiviazione di Azure, in base allo standard Batch File Conventions.Developers building Batch solutions with C# and .NET can use the File Conventions library for .NET to persist task data to an Azure Storage account, according to the Batch File Conventions standard. La libreria File Conventions gestisce lo spostamento dei file di output in Archiviazione di Azure e la denominazione dei contenitori e dei BLOB di destinazione in modo noto.The File Conventions library handles moving output files to Azure Storage and naming destination containers and blobs in a well-known way.

La libreria File Conventions supporta l'esecuzione di query sui file di output sia in base all'ID che allo scopo, semplificando così l'individuazione dei file senza che siano necessari gli URI completi.The File Conventions library supports querying output files by either ID or purpose, making it easy to locate them without needing the complete file URIs.

Usare la libreria Batch File Conventions per .NET per rendere persistente l'output delle attività nei casi seguenti:Use the Batch File Conventions library for .NET to persist task output when:

  • Si vogliono inviare flussi di dati in Archiviazione di Azure mentre l'attività è ancora in esecuzione.You want to stream data to Azure Storage while the task is still running.
  • Si vogliono rendere persistenti i dati dai pool creati con la configurazione del servizio cloud o con la configurazione della macchina virtuale.You want to persist data from pools created with either the cloud service configuration or the virtual machine configuration.
  • L'applicazione client o altre attività nel processo devono individuare e scaricare i file di output delle attività in base all'ID o allo scopo.Your client application or other tasks in the job needs to locate and download task output files by ID or by purpose.
  • Si vogliono usare checkpoint o caricamenti anticipati dei risultati iniziali.You want to perform check-pointing or early upload of initial results.
  • Si vuole visualizzare l'output delle attività nel portale di Azure.You want to view task output in the Azure portal.

Per altre informazioni su come rendere persistente l'output delle attività con la libreria File Conventions per .NET, vedere Rendere persistenti i dati di attività e processi in Archiviazione di Azure con la libreria Batch File Conventions per .NET.For more information on persisting task output with the File Conventions library for .NET, see Persist job and task data to Azure Storage with the Batch File Conventions library for .NET to persist . Vedere anche il progetto di esempio [PersistOutputs][github_persistoutputs] su GitHub, che dimostra come usare la libreria File Conventions per .NET per rendere persistente l'output dell'attività in una risorsa di archiviazione permanente.Also see the [PersistOutputs][github_persistoutputs] sample project on GitHub, which demonstrates how to use the File Conventions library for .NET to persist task output to durable storage.

Il progetto di esempio [PersistOutputs][github_persistoutputs] su GitHub dimostra come usare la libreria client Batch per .NET per rendere persistente l'output dell'attività in una risorsa di archiviazione permanente.The [PersistOutputs][github_persistoutputs] sample project on GitHub demonstrates how to use the Batch client library for .NET to persist task output to durable storage.

Implementare lo standard Batch File ConventionsImplement the Batch File Conventions standard

Se si usa un linguaggio diverso da .NET, è possibile implementare lo standard Batch File Conventions nell'applicazione.If you are using a language other than .NET, you can implement the Batch File Conventions standard in your own application.

Può essere utile implementare lo standard File Conventions quando si vuole usare uno schema di denominazione collaudato o è necessario visualizzare l'output delle attività nel portale di Azure.You may want to implement the File Conventions naming standard yourself when you want a proven naming scheme, or when you want to view task output in the Azure portal.

Implementare una soluzione personalizzata per lo spostamento dei fileImplement a custom file movement solution

È anche possibile implementare una soluzione completa propria per lo spostamento dei file.You can also implement your own complete file movement solution. Usare questo approccio nei casi seguenti:Use this approach when:

  • Si vogliono rendere persistenti i dati delle attività in un archivio dati diverso da Archiviazione di Azure.You want to persist task data to a data store other than Azure Storage. Per caricare i file in un archivio dati come SQL Azure o Azure Data Lake, è possibile creare uno script o un eseguibile personalizzato per eseguire il caricamento in tale posizione.To upload files to a data store like Azure SQL or Azure DataLake, you can create a custom script or executable to upload to that location. È quindi possibile chiamarlo dalla riga di comando dopo l'esecuzione del file eseguibile principale.You can then call it on the command line after running your primary executable. In un nodo di Windows, ad esempio, si potrebbero chiamare questi due comandi:doMyWork.exe && uploadMyFilesToSql.exeFor example, on a Windows node, you might call these two commands: doMyWork.exe && uploadMyFilesToSql.exe
  • Si vogliono usare checkpoint o caricamenti anticipati dei risultati iniziali.You want to perform check-pointing or early upload of initial results.
  • Si vuole mantenere un controllo granulare sulla gestione degli errori.You want to maintain granular control over error handling. Ad esempio, può essere utile implementare una soluzione personalizzata se si vogliono usare le azioni per le dipendenze delle attività per eseguire opzioni di caricamento specifiche in base a codici di uscita specifici delle attività.For example, you may want to implement your own solution if you want to use task dependency actions to take certain upload actions based on specific task exit codes. Per altre informazioni sulle azioni per le dipendenze delle attività, vedere Creare relazioni tra attività per eseguire attività che dipendono da altre attività.For more information on task dependency actions, see Create task dependencies to run tasks that depend on other tasks.

Passaggi successiviNext steps