I den här handledningen kommer vi att ge dig en detaljerad beskrivning av en distribuerad cache i Hadoop . Först och främst kommer vi att kortfattat förstå vad som är Hadoop, sedan kommer vi att se vad som är Distributed Cache i Hadoop.
Vi kommer också att täcka arbetet och implementeringen av Hadoop Distributed Cache. Äntligen i den här bloggen kommer vi också att se fördelarna och nackdelarna med distribuerad cachning i Hadoop.
Introduktion till Hadoop
Det är en mekanism som MapReduce-ramverket tillhandahåller för att cache filer som behövs av applikationerna. Det kan cache-filer som skrivskyddade text-/datafiler och mer komplexa typer som arkiv, jar-filer etc.
Innan vi börjar med Distributed Cache, låt oss först diskutera vad Hadoop är?
Hadoop är öppen källkod, Java-baserat programmeringsramverk. Den stöder bearbetning och lagring av extremt stora datamängder i en distribuerad miljö. Hadoop följer Master-Slave-topologin.
Master är NameNode och slav är DataNode. Datanode lagrar faktiska data iHDFS . Och den utför läs- och skrivoperationer enligt begäran från klienten. Namenode lagrar metadata.
I Apache Hadoop bearbetar databitar parallellt mellan datanoder, med hjälp av ett program skrivet av användaren. Om vi vill komma åt några filer från alla Datanodes kommer vi att lägga den filen i distribuerad cache.
Vad är distribuerad cache i Hadoop?
Distribuerad cache i Hadoop är en anläggning som tillhandahålls av MapReduce-ramverket. Distribuerad cache kan cache filer när det behövs av applikationerna. Den kan cache-läsbara textfiler, arkiv, jar-filer etc.
När vi har cachat en fil för vårt jobb kommer Apache Hadoop att göra den tillgänglig på varje datanod där kart-/reduceringsuppgifter körs. Således kan vi komma åt filer från alla datanoder i vårt MapReduce-jobb.
Storlek på distribuerad cache
Som standard är storleken på distribuerad cache 10 GB. Om vi vill justera storleken på distribuerad cache kan vi justera genom att använda lokal .cache .storlek.
Implementering
Ett program som kommer att använda distribuerad cache för att distribuera en fil:
- Bör först se till att filen är tillgänglig.
- Se efter det också att filen kan nås via webbadresser. Webbadresser kan vara antingenhdfs:// eller https://.
Efter ovanstående validering, om filen finns på de nämnda webbadresserna. Hadoop-användaren nämner att det är en cachefil till den distribuerade cachen. Hadoop MapReduce-jobbet kommer att kopiera cache-filen på alla noder innan du startar uppgifter på dessa noder.
Följ processen nedan:
a) Kopiera den nödvändiga filen till HDFS:
$ hdfs dfs-put/user/dataflair/lib/jar_file.jar
b) Ställ in programmets JobConf:
DistributedCache.addFileToClasspath(ny sökväg ("/user/dataflair/lib/jar-file.jar"), conf).
c) Lägg till det i förarklassen.
Fördelar med distribuerad cache
- En enda punkt för misslyckande- Som distribuerad cache körs över många noder. Följaktligen resulterar inte felet i en enda nod i ett fullständigt fel i cachen.
- Datakonsistens- Den spårar modifieringstidsstämplarna för cachefiler. Den meddelar sedan att filerna inte ska ändras förrän ett jobb körs. Med hjälp av hashalgoritm kan cachemotorn alltid avgöra på vilken nod ett särskilt nyckelvärde finns. Som vi vet är det alltid ett enda tillstånd i cacheklustret, så det är aldrig inkonsekvent.
- Lagra komplexa data – Den distribuerar enkel, skrivskyddad textfil. Den lagrar också komplexa typer som burkar, arkiv. Dessa uppnås avarkiveras sedan vid slavnoden.
Nackdel med distribuerad cache
En distribuerad cache i Hadoop har overhead som gör den långsammare än en pågående cache:
a) Objektserialisering – Den måste serialisera objekt. Men serialiseringsmekanismen har två huvudproblem:
- Mycket skrymmande – Serialisering lagrar fullständigt klassnamn, kluster och monteringsdetaljer. Den lagrar även referenser till andra instanser i medlemsvariabler. Allt detta gör serialiseringen mycket skrymmande.
- Mycket långsam – Serialisering använder reflektion för att inspektera typen av information vid körning. Reflektion är en mycket långsam process jämfört med förkompilerad kod.
Slutsats
Som avslutning till Distributed cache kan vi säga att det är en anläggning som tillhandahålls av MapReduce. Det cachar filer när det behövs av applikationerna. Den kan cache-läsbara textfiler, arkiv, jar-filer etc.
Som standard är storleken på distribuerad cache 10 GB. Om du hittar den här bloggen, eller om du har någon fråga relaterad till Distributed Cache i Hadoop, så dela gärna med dig.