Video: Bestanden beheren 2024
HDFS is een van de twee hoofdcomponenten van het Hadoop-framework; de andere is het computationele paradigma dat bekend staat als MapReduce. Een gedistribueerd bestandssysteem is een bestandssysteem dat opslag beheert op een netwerk van verschillende machines.
HDFS slaat gegevens op in blokken , eenheden waarvan de standaardgrootte 64 MB is. Bestanden die u wilt opslaan in HDFS moeten worden onderverdeeld in blokken van blokgrootte die vervolgens onafhankelijk van elkaar in het cluster worden opgeslagen. U kunt de opdracht fsck line gebruiken om de blokken waaruit elk bestand bestaat in HDFS weer te geven, als volgt:
% hadoop fsck / -files -blocks
Omdat Hadoop in Java is geschreven, worden alle interacties met HDFS beheerd via de Java API. Houd er echter rekening mee dat je geen Java-goeroe hoeft te zijn om met bestanden in HDFS te werken. Verschillende Hadoop-interfaces die op de Java API zijn gebouwd, worden nu algemeen gebruikt (en verbergen Java), maar de eenvoudigste is de opdrachtregelinterface; gebruik de opdrachtregel om samen te werken met HDFS in de geleverde voorbeelden.
Je hebt toegang tot de Hadoop-bestandssysteemshell door een vorm van de hadoop-opdracht uit te voeren. Alle hadoop-opdrachten worden aangeroepen door het bin / hadoop-script. (Voer voor het ophalen van een beschrijving van alle hadoop-opdrachten het hadoop-script uit zonder argumenten op te geven.) De hadoop-opdracht heeft de syntaxis
hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
De - config confdir optie overschrijft de standaard configuratiemap ($ HADOOP_HOME / conf), zodat u eenvoudig uw Hadoop-omgevingsconfiguratie kunt aanpassen. De algemene opties en opdrachtopties zijn een algemene reeks opties die door verschillende opdrachten worden ondersteund.
Shell-opdrachten voor het Hadoop-bestandssysteem (voor opdrachtregelinterfaces) nemen uniforme resource-id's (URI's) als argumenten. A URI is een tekenreeks die wordt gebruikt om een naam of een webresource te identificeren.
De tekenreeks kan een schemanaam bevatten - een kwalificatie voor de aard van de gegevensbron. Voor HDFS is de schema-naam hdfs en voor het lokale bestandssysteem is de schemanaam een bestand. Als u geen schemanaam opgeeft, is de standaardnaam de schemanaam die is opgegeven in het configuratiebestand. Een bestand of directory in HDFS kan op een volledig gekwalificeerde manier worden gespecificeerd, zoals in dit voorbeeld:
hdfs: // naamgeverhost / bovenliggend / kind
Of het kan gewoon / parent / child zijn als het configuratiebestand wijst naar hdfs: // naamgeverhost.
De shell-opdrachten van het Hadoop-bestandssysteem, vergelijkbaar met Linux-bestandsopdrachten, hebben de volgende algemene syntaxis:
hadoop hdfs dfs - file_cmd
Lezers met een eerdere Hadoop-ervaring kunnen vragen: "Maar wat over het hadoop fs commando?"De fs-opdracht is verouderd in de Hadoop 0. 2 -series, maar werkt nog steeds in Hadoop 2. Gebruik in plaats daarvan hdfs dfs.
Zoals je zou verwachten, gebruik je de opdracht mkdir om een map in HDFS te maken, net zoals je zou doen op Linux of op Unix-gebaseerde besturingssystemen. Hoewel HDFS een standaard werkdirectory heeft, / user / $ USER, waarbij $ USER uw login-gebruikersnaam is, moet u deze zelf maken met behulp van de syntaxis
$ hadoop hdfs dfs -mkdir / user / login_user_name
Om bijvoorbeeld een map genaamd "joanna" te maken, voer je deze mkdir-opdracht uit:
$ hadoop hdfs dfs -mkdir / user / joanna
Gebruik de opdracht Hadoop put om een bestand te kopiëren van je lokale bestandssysteem naar HDFS:
$ hadoop hdfs dfs -put bestandsnaam / user / login_user_name
Bijvoorbeeld om een bestand met de naam data te kopiëren. txt naar deze nieuwe map, voer de volgende opdracht uit:
$ hadoop hdfs dfs -put data. txt / user / joanna
Voer de opdracht ls uit om een lijst met HDFS-bestanden te krijgen:
$ hadoop hdfs dfs -ls. 2 items gevonden drwxr-xr-x - joanna supergroup 0 2013-06-30 12: 25 / user / joanna -rw-r - r - 1 joanna supergroup 118 2013-06-30 12: 15 / user / joanna / gegevens. txt
De bestandslijst zelf wordt afgebroken zoals beschreven in deze lijst:
-
Kolom 1 toont de bestandsmodus ("d" voor map en "-" voor normaal bestand, gevolgd door de rechten). De drie toestemmingen - lezen (r), schrijven (w) en uitvoeren (x) - zijn dezelfde als die u aantreft op Linux- en Unix-gebaseerde systemen. De uitvoeringsmachtiging voor een bestand wordt genegeerd omdat u een bestand op HDFS niet kunt uitvoeren. De machtigingen zijn gegroepeerd per eigenaar, groep en openbaar (alle anderen).
-
Kolom 2 geeft de replicatiefactor voor bestanden weer. (Het concept van replicatie is niet van toepassing op mappen.) De blokken waaruit een bestand bestaat in HDFS worden gerepliceerd om fouttolerantie te garanderen. De replicatiefactor of het aantal replica's dat voor een specifiek bestand wordt bewaard, kan worden geconfigureerd. U kunt de replicatiefactor opgeven wanneer het bestand wordt gemaakt of later, via uw toepassing.
-
Kolommen 3 en 4 tonen de bestand eigenaar en groep . Supergroup is de naam van de groep superusers en een superuser is de gebruiker met dezelfde identiteit als het NameNode-proces. Als je de NameNode start, ben je voorlopig de superuser. Dit is een speciale groep - gewone gebruikers hebben hun gebruikersideaal tot een groep zonder speciale kenmerken - een groep die eenvoudigweg wordt gedefinieerd door een Hadoop-beheerder.
-
Kolom 5 toont de grootte van het bestand, in bytes, of 0 als het een map is.
-
Kolommen 6 en 7 tonen respectievelijk de datum en tijd van de laatste wijziging.
-
Kolom 8 toont de niet-gekwalificeerde naam (wat betekent dat de schemanaam niet is opgegeven) van het bestand of de map.
Gebruik de opdracht Hadoop get om een bestand van HDFS naar uw lokale bestandssysteem te kopiëren:
$ hadoop hdfs dfs -get bestandsnaam / user / login_user_name
Gebruik de Hadoop rm commando om een bestand of een lege map te verwijderen:
$ hadoop hdfs dfs -rm bestandsnaam / user / login_user_name
Gebruik de opdracht hadoop hdfs dfs -help om gedetailleerde hulp te krijgen voor elke keuze.