I denne vejledning vil vi give dig en detaljeret beskrivelse af en distribueret cache i Hadoop . Først og fremmest vil vi kort forstå, hvad der er Hadoop, derefter vil vi se, hvad der er distribueret cache i Hadoop.
Vi vil også dække arbejdet og implementeringen af Hadoop Distributed Cache. Til sidst i denne blog vil vi også se fordele og ulemper ved distribueret caching i Hadoop.
Introduktion til Hadoop
Det er en mekanisme, som MapReduce-rammeværket giver til at cache filer, som applikationerne kræver. Det kan cache filer som skrivebeskyttede tekst-/datafiler og mere komplekse typer såsom arkiver, jar-filer osv.
Inden vi starter med distribueret cache, lad os først diskutere, hvad der er Hadoop?
Hadoop er open source, Java-baseret programmeringsramme. Det understøtter behandling og lagring af ekstremt store datasæt i et distribueret miljø. Hadoop følger Master-Slave topologi.
Master er NameNode og Slave er DataNode. Datanode gemmer faktiske data iHDFS . Og den udfører læse- og skriveoperationer i henhold til kundens anmodning. Namenode gemmer metadata.
I Apache Hadoop, data chunks, behandler parallelt blandt Datanodes, ved hjælp af et program skrevet af brugeren. Hvis vi ønsker at få adgang til nogle filer fra alle datanoderne, så lægger vi filen i distribueret cache.
Hvad er distribueret cache i Hadoop?
Distribueret cache i Hadoop er en facilitet leveret af MapReduce-rammen. Distribueret cache kan cache filer, når det er nødvendigt af applikationerne. Det kan cache kun læse tekstfiler, arkiver, jar-filer osv.
Når vi har cachet en fil til vores job, vil Apache Hadoop gøre den tilgængelig på hver dataanoder, hvor kort-/reduceringsopgaver kører. Således kan vi tilgå filer fra alle datanoderne i vores MapReduce job.
Størrelse på distribueret cache
Som standard er den distribuerede cachestørrelse 10 GB. Hvis vi ønsker at justere størrelsen på den distribuerede cache, kan vi justere ved at bruge lokal .cache .størrelse.
Implementering
Et program, der vil bruge distribueret cache til at distribuere en fil:
- Bør først sikre, at filen er tilgængelig.
- Derefter skal du også sørge for, at filen kan tilgås via URL'er. URL'er kan enten værehdfs:// eller https://.
Efter ovenstående validering, hvis filen er til stede på de nævnte urls. Hadoop-brugeren nævner, at det er en cache-fil til den distribuerede cache. Hadoop MapReduce-jobbet vil kopiere cache-filen på alle noderne, før opgaver på disse noder startes.
Følg nedenstående proces:
a) Kopiér den nødvendige fil til HDFS:
$ hdfs dfs-put/user/dataflair/lib/jar_file.jar
b) Konfigurer applikationens JobConf:
DistributedCache.addFileToClasspath(ny sti ("/user/dataflair/lib/jar-file.jar"), conf).
c) Tilføj det i førerklassen.
Fordele ved distribueret cache
- Enkelt fejlpunkt - Som distribueret cache kører på tværs af mange noder. Derfor resulterer fejlen i en enkelt node ikke i en fuldstændig fejl i cachen.
- Datakonsistens- Det sporer ændringernes tidsstempler for cachefiler. Det giver derefter besked om, at filerne ikke bør ændres, før et job udføres. Ved hjælp af hashing-algoritme kan cache-motoren altid bestemme, hvilken node en bestemt nøgleværdi befinder sig på. Som vi ved, er der altid en enkelt tilstand af cache-klyngen, så den er aldrig inkonsekvent.
- Gem komplekse data – Den distribuerer enkel, skrivebeskyttet tekstfil. Det gemmer også komplekse typer som krukker, arkiver. Disse resultater fjernes derefter ved slaveknudepunktet.
Ulempe ved distribueret cache
En distribueret cache i Hadoop har overhead, der vil gøre den langsommere end en igangværende cache:
a) Objektserialisering – Det skal serialisere objekter. Men serialiseringsmekanismen har to hovedproblemer:
- Meget omfangsrig – Serialisering gemmer det komplette klassenavn, klynge og samlingsdetaljer. Den gemmer også referencer til andre forekomster i medlemsvariabler. Alt dette gør serialiseringen meget omfangsrig.
- Meget langsom – Serialisering bruger refleksion til at inspicere typen af information under kørsel. Refleksion er en meget langsom proces sammenlignet med præ-kompileret kode.
Konklusion
Som konklusion til Distributed cache kan vi sige, at det er en facilitet leveret af MapReduce. Det cacher filer, når det er nødvendigt af programmerne. Det kan cache kun læse tekstfiler, arkiver, jar-filer osv.
Som standard er den distribuerede cachestørrelse 10 GB. Hvis du finder denne blog, eller du har en forespørgsel relateret til distribueret cache i Hadoop, så del gerne med os.