Questo articolo descrive le best practice consigliate per il backup di ambienti Hadoop non PowerScale in un cluster Dell PowerScale. Con la sua solida protezione dei dati con codifica di erasure che fornisce un'efficienza di archiviazione superiore all'80%, Dell PowerScale è una destinazione di backup ideale per i dati che si trovano in un cluster Hadoop. DistCp (copia distribuita) è uno strumento standard fornito con tutte le distribuzioni e le versioni di Hadoop. DistCp può copiare intere directory di Hadoop. DistCp viene eseguito come processo MapReduce per eseguire copie di file in parallelo, utilizzando completamente i sistemi, se necessario. È inoltre disponibile un'opzione per limitare la larghezza di banda per controllare l'impatto su altre attività.
AMBIENTE
In questo articolo viene utilizzato il seguente ambiente di test:
Poiché DistCp è uno strumento Hadoop standard, l'approccio descritto in questo documento è applicabile alla maggior parte, se non a tutte le altre distribuzioni e versioni di Hadoop.
Questo documento presuppone che i dati di cui eseguire il backup si trovino nel cluster HDFS PHD Hadoop nella directory /mydata. Negli esempi viene eseguito il backup di questi dati nel cluster PowerScale nella directory /ifs/hadoop/backup/mydata.
Figura 1: Backup di un cluster Hadoop su Isilon
Di seguito viene illustrato il comando di backup più semplice:
[gpadmin@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update /mydata hdfs://all-nc-s-hdfs/backup/mydata
È possibile eseguire il comando precedente su qualsiasi host su cui è installato il client Hadoop (hadoop). L'utente che esegue il comando deve disporre delle autorizzazioni per leggere i file di origine e scrivere i file di destinazione.
Le opzioni -skipcrccheck e -update devono essere specificate per evitare il controllo CRC sui file di destinazione posizionati nel cluster PowerScale. PowerScale non memorizza Hadoop CRC e il calcolo sarebbe troppo costoso. Pertanto, queste opzioni sono necessarie per evitare errori correlati al controllo CRC.
Il parametro successivo "/mydata" è il percorso di origine nel cluster Hadoop di origine. Potrebbe anche essere "/" per eseguire il backup dell'intero namespace HDFS. Poiché il percorso non è completamente qualificato, utilizza il nodo nome HDFS specificato nel parametro fs.defaultFS di core-site.xml.
Il parametro finale "hdfs://all-nc-s-hdfs/backup/mydata" è il percorso di destinazione sul cluster PowerScale. La parte host "all-nc-s-hdfs" può essere un nome DNS relativo o completo, ad esempio all-nc-s-hdfs.example.com. Deve essere il nome DNS della zona SmartConnect per il cluster PowerScale. La parte della directory "/backup/mydata" è relativa al percorso root HDFS definito nella zona di accesso al cluster PowerScale. Se il percorso root HDFS è /ifs/hadoop, questo valore si riferisce a /ifs/hadoop/backup/mydata.
Si presuppone che i file con dimensioni identiche nelle directory di origine e di destinazione siano invariati e non vengono copiati. In particolare, i timestamp dei file non vengono utilizzati per determinare i file modificati. Per ulteriori informazioni su DistCp, consultare la Guida di Hadoop DistCp versione 2.
COPIA DELLE AUTORIZZAZIONI
Per impostazione predefinita, il proprietario, il gruppo e le autorizzazioni dei file di destinazione vengono reimpostati sulle impostazioni predefinite per i nuovi file creati dall'utente che avvia DistCp. Tutti i proprietari, i gruppi e le autorizzazioni definiti per il file di origine vengono persi. Per conservare queste informazioni dai file di origine, utilizzare l'opzione -p. Poiché l'opzione -p deve eseguire chown/chgrp, l'utente che avvia DistCp deve essere un superutente nel sistema di destinazione. L'utente root sul cluster PowerScale funziona per questo scopo. Ad esempio: [root@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update -pugp /mydata hdfs://all-nc-s-hdfs/backup/mydata
UTILIZZO DI SNAPSHOT PER L'ORIGINE DI BACKUP
Il backup di dataset di grandi dimensioni può richiedere molto tempo. I file esistenti all'inizio del processo DistCp durante la scansione della struttura di directory potrebbero non esistere più quando il file viene copiato. Questa modifica nei file genera errori. Inoltre, un'applicazione potrebbe richiedere un backup point-in-time coerente affinché questo sia utilizzabile. Per risolvere questi problemi, si consiglia di creare una snapshot HDFS dell'origine per garantire che il dataset non cambi durante il processo di backup. Ciò non è correlato alla funzionalità SnapshotIQ del cluster PowerScale di destinazione.
Per utilizzare le snapshot HDFS, è innanzitutto necessario consentire le snapshot per una particolare directory:[gpadmin@phddas2-0 ~]$ hdfs dfsadmin -allowSnapshot /mydata
Allowing snapshot on /mydata succeeded
Immediatamente prima di un backup con DistCp, creare la snapshot HDFS:
[gpadmin@phddas2-0 ~]$ hdfs dfs -createSnapshot /mydata backupsnap Created snapshot /mydata/.snapshot/backupsnap
Il nome di questa snapshot è backupsnap. È possibile accedervi nel percorso HDFS /mydata/.snapshot/backupsnap. Eventuali modifiche ai file HDFS dopo questa snapshot non vengono applicate al backup successivo. È possibile eseguire il backup della snapshot su PowerScale utilizzando il seguente comando:
[gpadmin@phddas2-0 ~]$ hadoop distcp -skipcrccheck -update /mydata/.snapshot/backupsnap hdfs://all-nc-s-hdfs/backup/mydata
Al termine dell'esecuzione del comando di backup, è possibile eliminare la snapshot. In questo modo si libera tutto lo spazio utilizzato per contenere le versioni precedenti dei file che sono state modificate dopo la snapshot:
[gpadmin@phddas2-0 ~]$ hdfs dfs -deleteSnapshot /mydata backupsnap
UTILIZZO DI SNAPSHOT PowerScale PER LA DESTINAZIONE DI BACKUP
Indipendentemente dall'utilizzo delle snapshot per l'origine di backup, è possibile mantenere più snapshot della directory di destinazione del backup per ripristinare le versioni precedenti dei file.
Per creare snapshot su PowerScale, è necessario disporre di una licenza di SnapshotIQ. È possibile creare snapshot utilizzando l'interfaccia web admin o la CLI. Per creare manualmente una singola snapshot di PowerScale con la CLI, SSH in qualsiasi nodo PowerScale ed eseguire quanto segue:all-nc-s-1# isi snapshot snapshots create /ifs/hadoop/backup/mydata --name backup-2014-07-01 --expires 1D --verbose
Created snapshot backup-2014-07-01 with ID 6
È possibile aggiungere questo comando al processo di backup illustrato nella sezione Pianificazione dei backup riportata di seguito.
Per ulteriori dettagli sulle snapshot PowerScale OneFS, consultare la Guida all'amministrazione della CLI di PowerScale OneFS per la versione di OneFS in uso: Hub di informazioni su PowerScale OneFS
REPLICA SYNCIQ PER PIÙ CLUSTER PowerScale
Al termine del backup DistCp sul cluster PowerScale, è possibile utilizzare OneFS SyncIQ per replicare le snapshot su una WAN in altri cluster PowerScale. Le snapshot replicate possono fornire un componente versatile ed efficiente per la strategia di ripristino di emergenza.
Figura 2: Replica SynIQ per più cluster Isilon
GESTIONE DEI FILE ELIMINATI
Per impostazione predefinita, i file eliminati dal cluster Hadoop di origine non vengono eliminati dal cluster Hadoop di destinazione. Se è necessario questo comportamento, aggiungere l'argomento -delete al comando DistCp. Quando si utilizza questo comando, si consiglia di utilizzare le snapshot sulla destinazione di backup per consentire il ripristino dei file eliminati.
PIANIFICAZIONE DEI BACKUP
È possibile automatizzare e pianificare i passaggi per eseguire il backup di un cluster Hadoop utilizzando vari metodi. Apache Oozie viene spesso utilizzato per automatizzare le attività di Hadoop e supporta direttamente DistCp. CRON può essere utilizzato anche per eseguire uno script della shell. Per automatizzare l'esecuzione di comandi in una sessione SSH, abilitare SSH senza password. L'SSH senza password consente a un utente CRON di connettersi al client Hadoop e al cluster PowerScale (se si utilizza SnapshotIQ).
I file di destinazione del backup su PowerScale sono accessibili dalle applicazioni Hadoop nello stesso modo dei file di origine grazie al supporto di PowerScale per HDFS. È possibile utilizzare i dati di backup direttamente, senza dover prima ripristinarli nell'ambiente Hadoop di origine iniziale. Questa funzionalità consente di risparmiare tempo di analisi. Ad esempio, se si esegue un comando MapReduce come questo:hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar grep /mydata/mydataset1 output1 ABC
È possibile eseguire il processo MapReduce sul dataset di backup su PowerScale utilizzando il seguente comando:hadoop jar /usr/lib/gphd/hadoop-mapreduce/hadoop-mapreduce-examples.jar grep hdfs://all-nc-s-hdfs/backup/ /mydata/mydataset1 output1 ABC
Per specificare un percorso Hadoop completo anziché utilizzare il parametro fs.defaultFS, contattare il provider di applicazioni per i dettagli. Inoltre, è probabile che un cluster PowerScale progettato per il backup e l'archiviazione, anziché per prestazioni elevate, non fornisca le stesse prestazioni dell'ambiente Hadoop primario. Si consiglia di eseguire test o consultare Dell PowerScale per il corretto dimensionamento.