Caricare dati per processi Hadoop in HDInsightUpload data for Hadoop jobs in HDInsight

Azure HDInsight include un file system HDFS (Hadoop Distributed File System) completo su Archiviazione di Microsoft Azure e Azure Data Lake Store.Azure HDInsight provides a full-featured Hadoop distributed file system (HDFS) over Azure Storage and Azure Data Lake Store. Archiviazione di Azure e Data Lake Store sono stati progettati come estensione Hadoop Distributed File System per offrire un'esperienza lineare ai clienti.Azure Storage and Data lake Store are designed as an HDFS extension to provide a seamless experience to customers. Abilitano il set completo di componenti nell'ecosistema Hadoop, con possibilità di agire direttamente sui dati gestiti da Hadoop stesso.They enable the full set of components in the Hadoop ecosystem to operate directly on the data it manages. Archiviazione di Azure e Data Lake Store sono file system distinti, ottimizzati per l'archiviazione di dati e per l'esecuzione di calcoli su di essi.Azure Storage and Data Lake Store are distinct file systems that are optimized for storage of data and computations on that data. Per informazioni sui vantaggi dell'uso di Archiviazione di Microsoft Azure, vedere Usare Archiviazione di Microsoft Azure con HDInsight e Usare Data Lake Store con HDInsight.For information about the benefits of using Azure Storage, see Use Azure Storage with HDInsight and Use Data Lake Store with HDInsight.

PrerequisitiPrerequisites

Prima di iniziare, tenere presenti i requisiti seguenti:Note the following requirements before you begin:

Caricare i dati in Archiviazione di AzureUpload data to Azure Storage

Utilità della riga di comandoCommand-line utilities

Microsoft fornisce le utilità seguenti da usare con Archiviazione di Azure:Microsoft provides the following utilities to work with Azure Storage:

StrumentoTool LinuxLinux OS XOS X WindowsWindows
Interfaccia della riga di comando di AzureAzure Command-Line Interface
Azure PowerShellAzure PowerShell
AzCopyAzCopy
Comando HadoopHadoop command

Nota

Mentre l'interfaccia della riga di comando di Azure, Azure PowerShell e AzCopy possono tutti essere usati dall'esterno di Azure, il comando Hadoop è disponibile solo nei cluster HDInsight.While the Azure CLI, Azure PowerShell, and AzCopy can all be used from outside Azure, the Hadoop command is only available on the HDInsight cluster. Il comando consente solo il caricamento dei dati dal file system locale in Archiviazione di Azure.And the command only allows loading data from the local file system into Azure Storage.

Azure CLI

L'interfaccia della riga di comando di Azure è uno strumento multipiattaforma che consente di gestire i servizi di Azure.The Azure CLI is a cross-platform tool that allows you to manage Azure services. Per caricare i dati in Archiviazione di Azure, seguire questa procedura:Use the following steps to upload data to Azure Storage:

Importante

Il supporto dell'interfaccia della riga di comando di Azure per la gestione delle risorse HDInsight tramite Azure Service Manager è deprecato ed è stato rimosso il 1° gennaio 2017.Azure CLI support for managing HDInsight resources using Azure Service Manager (ASM) is deprecated, and was removed on January 1, 2017. La procedura descritta in questo documento usa i nuovi comandi dell'interfaccia della riga di comando di Azure, compatibili con Azure Resource Manager.The steps in this document use the new Azure CLI commands that work with Azure Resource Manager.

Per installare l'ultima versione dell'interfaccia della riga di comando di Azure, seguire la procedura descritta in Installare l'interfaccia della riga di comando di Azure.Follow the steps in Install and configure Azure CLI to install the latest version of the Azure CLI. Se sono presenti script che devono essere modificati per l'uso dei nuovi comandi compatibili con Azure Resource Manager, vedere l'articolo relativo alla migrazione a strumenti di sviluppo basati su Azure Resource Manager per i cluster HDInsight per altre informazioni.If you have scripts that need to be modified to use the new commands that work with Azure Resource Manager, see Migrating to Azure Resource Manager-based development tools for HDInsight clusters for more information.

  1. Installare e configurare l'interfaccia della riga di comando di Azure per Mac, Linux e Windows.Install and configure the Azure CLI for Mac, Linux, and Windows.
  2. Aprire un prompt dei comandi, una sessione Bash o un'altra shell e usare quanto riportato di seguito per eseguire l'autenticazione alla sottoscrizione di Azure.Open a command prompt, bash, or other shell, and use the following to authenticate to your Azure subscription.

    azure login
    

    Quando richiesto, immettere il nome utente e la password per la sottoscrizione.When prompted, enter the user name and password for your subscription.

  3. Immettere il comando seguente per elencare gli account di archiviazione per la sottoscrizione:Enter the following command to list the storage accounts for your subscription:

    azure storage account list
    
  4. Selezionare l'account di archiviazione contenente il BLOB che si desidera usare, quindi usare il comando seguente per recuperare la chiave per tale account:Select the storage account that contains the blob you want to work with, then use the following command to retrieve the key for this account:

    azure storage account keys list <storage-account-name>
    

    Questo comando restituisce le chiavi primaria e secondaria.This command returns the Primary and the Secondary keys. Copiare il valore della chiave Primary poiché varrà usato nei passaggi successivi.Copy the Primary key value because it will be used in the next steps.

  5. Usare il comando seguente per recuperare un elenco di contenitori BLOB all'interno dell'account di archiviazione:Use the following command to retrieve a list of blob containers within the storage account:

    azure storage container list -a <storage-account-name> -k <primary-key>
    
  6. Per caricare e scaricare i file dal BLOB, usare i comandi seguenti:Use the following commands to upload and download files to the blob:

    • Per caricare un file:To upload a file:

      azure storage blob upload -a <storage-account-name> -k <primary-key> <source-file> <container-name> <blob-name>
      
    • Per scaricare un file:To download a file:

      azure storage blob download -a <storage-account-name> -k <primary-key> <container-name> <blob-name> <destination-file>
      

Nota

Se si usa sempre lo stesso account di archiviazione, anziché specificare l'account e la chiave per ogni comando è possibile impostare le variabili di ambiente seguenti:If you always work with the same storage account, you can set the following environment variables instead of specifying the account and key for every command:

  • AZURE_STORAGE_ACCOUNT: nome dell'account di archiviazioneAZURE_STORAGE_ACCOUNT: The storage account name
  • AZURE_STORAGE_ACCESS_KEY: chiave dell'account di archiviazioneAZURE_STORAGE_ACCESS_KEY: The storage account key

Azure PowerShellAzure PowerShell

Azure PowerShell è un ambiente di scripting che può essere usato per controllare e automatizzare la distribuzione e la gestione dei carichi di lavoro in Azure.Azure PowerShell is a scripting environment that you can use to control and automate the deployment and management of your workloads in Azure. Per informazioni sulla configurazione della workstation per l'esecuzione di Azure PowerShell, vedere Come installare e configurare Azure PowerShell.For information about configuring your workstation to run Azure PowerShell, see Install and configure Azure PowerShell.

Importante

Il supporto di Azure PowerShell per la gestione delle risorse HDInsight tramite Azure Service Manager è deprecato ed è stato rimosso dal 1° gennaio 2017.Azure PowerShell support for managing HDInsight resources using Azure Service Manager is deprecated, and was removed on January 1, 2017. La procedura descritta in questo documento usa i nuovi cmdlet HDInsight, compatibili con Azure Resource Manager.The steps in this document use the new HDInsight cmdlets that work with Azure Resource Manager.

Per installare la versione più recente, seguire la procedura descritta in Come installare e configurare Azure PowerShell .Please follow the steps in Install and configure Azure PowerShell to install the latest version of Azure PowerShell. Se sono presenti script che devono essere modificati per l'uso dei nuovi cmdlet compatibili con Azure Resource Manager, per altre informazioni vedere Migrazione a strumenti di sviluppo basati su Azure Resource Manager per i cluster HDInsight .If you have scripts that need to be modified to use the new cmdlets that work with Azure Resource Manager, see Migrating to Azure Resource Manager-based development tools for HDInsight clusters for more information.

Per caricare un file locale in Archiviazione di AzureTo upload a local file to Azure Storage

  1. Aprire la console di Azure PowerShell come illustrato in Come installare e configurare Azure PowerShell.Open the Azure PowerShell console as instructed in Install and configure Azure PowerShell.
  2. Impostare i valori delle prime cinque variabili nello script seguente:Set the values of the first five variables in the following script:

    $resourceGroupName = "<AzureResourceGroupName>"
    $storageAccountName = "<StorageAccountName>"
    $containerName = "<ContainerName>"
    
    $fileName ="<LocalFileName>"
    $blobName = "<BlobName>"
    
    # Get the storage account key
    $storageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName)[0].Value
    # Create the storage context object
    $destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageaccountkey
    
    # Copy the file from local workstation to the Blob container
    Set-AzureStorageBlobContent -File $fileName -Container $containerName -Blob $blobName -context $destContext
    
  3. Incollare lo script nella console di Azure PowerShell per eseguirlo e copiare il file.Paste the script into the Azure PowerShell console to run it to copy the file.

Per script di PowerShell di esempio creati per funzionare con HDInsight, vedere Strumenti HDInsight.For example PowerShell scripts created to work with HDInsight, see HDInsight tools.

AzCopyAzCopy

AzCopy è un strumento della riga di comando progettato per semplificare l'attività di trasferimento dati in entrata e in uscita da un account di archiviazione di Azure.AzCopy is a command-line tool that is designed to simplify the task of transferring data into and out of an Azure Storage account. Può essere usato come strumento autonomo o può essere incorporato in un'applicazione esistente.You can use it as a standalone tool or incorporate this tool in an existing application. Download di AzCopy.Download AzCopy.

La sintassi di AzCopy è:The AzCopy syntax is:

AzCopy <Source> <Destination> [filePattern [filePattern...]] [Options]

Per altre informazioni, vedere AzCopy: caricamento/download di file per BLOB di Azure.For more information, see AzCopy - Uploading/Downloading files for Azure Blobs.

È disponibile l'anteprima di Azcopy in Linux.Azcopy on Linux preview is available. Vedere Annuncio della versione di anteprima di AzCopy in Linux.See Announcing AzCopy on Linux Preview.

Riga di comando di HadoopHadoop command line

La riga di comando di Hadoop è utile solo per archiviare i dati nel BLOB di archiviazione di Azure quando i dati sono già presenti nel nodo head del cluster.The Hadoop command line is only useful for storing data into Azure storage blob when the data is already present on the cluster head node.

Per usare il comando Hadoop, è innanzitutto necessario connettersi nel nodo head mediante uno dei metodi seguenti:In order to use the Hadoop command, you must first connect to the headnode using one of the following methods:

Dopo essersi connessi, è possibile usare la sintassi seguente per caricare un file nell'archiviazione.Once connected, you can use the following syntax to upload a file to storage.

hadoop -copyFromLocal <localFilePath> <storageFilePath>

Ad esempio, hadoop fs -copyFromLocal data.txt /example/data/data.txtFor example, hadoop fs -copyFromLocal data.txt /example/data/data.txt

Poiché il file system predefinito per HDInsight si trova in Archiviazione di Microsoft Azure, /example/datadavinci.txt si trova effettivamente in Archiviazione di Microsoft Azure.Because the default file system for HDInsight is in Azure Storage, /example/data.txt is actually in Azure Storage. È inoltre possibile fare riferimento al file come segue:You can also refer to the file as:

wasb:///example/data/data.txt

oppureor

wasb://<ContainerName>@<StorageAccountName>.blob.core.windows.net/example/data/davinci.txt

Per un elenco di altri comandi Hadoop che funzionano con i file, vedere http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/FileSystemShell.htmlFor a list of other Hadoop commands that work with files, see http://hadoop.apache.org/docs/r2.7.0/hadoop-project-dist/hadoop-common/FileSystemShell.html

Avviso

Nei cluster HBase la dimensione di blocco predefinita usata per la scrittura dei dati è 256 KB.On HBase clusters, the default block size used when writing data is 256 KB. Questa impostazione non costituisce un problema quando si usano API HBase o REST, ma l'uso dei comandi hadoop o hdfs dfs per scrivere dati di dimensioni superiori a ~12 GB provoca un errore.While this works fine when using HBase APIs or REST APIs, using the hadoop or hdfs dfs commands to write data larger than ~12 GB results in an error. Per altre informazioni, vedere la sezione Eccezione di archiviazione per la scrittura nel BLOB più avanti in questo articolo.For more information, see the storage exception for write on blob section in this article.

Client con interfaccia graficaGraphical clients

Esistono diverse applicazioni che forniscono un'interfaccia grafica per usare Archiviazione di Azure.There are also several applications that provide a graphical interface for working with Azure Storage. Nella tabella seguente è riportato un elenco di alcune di queste applicazioni:The following table is a list of a few of these applications:

ClientClient LinuxLinux OS XOS X WindowsWindows
Microsoft Visual Studio Tools per HDInsightMicrosoft Visual Studio Tools for HDInsight
Azure Storage ExplorerAzure Storage Explorer
Cloud Storage Studio 2Cloud Storage Studio 2
CloudXplorerCloudXplorer
Azure ExplorerAzure Explorer
CyberduckCyberduck

Visual Studio Tools per HDInsightVisual Studio Tools for HDInsight

Per altre informazioni, vedere Esplorare le risorse collegate.For more information, see Navigate the linked resources.

Azure Storage ExplorerAzure Storage Explorer

Azure Storage Explorer è uno strumento utile per l'esame e la modifica dei dati nei BLOB.Azure Storage Explorer is a useful tool for inspecting and altering the data in blobs. Si tratta di uno strumento gratuito open-source che è possibile scaricare da http://storageexplorer.com/.It is a free, open source tool that can be downloaded from http://storageexplorer.com/. Anche il codice sorgente è disponibile da questo collegamento.The source code is available from this link as well.

Prima di usare lo strumento è necessario conoscere il nome e la chiave dell'account di archiviazione di Azure.Before using the tool, you must know your Azure storage account name and account key. Per istruzioni sull'acquisizione di queste informazioni, vedere la sezione "Procedura: Visualizzare, copiare e rigenerare le chiavi di accesso alle risorse di archiviazione" dell'articolo Creare, gestire o eliminare un account di archiviazione.For instructions about getting this information, see the "How to: View, copy, and regenerate storage access keys" section of Create, manage, or delete a storage account.

  1. Eseguire Azure Storage Explorer.Run Azure Storage Explorer. Se è la prima volta che si esegue Storage Explorer, è necessario specificare il _nome account di archiviazione e la chiave account di archiviazione.If it is the first time you have run the Storage Explorer, you are prompted for the _Storage account name and Storage account key. Se questo strumento è stato eseguito prima, usare il pulsante Aggiungi per aggiungere un nuovo nome e una nuova chiave dell'account di archiviazione.If you have run it before, use the Add button to add a new storage account name and key.

    Immettere il nome e la chiave dell'account di archiviazione usati dal cluster HDInsight e quindi selezionare SALVA E APRI.Enter the name and key for the storage account used by your HDInsight cluster and then select SAVE & OPEN.

    HDI.AzureStorageExplorer

  2. Nell'elenco dei contenitori a sinistra dell'interfaccia, fare clic sul nome del contenitore associato al cluster HDInsight.In the list of containers to the left of the interface, click the name of the container that is associated with your HDInsight cluster. Per impostazione predefinita, questo è il nome del cluster HDInsight, ma potrebbe essere diverso se è stato immesso un nome specifico durante la creazione del cluster.By default, it is the name of the HDInsight cluster, but may be different if you entered a specific name when creating the cluster.
  3. Sulla barra degli strumenti, selezionare l'icona di caricamento.From the tool bar, select the upload icon.

    Barra degli strumenti con icona di caricamento evidenziata

  4. Specificare un file da caricare e quindi fare clic su Open.Specify a file to upload, and then click Open. Quando richiesto, selezionare Carica per caricare il file nella directory principale del contenitore di archiviazione.When prompted, select Upload to upload the file to the root of the storage container. Se si vuole caricare il file in un percorso specifico, immettere il percorso nel campo Destinazione, quindi selezionare Carica.If you want to upload the file to a specific path, enter the path in the Destination field and then select Upload.

    Finestra di dialogo di caricamento file

    Dopo che il file ha terminato il caricamento, è possibile utilizzarlo dai processi nel cluster HDInsight.Once the file has finished uploading, you can use it from jobs on the HDInsight cluster.

Montare Archiviazione di Azure come unità localeMount Azure Storage as Local Drive

Vedere Montare Archiviazione di Azure come unità locale.See Mount Azure Storage as Local Drive.

Caricamento tramite serviziUpload using services

Data factory di AzureAzure Data Factory

Data factory di Azure è un servizio completamente gestito per la composizione di servizi di archiviazione, elaborazione e spostamento dei dati in pipeline di produzione dei dati ottimizzate, scalabili e affidabili.The Azure Data Factory service is a fully managed service for composing data storage, data processing, and data movement services into streamlined, scalable, and reliable data production pipelines.

Azure Data Factory può essere usato per spostare i dati in Archiviazione di Microsoft Azure o per creare pipeline di dati che usano direttamente le funzionalità di HDInsight, ad esempio Hive e Pig.Azure Data Factory can be used to move data into Azure Storage, or to create data pipelines that directly use HDInsight features such as Hive and Pig.

Per altre informazioni, vedere Documentazione di Data factory.For more information, see the Azure Data Factory documentation.

Apache SqoopApache Sqoop

Sqoop è uno strumento progettato per il trasferimento di dati tra Hadoop e i database relazionali.Sqoop is a tool designed to transfer data between Hadoop and relational databases. Può essere usato per importare dati in HDFS (Hadoop Distributed File System) da un sistema di gestione di database relazionali (RDBMS), ad esempio SQL, MySQL oppure Oracle, trasformare i dati in Hadoop con MapReduce o Hive e quindi esportarli nuovamente in un sistema RDBMS.You can use it to import data from a relational database management system (RDBMS), such as SQL Server, MySQL, or Oracle into the Hadoop distributed file system (HDFS), transform the data in Hadoop with MapReduce or Hive, and then export the data back into an RDBMS.

Per altre informazioni, vedere Usare Sqoop con HDInsight.For more information, see Use Sqoop with HDInsight.

SDK di sviluppoDevelopment SDKs

È possibile accedere ad Archiviazione di Microsoft Azure anche tramite un SDK di Azure dai linguaggi di programmazione seguenti:Azure Storage can also be accessed using an Azure SDK from the following programming languages:

  • .NET.NET
  • JavaJava
  • Node.jsNode.js
  • PHPPHP
  • PythonPython
  • RubyRuby

Per altre informazioni sull'installazione di SDK di Azure, vedere Download di AzureFor more information on installing the Azure SDKs, see Azure downloads

Risoluzione dei problemiTroubleshooting

Eccezione di archiviazione per la scrittura nel BLOBStorage exception for write on blob

Sintomi: quando si usa il comando hadoop o hdfs dfs per scrivere file di dimensioni pari o superiori a ~12 GB in un cluster HBase, è possibile che si verifichi l'errore seguente:Symptoms: When using the hadoop or hdfs dfs commands to write files that are ~12 GB or larger on an HBase cluster, you may encounter the following error:

ERROR azure.NativeAzureFileSystem: Encountered Storage Exception for write on Blob : example/test_large_file.bin._COPYING_ Exception details: null Error Code : RequestBodyTooLarge
copyFromLocal: java.io.IOException
        at com.microsoft.azure.storage.core.Utility.initIOException(Utility.java:661)
        at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:366)
        at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:350)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
Caused by: com.microsoft.azure.storage.StorageException: The request body is too large and exceeds the maximum permissible limit.
        at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:89)
        at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:307)
        at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:182)
        at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadBlockInternal(CloudBlockBlob.java:816)
        at com.microsoft.azure.storage.blob.CloudBlockBlob.uploadBlock(CloudBlockBlob.java:788)
        at com.microsoft.azure.storage.blob.BlobOutputStream$1.call(BlobOutputStream.java:354)
        ... 7 more

Causa: i cluster HBase in HDInsight usano per impostazione predefinita dimensioni di blocco pari a 256 KB per la scrittura nelle risorse di archiviazione di Azure.Cause: HBase on HDInsight clusters default to a block size of 256KB when writing to Azure storage. Benché questa impostazione sia ottimale per le API HBase o REST, genera un errore se si usano le utilità da riga di comando hadoop o hdfs dfs.While it works for HBase APIs or REST APIs, it results in an error when using the hadoop or hdfs dfs command-line utilities.

Risoluzione: usare fs.azure.write.request.size per specificare dimensioni maggiori per i blocchi.Resolution: Use fs.azure.write.request.size to specify a larger block size. È possibile eseguire questa operazione per i singoli utenti usando il parametro -D.You can do this on a per-use basis by using the -D parameter. Il comando seguente è un esempio di utilizzo di questo parametro con il comando hadoop:The following command is an example using this parameter with the hadoop command:

hadoop -fs -D fs.azure.write.request.size=4194304 -copyFromLocal test_large_file.bin /example/data

È anche possibile aumentare globalmente il valore di fs.azure.write.request.size usando Ambari.You can also increase the value of fs.azure.write.request.size globally by using Ambari. La procedura seguente consente di cambiare il valore nell'interfaccia utente Web di Ambari:The following steps can be used to change the value in the Ambari Web UI:

  1. Nel browser passare all'interfaccia utente Web di Ambari per il cluster,In your browser, go to the Ambari Web UI for your cluster. ovvero https://CLUSTERNAME.azurehdinsight.net, dove CLUSTERNAME è il nome del cluster.This is https://CLUSTERNAME.azurehdinsight.net, where CLUSTERNAME is the name of your cluster.

    Quando richiesto, immettere il nome dell'amministratore e la password per il cluster.When prompted, enter the admin name and password for the cluster.

  2. Sul lato sinistro dello schermo selezionale HDFS e quindi fare clic sulla scheda Configs (Configurazioni).From the left side of the screen, select HDFS, and then select the Configs tab.
  3. Nel campo Filter (Filtro) immettere fs.azure.write.request.size.In the Filter... field, enter fs.azure.write.request.size. Il campo e il valore corrente vengono visualizzati al centro della pagina.This displays the field and current value in the middle of the page.
  4. Modificare il valore da 262144 (256 KB) al nuovo valore,Change the value from 262144 (256KB) to the new value. ad esempio 4194304 (4 MB).For example, 4194304 (4MB).

Immagine della modifica del valore tramite l'interfaccia utente Web di Ambari

Per altre informazioni sull'uso di Ambari, vedere Gestire i cluster HDInsight mediante l'utilizzo dell'interfaccia utente Web Ambari.For more information on using Ambari, see Manage HDInsight clusters using the Ambari Web UI.

Passaggi successiviNext steps

Dopo aver appreso come importare dati in HDInsight, leggere gli articoli seguenti per informazioni sull'esecuzione di analisi:Now that you understand how to get data into HDInsight, read the following articles to learn how to perform analysis: