Usare Distcp per copiare dati tra i BLOB di archiviazione di Azure e Archivio Data LakeUse Distcp to copy data between Azure Storage Blobs and Data Lake Store

Se è stato creato un cluster HDInsight con accesso a Data Lake Store, è possibile usare gli strumenti dell'ecosistema Hadoop, ad esempio DistCp, per copiare i dati da e in una risorsa di archiviazione del cluster HDInsight (WASB) in un account Data Lake Store.If you have an HDInsight cluster with access to Data Lake Store, you can use Hadoop ecosystem tools like Distcp to copy data to and from an HDInsight cluster storage (WASB) into a Data Lake Store account. Questo articolo include istruzioni sull'uso dello strumento DistCp.This article provides instructions on how use the Distcp tool.

PrerequisitiPrerequisites

Apprendimento rapido con i videoDo you learn fast with videos?

Guardare questo video su come copiare dati tra i BLOB di archiviazione di Azure e Archivio Data Lake con DistCp.Watch this video on how to copy data between Azure Storage Blobs and Data Lake Store using DistCp.

Usare Distcp da un cluster HDInsight LinuxUse Distcp from an HDInsight Linux cluster

Un cluster HDInsight include l'utilità Distcp, che può essere usata per copiare i dati da diverse origini in un cluster HDInsight.An HDInsight cluster comes with the Distcp utility, which can be used to copy data from different sources into an HDInsight cluster. Se il cluster HDInsight è stato configurato per l'uso di Data Lake Store come risorsa di archiviazione aggiuntiva, l'utilità DistCp può essere usata senza modifiche anche per copiare dati in e da un account Data Lake Store.If you have configured the HDInsight cluster to use Data Lake Store as additional storage, the Distcp utility can be used out-of-the-box to copy data to and from a Data Lake Store account as well. Questa sezione illustra come usare l'utilità DistCp.In this section, we look at how to use the Distcp utility.

  1. Dal desktop usare SSH per connettersi al cluster.From your desktop, use SSH to connect to the cluster. Vedere Connettersi a un cluster HDInsight basato su Linux.See Connect to a Linux-based HDInsight cluster. Eseguire i comandi dal prompt SSH.Run the commands from the SSH prompt.

  2. Verificare se è possibile accedere ai BLOB di archiviazione di Azure.Verify whether you can access the Azure Storage Blobs (WASB). Eseguire il comando seguente:Run the following command:

     hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
    

    L'output dovrebbe mostrare un elenco di contenuti del BLOB di archiviazione.The output should provide a list of contents in the storage blob.

  3. Analogamente, verificare se è possibile accedere all'account Archivio Data Lake dal cluster.Similarly, verify whether you can access the Data Lake Store account from the cluster. Eseguire il comando seguente:Run the following command:

     hdfs dfs -ls adl://<data_lake_store_account>.azuredatalakestore.net:443/
    

    L'output dovrebbe mostrare un elenco di file/cartelle nell'account Data Lake Store.The output should provide a list of files/folders in the Data Lake Store account.

  4. Usare Distcp per copiare i dati dal BLOB di archiviazione di Azure all'account Archivio Data Lake.Use Distcp to copy data from WASB to a Data Lake Store account.

     hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_store_account>.azuredatalakestore.net:443/myfolder
    

    Il comando copia i contenuti della cartella /example/data/gutenberg/ in WASB in /myfolder nell'account Data Lake Store.The command copies the contents of the /example/data/gutenberg/ folder in WASB to /myfolder in the Data Lake Store account.

  5. Analogamente, usare Distcp per copiare dati dall'account Archivio Data Lake al BLOB di archiviazione di Azure.Similarly, use Distcp to copy data from Data Lake Store account to WASB.

     hadoop distcp adl://<data_lake_store_account>.azuredatalakestore.net:443/myfolder wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg
    

    Il comando copia i contenuti di /myfolder nell'account Data Lake Store nella cartella /example/data/gutenberg/ in WASB.THe command copies the contents of /myfolder in the Data Lake Store account to /example/data/gutenberg/ folder in WASB.

Considerazioni sulle prestazioni per l'uso di DistCpPerformance considerations while using DistCp

Dato che il livello di granularità minimo per DistCp corrisponde a un singolo file, l'impostazione del numero massimo di copie simultanee è il parametro più importante per l'ottimizzazione per Data Lake Store.Because DistCp’s lowest granularity is a single file, setting the maximum number of simultaneous copies is the most important parameter to optimize it against Data Lake Store. Il numero di copie simultanee si controlla impostando il parametro del numero di mapper ('m') nella riga di comando.Number of simultaneous copies is controlled by setting the number of mappers (‘m’) parameter on the command line. Questo parametro specifica il numero massimo di mapper usati per la copia dei dati.This parameter specifies the maximum number of mappers that are used to copy data. Il valore predefinito è 20.Default value is 20.

EsempioExample

hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_store_account>.azuredatalakestore.net:443/myfolder -m 100

Come determinare il numero di mapper da usareHow do I determine the number of mappers to use?

Ecco alcune linee guida che è possibile usare.Here's some guidance that you can use.

  • Passaggio 1: determinare la memoria totale di YARN - il primo passaggio consiste nel determinare la memoria di YARN disponibile per il cluster in cui viene eseguito il processo DistCp.Step 1: Determine total YARN memory - The first step is to determine the YARN memory available to the cluster where you run the DistCp job. Queste informazioni sono disponibili nel portale di Ambari associato al cluster.This information is available in the Ambari portal associated with the cluster. Passare a YARN e visualizzare la scheda Configs (Configurazioni) per visualizzare la memoria di YARN.Navigate to YARN and view the Configs tab to see the YARN memory. Per ottenere la memoria totale di YARN, moltiplicare la memoria di YARN per ogni nodo per il numero di nodi nel cluster.To get the total YARN memory, multiply the YARN memory per node with the number of nodes you have in your cluster.

  • Passaggio 2: calcolare il numero di mapper - il valore di m è uguale al quoziente della memoria totale di YARN divisa per le dimensioni del contenitore YARN.Step 2: Calculate the number of mappers - The value of m is equal to the quotient of total YARN memory divided by the YARN container size. Anche queste informazioni sono disponibili nel portale di Ambari.The YARN container size information is available in the Ambari portal as well. Passare a YARN e visualizzare la scheda Configs (Configurazioni). Le dimensioni del contenitore YARN sono visualizzate in questa finestra.Navigate to YARN and view the Configs tab. The YARN container size is displayed in this window. L'equazione per ottenere il numero di mapper (m) èThe equation to arrive at the number of mappers (m) is

      m = (number of nodes * YARN memory for each node) / YARN container size
    

EsempioExample

Si supponga di avere 4 nodi D14v2s nel cluster e di voler tentare il trasferimento di 10 TB di dati da 10 cartelle diverse.Let’s assume that you have a 4 D14v2s nodes in the cluster and you are trying to transfer 10 TB of data from 10 different folders. Ogni cartella contiene quantità variabili di dati e le dimensioni dei file all'interno di ogni cartella sono diverse.Each of the folders contains varying amounts of data and the file sizes within each folder are different.

  • Memoria di YARN totale - Dal portale di Ambari si stabilisce che la memoria di YARN è pari a 96 GB per un nodo D14.Total YARN memory - From the Ambari portal you determine that the YARN memory is 96 GB for a D14 node. Pertanto, la memoria totale di YARN per un cluster a quattro nodi è:So, total YARN memory for four node cluster is:

      YARN memory = 4 * 96GB = 384GB
    
  • Numero di mapper - Dal portale di Ambari si stabilisce che le dimensioni del contenitore YARN sono 3072 per un nodo del cluster D14.Number of mappers - From the Ambari portal you determine that the YARN container size is 3072 for a D14 cluster node. Il numero di mapper è quindi:So, number of mappers is:

      m = (4 nodes * 96GB) / 3072MB = 128 mappers
    

Se altre applicazioni usano la memoria, è possibile scegliere di usare solo una parte della memoria di YARN del cluster per DistCp.If other applications are using memory, then you can choose to only use a portion of your cluster’s YARN memory for DistCp.

Copia di set di dati di grandi dimensioniCopying large datasets

Quando le dimensioni del set di dati da spostare sono molto grandi (ad esempio, maggiori di 1 TB) o se esistono molte cartelle diverse, è consigliabile usare più processi DistCp.When the size of the dataset to be moved is large (for example, >1 TB) or if you have many different folders, you should consider using multiple DistCp jobs. Non si noterà probabilmente alcun miglioramento delle prestazioni, ma in questo modo è possibile distribuire i processi in modo che, se un processo non riesce, sia sufficiente riavviare tale processo specifico invece dell'intero processo.There is likely no performance gain, but it spreads out the jobs so that if any job fails, you only need to restart that specific job rather than the entire job.

LimitazioniLimitations

  • DistCp tenta di creare mapper con dimensioni simili per ottimizzare le prestazioni.DistCp tries to create mappers that are similar in size to optimize performance. Un aumento del numero di mapper non sempre corrisponde a un miglioramento delle prestazioni.Increasing the number of mappers may not always increase performance.

  • DistCp è limitato a un solo mapper per file,DistCp is limited to only one mapper per file. quindi non è possibile avere più mapper che file.Therefore, you should not have more mappers than you have files. Dato che DistCp può assegnare un solo mapper a un file, ciò comporta una limitazione alla concorrenza utilizzabile per la copia di file di grandi dimensioni.Since DistCp can only assign one mapper to a file, this limits the amount of concurrency that can be used to copy large files.

  • In presenza di un numero ridotto di file di grandi dimensioni, è consigliabile dividerli in blocchi di file da 256 MB per ottenere una maggiore concorrenza potenziale.If you have a small number of large files, then you should split them into 256 MB file chunks to give you more potential concurrency.

  • Se si esegue la copia da un account di Archiviazione BLOB di Azure, il processo di copia potrebbe essere limitato nell'ambito dell'archiviazione BLOB.If you are copying from an Azure Blob Storage account, your copy job may be throttled on the blob storage side. In questo caso le prestazioni del processo di copia diminuiscono.This degrades the performance of your copy job. Per altre informazioni sui limiti di Archiviazione BLOB di Azure, vedere i limiti di Archiviazione di Azure in Sottoscrizione di Azure e limiti, quote e vincoli dei servizi.To learn more about the limits of Azure Blob Storage, see Azure Storage limits at Azure subscription and service limits.

Vedere ancheSee also