Wat is gedistribueerde cache in Hadoop?

Hadoop is een open-source framework en maakt gebruik van gedistribueerde opslag en de verwerking van enorme datasets met behulp van HDFS en MapReduce. Het heeft NameNodes die de metagegevens opslaan en DataNodes die de feitelijke gegevens in HDFS opslaan. Wanneer we de enorme gegevenssets moeten verwerken, gebeurt dit door een programma dat door de gebruikers is geschreven en wordt de verwerking parallel in de DataNodes uitgevoerd. In het Hadoop-framework zijn er bepaalde bestanden die de MapReduce-taken vaak nodig hebben. Als er een aantal mappers actief is, neemt de latentie elke keer wanneer het nodig is om de bestanden van HDFS te lezen toe, omdat de zoektijd ook toeneemt. Dus in plaats van de bestanden te lezen telkens wanneer de bestanden nodig zijn, kunnen de bestanden worden gekopieerd en naar alle DataNodes worden verzonden. Dit mechanisme wordt Distributed Cache in Hadoop genoemd.

Werken van gedistribueerde cache in Hadoop

  • Hadoop kopieert de bestanden die zijn opgegeven met de opties zoals –files, -libjars en –archives naar de HDFS wanneer een taak wordt gestart. Vervolgens kopieert de Node Manager de bestanden van HDFS naar de cache zodat wanneer een taak wordt uitgevoerd, deze toegang heeft tot de bestanden. De bestanden kunnen worden aangeduid als gelokaliseerd wanneer ze naar de cache of de lokale schijf worden gekopieerd.
  • In de cache wordt het aantal taken dat elk bestand gebruikt, door de Node Manager als referentie bijgehouden. Het referentietelling van de bestanden wordt 1 voordat de taak wordt uitgevoerd. Maar nadat de taak is uitgevoerd, wordt het aantal met 1 verlaagd. Wanneer het aantal 0 wordt, kan het bestand worden verwijderd omdat het niet went. Wanneer de cache van een knooppunt zijn bepaalde grootte bereikt, wordt het verwijderen van een bestand gedaan zodat de nieuwe bestanden kunnen worden ondergebracht. De grootte van de cache kan worden gewijzigd in de configuratie-eigenschap. De grootte van de gedistribueerde cache in Hadoop is standaard 10 GB.
  • De MapReduce wordt langzamer dan de cache in het proces als er overhead is. Om deze situatie te overwinnen, kan de gedistribueerde cache de objecten serialiseren, maar zelfs dit heeft weinig problemen. Reflectie is een proces dat wordt gebruikt om het informatietype tijdens de looptijd te onderzoeken, wat erg langzaam is. Het wordt ook erg moeilijk in serialisatie waar het de volledige clusternaam, klassenaam opslaat samen met verwijzingen naar andere instanties die aanwezig zijn in de lidvariabelen.

Implementatie van Hadoop in gedistribueerde cache

  • Om de gedistribueerde cache voor een toepassing te gebruiken, moeten we ervoor zorgen dat om een ​​bestand over de knooppunten te verspreiden; het bestand moet eerst beschikbaar zijn. Dus moeten we de bestanden naar HDFS kopiëren en ook moeten we controleren of het bestand toegankelijk is via URI's die te vinden zijn via de core-site.xml. Vervolgens kopieert de MapReduce-taak het cachebestand naar alle knooppunten voordat de taken op die knooppunten worden uitgevoerd.
  • Dus om gedistribueerde cache te implementeren, moeten we de bestanden naar HDFS kopiëren en kunnen we controleren of dit al dan niet wordt gedaan met de opdracht hdfs dfs –put /path/samplefile.jar. De taakconfiguratie moet ook worden ingesteld voor de toepassing en deze moet worden toegevoegd aan de stuurprogrammaklasse.
  • De bestanden die alleen door de eigenaar kunnen worden gelezen, gaan naar privécache, terwijl de gedeelde cache de bestanden heeft die wereldwijd leesbaar zijn. Het bestand dat aan de cache wordt toegevoegd, wordt zonder enige beperking in alle machines in het cluster gebruikt als een lokaal bestand. De onderstaande API-aanroepen kunnen worden gebruikt om de bestanden aan de cache toe te voegen.

Code:

DistributedCache.addCacheFile(URI, conf);
DistributedCache.setCacheFiles(URIs, conf);

Het delen van gedistribueerde cachebestanden op de slave-knooppunten is afhankelijk van of de gedistribueerde cachebestanden privé of openbaar zijn. De privé-gedistribueerde cachebestanden worden in de cache opgeslagen in de lokale map van de gebruiker die privé is voor de gebruiker en deze bestanden zijn vereist voor de taken van de gebruiker. In het geval van de openbare gedistribueerde cachebestanden worden de bestanden in de cache opgeslagen in de algemene map. De toegang tot bestanden in het geval van een openbare cache is ingesteld op een manier die zichtbaar is voor alle gebruikers. Het gedistribueerde cachebestand wordt ook privé of openbaar, afhankelijk van de toestemming op het bestandssysteem.

Voordelen van gedistribueerde cache in Hadoop

Met het gebruik van de gedistribueerde cache worden veel voordelige functies toegevoegd aan het Hadoop-framework. Hieronder staan ​​de voordelen van het gebruik van gedistribueerde cache:

1. Gedistribueerde cache in Single Point of Failure

In het geval van het falen van een knooppunt, zal het niet de volledige cachefout maken. Omdat de gedistribueerde cache als een zelfstandig of onafhankelijk proces over de verschillende knooppunten wordt uitgevoerd. Dus als de cachefout optreedt bij één knooppunt, betekent dit niet dat de volledige cache ook moet mislukken.

2. Consistentie van gegevens

Door het gebruik van het Hash-algoritme kan worden bepaald welke sleutel / waarde-paren bij welk knooppunt horen. Ook controleert of volgt de gedistribueerde cache in Hadoop de tijdstempelwijziging die in de cachebestanden is aangebracht en meldt dat een bestand niet mag worden gewijzigd totdat de taak is uitgevoerd. De gegevens worden dus nooit inconsistent vanwege de enkele status van het cachecluster.

3. Opslag van complexe gegevens

De gedistribueerde cache in het Hadoop-framework biedt het voordeel dat de alleen-lezen bestanden zoals tekstbestanden, jar-bestanden, enz. In de cache worden opgeslagen en vervolgens naar gegevensknooppunten worden uitgezonden. Hierdoor wordt een kopie van het bestand opgeslagen in elk gegevensknooppunt. Met de gedistribueerde cachefunctie worden complexe bestanden zoals een pot enz. Gedistribueerd en opgeslagen.

Conclusie

Gedistribueerde cache biedt efficiëntie omdat de bestanden voor elke taak één keer worden gekopieerd. Het heeft ook de capaciteit om de archieven die niet gearchiveerd zijn op slaven te cachen. Het gebruik van gedistribueerde cache is een toegevoegde bonus en is afhankelijk van de ontwikkelaar om deze functie optimaal te gebruiken.

Aanbevolen artikelen

Dit is een gids voor gedistribueerde cache in Hadoop. Hier bespreken we Wat is gedistribueerde cache in Hadoop, het werk, de implementatie en de voordelen. U kunt ook onze andere gerelateerde artikelen doornemen voor meer informatie -

  1. Voordelen van Hadoop
  2. Hadoop installeren
  3. Wat is Head in Git?
  4. Apache Hadoop Ecosysteem
  5. Variabelen in JavaScript

Categorie: