Usare DistCp per copiare i dati tra BLOB di archiviazione di Azure e Azure Data Lake Storage Gen1
Se si dispone di un cluster HDInsight con accesso a Azure Data Lake Storage Gen1, è possibile usare gli strumenti dell'ecosistema Hadoop come DistCp per copiare i dati da e verso un archivio cluster HDInsight (WASB) in un account Data Lake Storage Gen1. Questo articolo illustra come usare lo strumento DistCp.
Prerequisiti
- Una sottoscrizione di Azure. Vedere Ottenere una versione di prova gratuita di Azure.
- Un account Azure Data Lake Storage Gen1. Per istruzioni su come crearne uno, vedere Iniziare a usare Azure Data Lake Storage Gen1.
- Cluster HDInsight di Azure con accesso a un account Data Lake Storage Gen1. Vedere 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 i 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 out-of-the-box 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 di 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 i 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 i contenuti della cartella /esempio/data/gutenberg/ della cartella in WASB in /myfolder nell'account Data Lake Storage Gen1.
Analogamente, usare DistCp per copiare i 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 di /myfolder nell'account Data Lake Storage Gen1 nella cartella /example/data/gutenberg/ in WASB.
Considerazioni sulle prestazioni per l'uso di DistCp
Poiché la granularità minima dello strumento DistCp è un singolo file, impostando il 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 mappatori da usare
Ecco alcune linee guida che è possibile usare.
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. Queste informazioni sono disponibili nel portale di Ambari associato al cluster. Passare a YARN e visualizzare la scheda Configurazioni per visualizzare la memoria YARN. Per ottenere la memoria totale di YARN, moltiplicare la memoria di YARN per ogni nodo per il numero di nodi 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. Passare a YARN e visualizzare la scheda Configurazioni . Le dimensioni del contenitore YARN vengono visualizzate in questa finestra. L'equazione per arrivare al numero di mappatori (m) è:
m = (number of nodes * YARN memory for each node) / YARN container size
Esempio:
Si supponga di avere quattro nodi D14v2s nel cluster e si vuole 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 di YARN totale - Dal portale di Ambari si stabilisce che la memoria di YARN è pari a 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 stabilisce che le dimensioni del contenitore YARN sono 3072 per un nodo del cluster D14. Quindi, il numero di mappatori è:
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. Probabilmente non esiste alcun miglioramento delle prestazioni, ma si 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 è consigliabile avere più mapping rispetto ai 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 una concorrenza più potenziale.
Se si esegue la copia da un account di archiviazione BLOB di Azure, il processo di copia può essere limitato sul lato archiviazione BLOB. In questo caso le prestazioni del processo di copia diminuiscono. Per altre informazioni sui limiti dell'archiviazione BLOB di Azure, vedere Limiti di archiviazione di Azure in sottoscrizione di Azure e limiti del servizio.