Video: PSmanFS: il gestore di file system per Lubuntu Linux 2024
HDFS è uno dei due componenti principali del framework Hadoop; l'altro è il paradigma computazionale noto come MapReduce. Un file system distribuito è un file system che gestisce lo storage attraverso un cluster di macchine in rete.
HDFS memorizza i dati in blocchi , unità la cui dimensione predefinita è 64 MB. I file che si desidera archiviare in HDFS devono essere suddivisi in blocchi a dimensione di blocco che vengono quindi archiviati in modo indipendente all'interno del cluster. È possibile utilizzare il comando fsck line per elencare i blocchi che compongono ciascun file in HDFS, come segue:
% hadoop fsck / -files -blocks
Poiché Hadoop è scritto in Java, tutte le interazioni con HDFS sono gestite tramite l'API Java. Tieni presente, tuttavia, che non è necessario essere un guru Java per lavorare con i file in HDFS. Diverse interfacce Hadoop basate su API Java sono ora di uso comune (e nascondono Java), ma la più semplice è l'interfaccia a riga di comando; utilizzare la riga di comando per interagire con HDFS negli esempi forniti.
Si accede alla shell del file system Hadoop eseguendo una forma del comando hadoop. Tutti i comandi hadoop sono invocati dallo script bin / hadoop. (Per recuperare una descrizione di tutti i comandi hadoop, eseguire lo script hadoop senza specificare alcun argomento.) Il comando hadoop ha la sintassi
hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
The - l'opzione config confdir sovrascrive la directory di configurazione predefinita ($ HADOOP_HOME / conf), quindi puoi facilmente personalizzare la configurazione dell'ambiente Hadoop. Le opzioni generiche e le opzioni di comando sono un insieme comune di opzioni supportate da diversi comandi.
I comandi shell del file system Hadoop (per le interfacce della riga di comando) assumono come identificativi gli identificatori di risorse (URI) uniformi. Un URI è una stringa di caratteri che viene utilizzata per identificare un nome o una risorsa Web.
La stringa può includere un nome di schema - un qualificatore per la natura dell'origine dati. Per HDFS, il nome dello schema è hdf e, per il file system locale, il nome dello schema è file. Se non si specifica un nome schema, il valore predefinito è il nome dello schema specificato nel file di configurazione. Un file o una directory in HDFS può essere specificato in un modo completo, come in questo esempio:
hdfs: // namenodehost / parent / child
Oppure può essere semplicemente / parent / child se il file di configurazione punta in hdf: // namenodehost.
I comandi shell del file system Hadoop, che sono simili ai comandi file Linux, hanno la seguente sintassi generale:
hadoop hdfs dfs - file_cmd
I lettori con qualche precedente esperienza Hadoop potrebbero chiedere, "Ma che cosa riguardo il comando hadoop fs?"Il comando fs è deprecato nella serie di rilascio Hadoop 0. 2, ma funziona ancora in Hadoop 2. Usa invece i file dfs di hdfs.
Come ci si potrebbe aspettare, si usa il comando mkdir per creare una directory in HDFS, proprio come si farebbe su Linux o su sistemi operativi basati su Unix. Sebbene HDFS abbia una directory di lavoro predefinita, / user / $ USER, dove $ USER è il tuo nome utente di accesso, devi crearlo tu stesso usando la sintassi
$ hadoop hdfs dfs -mkdir / user / login_user_name
Ad esempio, per creare una directory chiamata "joanna", esegui questo comando mkdir:
$ hadoop hdfs dfs -mkdir / user / joanna
Usa il comando Hadoop put per copiare un file da il file system locale su HDFS:
$ hadoop hdfs dfs -put file_name / user / login_user_name
Ad esempio, per copiare un file denominato data. txt in questa nuova directory, eseguire il seguente comando put:
$ hadoop hdfs dfs -put data. txt / user / joanna
Esegui il comando ls per ottenere un file HDFS che elenca:
$ hadoop hdfs dfs -ls. Trovati 2 articoli drwxr-xr-x - joanna supergroup 0 2013-06-30 12: 25 / utente / joanna -rw-r - r-- 1 joanna supergroup 118 2013-06-30 12: 15 / user / joanna / dati. txt
Il file che elenca se stesso si scompone come descritto in questo elenco:
-
La colonna 1 mostra la modalità file ("d" per la directory e "-" per il file normale, seguita dalle autorizzazioni). I tre tipi di permessi - read (r), write (w) ed execute (x) - sono gli stessi che si trovano sui sistemi basati su Linux e Unix. L'autorizzazione di esecuzione per un file viene ignorata perché non è possibile eseguire un file su HDFS. Le autorizzazioni sono raggruppate per proprietario, gruppo e pubblico (tutti gli altri).
-
La colonna 2 mostra il fattore di replicazione per i file. (Il concetto di replica non si applica alle directory). I blocchi che compongono un file in HDFS vengono replicati per garantire la tolleranza agli errori. Il fattore di replicazione , o il numero di repliche conservate per un file specifico, è configurabile. È possibile specificare il fattore di replicazione quando il file viene creato o successivo, tramite l'applicazione.
-
Le colonne 3 e 4 mostrano il file proprietario e gruppo . Supergroup è il nome del gruppo di superutenti e un superuser è l'utente con la stessa identità del processo NameNode. Se avvii il NameNode, per il momento sei il superuser. Questo è un gruppo speciale: gli utenti regolari avranno i propri useridi appartenenti a un gruppo senza caratteristiche speciali, un gruppo definito semplicemente da un amministratore di Hadoop.
-
La colonna 5 mostra la dimensione del file, in byte, o 0 se è una directory.
-
Le colonne 6 e 7 mostrano rispettivamente la data e l'ora dell'ultima modifica.
-
La colonna 8 mostra il nome non qualificato (che indica che il nome dello schema non è specificato) del file o della directory.
Usa il comando Hadoop get per copiare un file da HDFS sul tuo file system locale:
$ hadoop hdfs dfs -get file_name / user / login_user_name
Usa Hadoop rm comando per cancellare un file o una directory vuota:
$ hadoop hdfs dfs -rm file_name / user / login_user_name
Usa il comando hadoop hdfs dfs -help per ottenere assistenza dettagliata per ogni opzione.