Sperimentazione del file system distribuito HDFS in ambiente GRID
Transcript
Sperimentazione del file system distribuito HDFS in ambiente GRID
BORSA DI STUDIO GARR “ORIO CARLINI” Sperimentazione del file system distribuito HDFS in ambiente GRID Rapporto attività terzo trimestre 2012 Borsista: dott. Giovanni Marzulli Tutor: dott. Domenico Diacono Istituto Nazionale di Fisica Nucleare – sezione di Bari INTRODUZIONE Il secondo trimestre di attività è stato impiegato prevalentemente per la realizzazione delle due custom policy: One Replica e Hierarchical placement policy; l’ultimo trimestre invece, è stato dedicato alla verifica delle policy implementate e alla realizzazione di un cluster geografico indispensabile per l’esecuzione dei test. A contorno, una serie di attivit{ secondarie finalizzate allo svolgimento delle prime. CLUSTER BARI-NAPOLI È stato realizzato il primo cluster HDFS su scala geografica tra i siti INFN di Bari e Napoli. Il cluster, configurato con lo scopo di testarne inizialmente le funzionalità e successivamente le prestazioni, è composto da 3 nodi a Bari (tra cui namenode e secondary namenode) e tre nodi a Napoli su cui è stata installata la release Cloudera Hadoop 4. Utilizzando questo cluster, sono stati ripetuti i test di funzionalità già eseguiti sul cluster in rete LAN a Bari. Dopo un’opportuna configurazione delle porte di connessione Hadoop sul sito di Napoli, è stato verificato che non sussistono né problemi di comunicazione tra datanode e namenode e viceversa, né anomalie nello scambio di dati sia in fase di scrittura che in fase di lettura. TEST DELLE POLICY Successivamente è stata verificata la funzionalità delle nuove policy; questa fase ha evidenziato alcuni bachi presenti nelle implementazioni e quindi, in parallelo, ci si è dedicati anche all’attivit{ di correzione degli errori. Per tale test è stato necessario eseguire numerosi cicli di scritture di dati e analizzare la disposizione fisica delle repliche sui rack in base a quanto definito nelle nuove policy; data la grande quantità di dati scritti non è stato possibile effettuare manualmente tale analisi, ma si è provveduto alla realizzazione di script che rendono automatico il processo producendo risultati aggregati e rilevando le anomalie: 1 per il test della One Replica policy, sono stati configurati due rack: Bari e Napoli. Con un fattore di replica pari a due, ogni file è ridondato in entrambi i siti. Non sono stati rilevati particolari problemi. per il test della Hierarchical policy, è stato necessario configurare una topologia di rete basata su 2 livelli. Bari e Napoli corrispondono al livello più alto (livello farm). Ogni farm contiene al suo interno più rack. In questo test sono stati creati 2 rack per ogni farm. Per ogni file, secondo la policy, viene scritta una prima copia nel rack locale alla sorgente dati, una seconda, in un rack diverso della farm locale, e infine una terza copia in un rack della farm remota. Dopo una serie di correzioni e test, è stato raggiunto un ottimo livello di stabilità. TEST DI PERFORMANCE È stata eseguita la prima fase dei test di performance sul cluster HDFS locale. In particolare, è stato misurato il tempo impiegato per la scrittura e lettura dei dati confrontando i risultati in diverse configurazioni variando il fattore di replica, la dimensione del blocco, lo stato del nodo sorgente (se datanode attivo o inattivo ) e il tipo di client come specificato di seguito: fattore di replica: 1, 2 dimensione blocco: 64MB, 128MB, 256MB datanode: attivo, non attivo client: Fuse-Dfs, Java (predefinito Hadoop) Il test è avvenuto eseguendo, per ogni singola combinazione dei parametri, 100 processi di scrittura sequenziali e da un unico nodo, di file di dimensione pari a 4GB. È stato eseguito prima da un datanode attivo, con la conseguente possibilità che la prima replica avvenga sul nodo locale (riducendo i tempi di scrittura), e successivamente da un datanode inattivo, su cui è presente solo il client per accedere al file system, e quindi ogni replica è inviata ai datanode attivi. Il test è stato eseguito sull’infrastruttura di calcolo del sito INFN di Bari dove sono in esecuzione altri servizi e processi di calcolo scientifico, pertanto la misurazione è avvenuta in un ambiente reale (e non ideale dove le risorse sono dedicate al file system Hadoop) in cui il carico di lavoro dell’intera farm varia durante il giorno in modo random e non predicibile e influenza le prestazioni dei processi HDFS. Di seguito sono riportate le medie dei campioni dei dati rilevati per ogni configurazione: Test di scrittura lanciato su un datanode attivo con client Java: Fattore di replica 1 2 1 2 Dimen. blocco (MB) 64 128 Tempo medio (ss) Velocità media (MB/s) 56.27 86.71 86.78 54.00 49.81 96.32 104.47 50.83 2 1 2 1 2 1 2 1 2 91.48 87.85 61.59 Dimen. blocco (MB) 64 128 256 Tempo medio (ss) Velocità media (MB/s) 63.21 71.30 87.38 51.77 54.61 82.49 81.47 59.00 65.22 76.01 95.56 50.52 Test di scrittura lanciato su un datanode attivo con client Fuse-Dfs: Fattore di replica 1 2 1 2 1 2 54.84 Test di scrittura lanciato su un datanode inattivo con client Java: Fattore di replica 256 Dimen. blocco (MB) 64 128 256 Tempo medio (ss) Velocità media (MB/s) 50.22 83.75 72.72 59.96 53.70 79.41 71.51 59.85 58.48 76.48 92.19 49.77 Test di scrittura lanciato su un datanode inattivo con client Fuse-Dfs: Fattore di replica 1 2 1 2 Dimen. blocco (MB) 64 128 Tempo medio (ss) Velocità media (MB/s) 91.60 45.66 106.83 40.24 90.58 46.13 99.09 42.45 3 1 2 256 89.20 47.95 100.44 42.71 Test di lettura lanciato su un datanode inattivo, con client Fuse-Dfs: Fattore di replica 1 2 1 2 1 2 Dimen. blocco (MB) 64 128 256 Tempo medio (ss) Velocità media (MB/s) 73.31 61.57 76.44 62.29 63.36 67.59 69.45 60.87 64.16 66.24 74.12 61.84 RISULTATI SCRITTURA I risultati ottenuti mostrano palesemente una grande fluttuazione (dovuta alla continua variablità del carico computazionale della farm) dei valori medi di tempo e velocità e talvolta sono contrastanti tra loro, pertanto non consentono di dedurre quale sia la configurazione di dimensione di blocco più performante. Riguardo la distinzione datanode attivo-inattivo, risulta statisticamente più efficiente eseguire l’operazione di scrittura da un datanode attivo; ciò è giustificato dal fatto che, seppur in un basso di numero di casi, per evitare la saturazione dello spazio disco, una delle repliche è memorizzata sullo storage locale con conseguente risparmio di tempo per la trasmissione dei dati sulla rete. È possibile invece dedurre che il costo computazionale per la realizzazione della ridondanza dei dati, con la seconda replica, è inferiore al doppio della prima, per cui il compromesso tra costo e affidabilità dei dati risulta ad un livello più che accettabile. Eccetto l’ultimo set di risultati, che si considera un outlier dovuto probabilmente ad un eccessivo carico dell’infrastruttura di calcolo, i restanti sono in linea con quanto atteso. RISULTATI LETTURA I test in lettura non sono stati differenziati né per datanode attivo o inattivo, poiché tale distinzione non avrebbe senso dato che i dati sono distribuiti su più nodi in entrambi i casi, né per tipo di client, poichè l’uso futuro ed eventuale di questo sistema di storage in produzione prevederà prevalentemente l’utilizzo del client Fuse-dfs per l’operazione di lettura. 4 Per gli stessi motivi descritti nel paragrafo precedente, anche in questo caso, non è possibile definire la dimensione di blocco ottimale; tuttavia il livello di performance ottenuto è considerato accettabile. Durante l’esecuzione del test si è verificata una situazione reale di fallimento di alcune macchine della farm locale su cui era attivo il processo datanode; esse erano coinvolte nel processo di scrittura dei dati. È stato osservato che, seppur in un tempo maggiore, l’esecuzione del test è terminata correttamente poichè dopo la rilevazione del problema il namenode ha reindirizzato la scrittura in corso sugli altri nodi attivi. Data l’anomalia, il relativo dato non è stato considerato ai fini del calcolo delle performance. Nei prossimi mesi si continuerà con la realizzazione di ulteriori test di performance e scalabilità, eseguendo più scritture e/o letture contemporanee (in modo da aumentare il carico di lavoro) con il coinvolgimento del sito di Napoli per una valutazione su rete WAN. MONITORING: GANGLIA Durante l’attivit{ di test è stato necessario utilizzare un tool di monitoring quale Ganglia. Ganglia è un sistema di monitoring distribuito adatto per ambienti grid. Il software Hadoop, di default, integra il supporto a Ganglia fornendo una serie di metriche classificate in dfs (distributed file system), jvm (java virtual machine), mapred (mapreduce, che esula dagli obiettivi di questo progetto), rpc (remote procedure call) che si vanno ad aggiungere a quelle predefinite di Ganglia che riguardano il carico di lavoro, traffico sulla rete, ecc. Ganglia si compone di due demoni, GMOND e GMETAD. Il primo è installato su tutte le macchine che si intende controllare e si occupa della raccolta dei dati delle metriche che saranno poi inviati a GMETAD. Esso consiste in un web frontend centralizzato, che raccoglie tutte le informazioni dai singoli nodi del cluster e le presenta mediante dei plot aggiornati in tempo reale. 5 STORICIZZAZIONE DELL E INFORMAZIONI Durante l’utilizzo del file system Hadoop fino a questo momento, si è sentita l’esigenza di disporre delle informazioni riguardanti la disposizione fisica di ogni singola replica in modo strutturato, che permetta ricerche puntuali sull’id del file, sui blocchi, sui nodi o ricerche per data, e che consenta di avere uno storico limitato di tali dati, in modo da poter individuare ad esempio, dopo una rireplicazione, da quali nodi è transitato un blocco o nel caso di fallimento di un nodo, sapere quali dati esso conteneva. È stato quindi realizzato un semplice parser che attraverso l’esecuzione di un apposito comando Hadoop legge e memorizza tali informazioni in un database MySQL. INSTALLAZIONE AUTOMATICA INTELLIGENTE Durante il secondo trimestre era stato creato un sistema di packaging con repository e script per l’esecuzione automatica dell’installazione e la configurazione del software Hadoop in modo da automatizzare il processo in un cluster di oltre 200 nodi. In questo trimestre, si è resa tale procedura “intelligente”: la configurazione non è più standard per tutte le macchine ma si adatta ad ogni singolo nodo con l’obiettivo di assegnare al file system tutto lo storage disponibile. Lo script analizza tutti i dischi e le partizioni presenti nel nodo e, ad esclusione di quelle riservate per il sistema operativo, assegna le partizioni ad Hadoop modificando il file di configurazione XML, aggiungendo i relativi path e riavviando il processo. Nel caso qualche partizione non dovesse essere già montata, lo script provvede autonomamente al mount del disco/partizione. 6 GESTIONE DELLA SICUREZZA: KERBEROS È stato approfondito l’aspetto sulla sicurezza di un cluster HDFS, e data la possibilit{ di integrare il software Hadoop con il protocollo Kerberos, si è configurato il sistema con l’autenticazione tramite il servizio Kerberos già presente nella sezione INFN di Bari. In questo modo l’identit{ di ogni nodo (sia namenode che datanode) che vorrà unirsi al file system sarà verificata dall’Authentication Server mediante il principal ad esso assegnato. Inoltre, l’accesso al file system da parte degli utenti verrà limitato a chi è in possesso del ticket rilasciato dal Ticket Granting Server dopo aver effettuato l’autenticazione mediante credenziali valide. La configurazione della parte Kerberos di Hadoop è stata abbastanza laboriosa poichè prevede l’installazione e la configurazione del client Kerberos su ogni nodo del cluster, la creazione dei principal e l’esportazione della relativa keytab, la modifica della configurazione Hadoop (file hdfssite.xml e core-site.xml) differente per ogni tipo di nodo, la configurazione dei permessi sulle directory di configurazione per limitare l’accesso ai soli utenti root e hdfs e la risoluzione di alcune dipendenze da altre librerie come JSVC. Dopo aver completato tutta la procedura, l’integrazione è avvenuta con successo, pertanto ogni utente prima di accedere ai dati dovrà autenticarsi e ricevere il ticket eseguendo: kinit -k -t hdfs.keytab hdfs/[email protected] Utilizzando il servizio kerberos già in produzione, basterà indicare le credenziali di accesso che ogni utente già possiede per gli altri servizi di sezione. CONCLUSIONE Dopo un’attenta e adeguata sperimentazione di HDFS è stato ritenuto opportuno cominciare a testare sul campo il servizio di storage fornendolo ai veri utenti finali. Il custer Hadoop in produzione sul sito di Bari è stato reso accessibile ad alcuni utenti locali che hanno iniziato ad utilizzarlo per archiviare diversi gigabyte di dati senza incontrare nessun problema; ciò rappresenta un ulteriore segnale positivo verso il raggiungimento dell’obiettivo finale, e cioè l’uso di HDFS in una farm in produzione a pieno regime. 7