Sök…


Anmärkningar

En bra förklaring av HDFS och hur det fungerar.

Syntax bör innehålla de kommandon som kanske används i HDFS.

HDFS - Hadoop Distribuerat filsystem

Hadoop Distribuerat filsystem (HDFS) är ett Java-baserat filsystem som tillhandahåller skalbar och tillförlitlig datalagring som är utformad för att spänna över stora kluster av handelsservrar. HDFS, MapReduce och YARN utgör kärnan i Apache ™ Hadoop®.

HDFS är utformad för att vara mycket feltolerant, vilket uppnås genom att spara flera kopior (3 som standard) av ett givet datablock över flera noder.

Hitta filer i HDFS

Så här hittar du en fil i Hadoop Distribuerat filsystem:

hdfs dfs -ls -R / | grep [search_term]

I kommandot ovan,

-ls är för listning av filer

-R är för rekursiv (iterat genom underkataloger)

/ betyder från rotkatalogen

| för att leda utgången från det första kommandot till det andra

grep kommando för att extrahera matchande strängar

[search_term] filnamn som ska sökas i listan över alla filer i hadoop-filsystemet.

Alternativt kan kommandot nedan också användas för att hitta och tillämpa några uttryck:

hadoop fs -find / -name test -print

Hitta alla filer som matchar det angivna uttrycket och tillämpar utvalda åtgärder på dem. Om ingen sökväg anges är standardvärdet för den aktuella arbetskatalogen. Om inget uttryck anges är standardvärdet att -print.

Följande primära uttryck erkänns:

  • name pattern
  • iname pattern

Utvärderar som sant om filens basnamn stämmer överens med mönstret med standardfilsystem-klot. Om -namn används är matchen okänslig för versaler.

  • print
  • print0Always

Utvärderar till sant. Orsakar att det aktuella söknamnet skrivs till standardutdata. Om uttrycket -print0 används, -print0 ett ASCII NULL-tecken till.

Följande operatörer känns igen:

expression -a expression
expression -and expression
expression expression

Block och delar HDFS

  1. Blockstorlek och block i HDFS : HDFS har konceptet att lagra data i block närhelst en fil laddas. Block är de fysiska partitionerna av data i HDFS (eller i något annat filsystem, för den delen).

    När en fil laddas på HDFS delas den fysiskt (ja, filen är uppdelad) i olika delar som kallas block. Antalet block beror på värdet på dfs.block.size i hdfs-site.xml

    Helst är blockstorleken inställd på ett stort värde som 64/128/256 MB (jämfört med 4KB i normal FS). Standardblockstorleksvärdet för de flesta distributioner av Hadoop 2.x är 128 MB. Anledningen till en högre blockstorlek är att Hadoop är gjord för att hantera PetaBytes av data med varje fil som sträcker sig från några hundra MegaBytes till TeraBytes ordning.

    Säg till exempel att du har en fil i storlek 1024 MB. Om din blockstorlek är 128 MB får du 8 block med 128 MB vardera. Detta betyder att din namnkod måste lagra metadata på 8 x 3 = 24 filer (3 är replikeringsfaktorn).

    Tänk på samma scenario med en blockstorlek på 4 kB. Det kommer att resultera i 1 1GB / 4KB = 250000 block och det kommer att kräva namnoden för att spara metadata för 750000 block för bara en 1 GB-fil. Eftersom all denna metadata-relaterad information lagras i minnet föredras större blockstorlek för att spara den biten extra belastning på NameNode.

    Återigen är inte blockstorleken inställd på ett extremt högt värde som 1 GB etc eftersom det idealiskt är att en mapper startas för varje datablock. Så om du ställer in blockstorleken till 1 GB kan du tappa parallellitet vilket kan leda till en långsammare genomströmning totalt sett.

2.) Delad storlek i HDFS : Delningar i Hadoop-bearbetning är de logiska bitarna med data. När filer är uppdelade i block respekterar hadoop inga filgränser. Det delar bara upp data beroende på blockstorlek. Säg att om du har en fil på 400MB, med 4 rader, och varje rad som har 100 MB data, får du 3 block på 128 MB x 3 och 16 MB x 1 . Men när ingångssplittringar beräknas medan prossossing av data, fil / postgränser hålls i åtanke och i detta fall kommer vi att ha 4 ingångsdelningar på 100 MB vardera, om du använder, säg NLineInputFormat .

Delad storlek kan också ställas in per jobb med egenskapen mapreduce.input.fileinputformat.split.maxsize

En mycket bra förklaring av block mot splits finns i det här svara /



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow