Usare DistCp per copiare dati tra BLOB di Archiviazione di Azure e Azure Data Lake Storage Gen1
Se si dispone di un cluster HDInsight con accesso ad Azure Data Lake Storage Gen1, è possibile usare strumenti dell'ecosistema Hadoop come DistCp per copiare dati da e verso un'archiviazione cluster HDInsight (WASB) in un account Data Lake Storage Gen1. Questo articolo illustra come usare lo strumento DistCp.
Prerequisiti
- Un abbonamento di Azure. Vedere Ottenere una versione di prova gratuita di Azure.
- Un account di Azure Data Lake Storage Gen1. Per istruzioni su come crearne uno, vedere Introduzione ad Azure Data Lake Storage Gen1.
- cluster Azure HDInsight con accesso a un account Data Lake Storage Gen1. Consulta Creare un cluster HDInsight con Data Lake Storage Gen1. Assicurarsi di abilitare il Desktop remoto per il cluster.
Usare DistCp da un cluster HDInsight Linux
Un cluster HDInsight include lo strumento DistCp, che può essere usato per copiare dati da origini diverse in un cluster HDInsight. Se il cluster HDInsight è stato configurato per l'uso di Data Lake Storage Gen1 come risorsa di archiviazione aggiuntiva, è possibile usare DistCp predefinito per copiare i dati da e verso un account Data Lake Storage Gen1. In questa sezione viene illustrato come usare lo strumento DistCp.
Dal desktop usare SSH per connettersi al cluster. Vedere Connettersi a un cluster HDInsight basato su Linux. Eseguire i comandi dal prompt SSH.
Verificare se è possibile accedere ai BLOB di Archiviazione di Azure (WASB). Eseguire il comando seguente:
hdfs dfs –ls wasb://<container_name>@<storage_account_name>.blob.core.windows.net/
L'output fornisce un elenco di contenuti nel BLOB di archiviazione.
Analogamente, verificare se è possibile accedere all'account Data Lake Storage Gen1 dal cluster. Eseguire il comando seguente:
hdfs dfs -ls adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/
L'output fornisce un elenco di file e cartelle nell'account Data Lake Storage Gen1.
Usare DistCp per copiare dati da WASB a un account Data Lake Storage Gen1.
hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder
Il comando copia il contenuto della cartella /example/data/gutenberg/ in WASB in /myfolder nell'account Data Lake Storage Gen1.
Analogamente, usare DistCp per copiare dati da un account Data Lake Storage Gen1 a WASB.
hadoop distcp adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg
Il comando copia il contenuto della cartella /myfolder nell'account di Data Lake Storage Gen1 nella cartella /example/data/gutenberg/ in WASB.
Considerazioni sulle prestazioni per l'uso di DistCp
Poiché la granularità più bassa dello strumento DistCp è un singolo file, l'impostazione del numero massimo di copie simultanee è il parametro più importante per ottimizzarlo rispetto a Data Lake Storage Gen1. È possibile controllare il numero di copie simultanee impostando il numero di mapper ('m') parametro nella riga di comando. Questo parametro specifica il numero massimo di mapper usati per la copia dei dati. Il valore predefinito è 20.
Esempio:
hadoop distcp wasb://<container_name>@<storage_account_name>.blob.core.windows.net/example/data/gutenberg adl://<data_lake_storage_gen1_account>.azuredatalakestore.net:443/myfolder -m 100
Come determinare il numero di mapper da usare
Ecco alcune linee guida che è possibile usare.
Passaggio 1: Determinare la memoria totale yarn- Il primo passaggio consiste nel determinare la memoria YARN disponibile per il cluster in cui si esegue il processo DistCp. Queste informazioni sono disponibili nel portale di Ambari associato al cluster. Passare a YARN e visualizzare la scheda configurazioni per vedere la memoria YARN. Per ottenere la memoria totale YARN, moltiplicare la memoria YARN per nodo per il numero di nodi presenti nel 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. Le informazioni sulle dimensioni del contenitore YARN sono disponibili anche nel portale di Ambari. Vai a YARN e visualizza la scheda Configs di. Le dimensioni del contenitore YARN sono visualizzate in questa finestra. L'equazione per arrivare al numero di mapper (m) è:
m = (number of nodes * YARN memory for each node) / YARN container size
Esempio:
Si supponga di avere quattro nodi D14v2s nel cluster e di voler trasferire 10 TB di dati da 10 cartelle diverse. Ogni cartella contiene quantità variabili di dati e le dimensioni dei file all'interno di ogni cartella sono diverse.
Memoria TOTALE YARN: dal portale di Ambari si determina che la memoria YARN è di 96 GB per un nodo D14. Pertanto, la memoria totale di YARN per un cluster a quattro nodi è:
YARN memory = 4 * 96GB = 384GB
Numero di mapper: dal portale di Ambari si determina che le dimensioni del contenitore YARN sono pari a 3072 per un nodo del cluster D14. Di conseguenza, il numero di mapper è:
m = (4 nodes * 96GB) / 3072MB = 128 mappers
Se altre applicazioni usano memoria, è possibile scegliere di usare solo una parte della memoria YARN del cluster per DistCp.
Copia di set di dati di grandi dimensioni
Quando le dimensioni del set di dati da spostare sono grandi (ad esempio, > 1 TB) o se sono presenti molte cartelle diverse, è consigliabile usare più processi DistCp. È probabile che non vi sia alcun miglioramento delle prestazioni, ma distribuisce i processi in modo che, se un processo non riesce, è necessario riavviare solo il processo specifico anziché l'intero processo.
Limitazioni
DistCp tenta di creare mapper con dimensioni simili per ottimizzare le prestazioni. Un aumento del numero di mapper non sempre corrisponde a un miglioramento delle prestazioni.
DistCp è limitato a un solo mapper per file, Pertanto, non dovresti avere più mapper di quelli che hai come file. Poiché DistCp può assegnare un solo mapper a un file, questo limita la quantità di concorrenza che può essere usata per copiare file di grandi dimensioni.
Se si dispone di un numero ridotto di file di grandi dimensioni, suddividerli in blocchi di file da 256 MB per offrire maggiore concorrenza potenziale.
Se si esegue la copia da un account di archiviazione BLOB di Azure, il processo di copia potrebbe essere limitato sul lato archiviazione BLOB. In questo modo si riducono le prestazioni del processo di copia. Per altre informazioni sui limiti dell'archiviazione Blob di Azure, vedere Limiti di archiviazione di Azure in limiti della sottoscrizione di Azure e dei servizi.