Video: Datorns grundfunktioner: hantera filer och mappar 2024
HDFS är en av de två huvudkomponenterna i Hadoop-ramen; den andra är beräknings paradigmet som kallas MapReduce. Ett distribuerat filsystem är ett filsystem som hanterar lagring över ett nätverkskluster av maskiner.
HDFS lagrar data i block , enheter vars standardstorlek är 64 MB. Filer som du vill lagra i HDFS måste delas upp i blockstorlekstycken som sedan lagras oberoende i hela klustret. Du kan använda kommandot fsck line för att lista de block som utgör varje fil i HDFS, enligt följande:
% hadoop fsck / -files-blocks
Eftersom Hadoop är skrivet i Java hanteras alla interaktioner med HDFS via Java API. Tänk på att du inte behöver vara en Java-guru för att arbeta med filer i HDFS. Flera Hadoop-gränssnitt som byggdes ovanpå Java API är nu vanligt förekommande (och döljer Java), men det enklaste är kommandoradsgränssnittet; använd kommandoraden för att interagera med HDFS i de angivna exemplen.
Du kommer åt Hadoop-filsystemskalet genom att köra en form av hadoop-kommandot. Alla hadoop-kommandon påkallas av bin / hadoop-skriptet. (För att hämta en beskrivning av alla hadoopkommandon, kör Hadoop-skriptet utan att ange några argument.) Hadoop-kommandot har syntaxen
hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
config confdir-alternativet överskrider standardkonfigurationsmappen ($ HADOOP_HOME / conf), så du kan enkelt anpassa din Hadoop-miljökonfiguration. De generiska alternativen och kommandonalternativen är en vanlig uppsättning alternativ som stöds av flera kommandon.
Hadoop-filsystemskallkommandon (för kommandoradsgränssnitt) tar likformiga resursidentifierare (URI) som argument. En URI är en sträng av tecken som används för att identifiera ett namn eller en webresurs.
Strängen kan innehålla ett schema namn - en kvalificering för datakällans natur. För HDFS är programnamnet hdfs, och för det lokala filsystemet är programnamnet fil. Om du inte anger ett schemanamn är standardnamnet det namn som anges i konfigurationsfilen. En fil eller katalog i HDFS kan anges på ett fullständigt kvalificerat sätt, som i det här exemplet:
hdfs: // namenodehost / parent / child
Eller det kan helt enkelt vara / förälder / barn om konfigurationsfilen pekar till hdfs: // namenodehost.
Skalkommandon för Hadoop-filsystem, som liknar Linux-filkommandon, har följande allmänna syntax:
hadoop hdfs dfs - file_cmd
Läsare med tidigare Hadoop-upplevelse kan fråga "Men vad om hadoop fs kommandot?"Fs-kommandot avlägsnas i Hadoop 0. 2-serien, men det fungerar fortfarande i Hadoop 2. Använd hdfs dfs istället.
Som du kanske förväntar dig använder du kommandot mkdir för att skapa en katalog i HDFS, precis som du skulle göra på Linux eller på Unix-baserade operativsystem. Även om HDFS har en standardkatalog, / användare / $ USER, där $ USER är ditt användarnamn, måste du skapa det själv med hjälp av syntaxen
$ hadoop hdfs dfs -mkdir / user / login_user_name
Om du vill skapa en katalog med namnet "joanna" kör du det här mkdir-kommandot:
$ hadoop hdfs dfs -mkdir / user / joanna
Använd kommandot Hadoop put för att kopiera en fil från ditt lokala filsystem till HDFS:
$ hadoop hdfs dfs -put filnamn / user / login_user_name
Till exempel kopiera en fil med namnet. txt till den här nya katalogen, kör följande kommando:
$ hadoop hdfs dfs -put-data. txt / user / joanna
Kör kommandot ls för att få en HDFS-fillista:
$ hadoop hdfs dfs -ls. Hittade 2 objekt drwxr-xr-x - joanna supergroup 0 2013-06-30 12: 25 / användare / joanna -rw-r - r-- 1 joanna supergroup 118 2013-06-30 12: 15 / user / joanna / data. txt
Filförteckningen bryts ned enligt beskrivningen i den här listan:
-
Kolumn 1 visar filläge ("d" för katalog och "-" för normal fil, följt av behörigheterna). De tre tillståndstyperna - läs (r), skriv (w) och exekvera (x) - är samma som du hittar på Linux- och Unix-baserade system. Exekveringsbehörigheten för en fil ignoreras eftersom du inte kan utföra en fil på HDFS. Tillstånden grupperas av ägare, grupp och allmänhet (alla andra).
-
Kolumn 2 visar replikationsfaktorn för filer. (Begreppet replikering gäller inte kataloger.) Blockerna som utgör en fil i HDFS replikeras för att säkerställa feltolerans. replikeringsfaktorn, eller antalet replikor som hålls för en specifik fil, kan konfigureras. Du kan ange replikeringsfaktorn när filen skapas eller senare, via din applikation.
-
Kolumnerna 3 och 4 visar filen ägare och gruppen . Supergrupp är namnet på gruppen superusers, och en superuser är användaren med samma identitet som NameNode-processen. Om du startar NameNode är du superanvändare för nu. Det här är en speciell grupp - vanliga användare kommer att ha sina användaruppgifter tillhör en grupp utan speciella egenskaper - en grupp som helt enkelt definieras av en Hadoop-administratör.
-
Kolumn 5 visar filens storlek, i byte eller 0 om det är en katalog.
-
Kolumnerna 6 och 7 visar datum och tid för respektive ändringar.
-
Kolumn 8 visar det okvalificerade namnet (vilket betyder att programnamnet inte är angivet) för filen eller katalogen.
Använd Hadoop get-kommandot för att kopiera en fil från HDFS till ditt lokala filsystem:
$ hadoop hdfs dfs -get filnamn / user / login_user_name
Använd Hadoop rm kommando för att ta bort en fil eller en tom katalog:
$ hadoop hdfs dfs -rm filnamn / user / login_user_name
Använd kommandot hadoop hdfs dfs -help för att få detaljerad hjälp för alla alternativ.