2015-08-06 24 views

risposta

16

DistCp (copia distribuita) è uno strumento utilizzato per copiare i dati tra i cluster. Utilizza MapReduce per effettuare la distribuzione, la gestione e il recupero degli errori e il reporting. Espande un elenco di file e directory in input per mappare le attività, ognuna delle quali copierà una partizione dei file specificati nell'elenco sorgente.

utilizzati: $ hadoop distcp <src> <dst>

esempio: $ hadoop distcp hdfs://nn1:8020/file1 hdfs://nn2:8020/file2

file1 da nn1 viene copiato nn2 con nome file2

Distcp è il miglior strumento fin d'ora. Sqoop viene utilizzato per copiare i dati dal database relazionale a HDFS e viceversa, ma non tra HDFS e HDFS.

Maggiori informazioni:

Ci sono due versioni disponibili - le performance di runtime in distcp2 è più rispetto al distcp

3

distcp viene utilizzato per copiare i dati a e dai filesystem hadoop in parallelo. È simile al comando generico hadoop fs -cp. Nel processo in background, distcp viene implementato come un lavoro MapReduce in cui i mapping sono implementati solo per la copia in parallelo attraverso il cluster.

Usage:

  • copia un file all'altro

    % hadoop distcp file1 file2

  • directory copiare da una posizione a un'altra

    % hadoop distcp dir1 dir2

Se dir2 non esiste, verrà creata tale cartella e verrà copiato il contenuto. Se dir2 esiste già, allora verrà copiato sotto di esso. L'opzione -overwrite impone la sovrascrittura dei file all'interno della stessa cartella. L'opzione -update aggiorna solo i file che sono stati modificati.

  • trasferimento di dati tra due cluster HDFS

    % hadoop distcp -update -delete hdfs://nn1/dir1 hdfs://nn2/dir2

-delete opzione consente di eliminare i file o le directory dalla destinazione che non sono presenti nella sorgente.

9

Hadoop viene fornito con un programma utile chiamato distcp per la copia in parallelo di grandi quantità di dati da e verso Hadoop Filesystems. Il caso d'uso canonico per distcp è per il trasferimento di dati tra due cluster HDFS. Se i cluster eseguono versioni identiche di hadoop, lo schema hdfs è appropriato da utilizzare.

$ hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar 

I dati nella directory di /foo namenode1 verranno copiati/bar directory di namenode2. Se la directory /bar non esiste, la creerà. Inoltre possiamo menzionare più percorsi sorgente.

Simile al comando rsync, il comando distcp per impostazione predefinita salterà i file già esistenti. Possiamo anche utilizzare l'opzione -overwrite per sovrascrivere i file esistenti nella directory di destinazione. L'opzione -update aggiornerà solo i file che sono stati modificati.

$ hadoop distcp -update hdfs://namenode1/foo hdfs://namenode2/bar/foo 

distcp può anche essere implementato come un lavoro MapReduce in cui il lavoro di copiatura è fatto dalle mappe che corrono in parallelo all'interno del cluster. Non ci saranno riduttori.

Se si tenta di copiare i dati tra due cluster HDFS che eseguono versioni diverse, la copia verrà elaborata non funzionerà, poiché i sistemi RPC non sono compatibili. In tal caso, è necessario utilizzare i filesystem HFTP basati su HTTP di sola lettura per leggere dal sorgente. Qui il lavoro deve essere eseguito sul cluster di destinazione.

$ hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar 

50070 è il numero di porta predefinito per il server Web incorporato del namenode.

1

Provare dtIngest, è stato sviluppato sulla piattaforma Apache Apex. Questo strumento copia i dati da diverse fonti come HDFS, unità condivisa, NFS, FTP, Kafka verso diverse destinazioni. La copia dei dati dal cluster HDFS remoto al cluster HDFS locale è supportata da dtIngest. dtIngest esegue processi filati per copiare i dati in modo parallelo, quindi è molto veloce. Si occupa della gestione degli errori, del ripristino ecc. E supporta periodicamente le directory di polling per eseguire copie continue.

Usage: dtingest [OPZIONE] ... SourceURL ... destinationUrl esempio: HDFS dtingest: HDFS 8020/Fonte:: // // nN1 nN2: 8020/dest

0

E 'anche utile notare che è possibile eseguire i lavori MapReduce sottostanti con il cluster di origine o di destinazione in questo modo:

hadoop --config /path/to/hadoop/config distcp <src> <dst>