sql >> Database >  >> NoSQL >> HBase

Inleiding tot gedistribueerde cache in Hadoop

In deze tutorial geven we je een gedetailleerde beschrijving van een gedistribueerde cache in Hadoop . Allereerst zullen we kort begrijpen wat Hadoop is, daarna zullen we zien wat Distributed Cache is in Hadoop.

We zullen ook de werking en implementatie van Hadoop Distributed Cache behandelen. Ten slotte zullen we in deze blog ook de voor- en nadelen zien van gedistribueerde caching in Hadoop.

Inleiding tot Hadoop

Het is een mechanisme dat het MapReduce-framework biedt om bestanden in de cache op te slaan die de applicaties nodig hebben. Het kan bestanden cachen zoals alleen-lezen tekst-/gegevensbestanden, en meer complexe typen zoals archieven, jar-bestanden enz.

Voordat we beginnen met Distributed Cache, laten we eerst bespreken wat Hadoop is?

Hadoop is een open-source, op Java gebaseerd programmeerraamwerk. Het ondersteunt de verwerking en opslag van extreem grote datasets in een gedistribueerde omgeving. Hadoop volgt Master-Slave-topologie.

Master is NameNode en Slave is DataNode. Datanode slaat actuele gegevens op in HDFS . En het voert lees- en schrijfbewerkingen uit op verzoek van de klant. Namenode slaat metagegevens op.

In Apache Hadoop worden gegevensbrokken parallel verwerkt tussen Datanodes, met behulp van een programma dat door de gebruiker is geschreven. Als we toegang willen tot sommige bestanden van alle Datanodes, dan zullen we dat bestand in een gedistribueerde cache plaatsen.

Wat is gedistribueerde cache in Hadoop?

Gedistribueerde cache in Hadoop is een faciliteit die wordt aangeboden door het MapReduce-framework. Distributed Cache kan bestanden in de cache plaatsen wanneer de toepassingen dat nodig hebben. Het kan alleen-lezen tekstbestanden, archieven, jar-bestanden enz. cachen.

Zodra we een bestand voor onze taak in de cache hebben opgeslagen, zal Apache Hadoop het beschikbaar maken op elke datanode waar kaart-/verkleiningstaken worden uitgevoerd. We hebben dus toegang tot bestanden van alle datanodes in onze MapReduce-taak.

Grootte van gedistribueerde cache

Standaard is de gedistribueerde cachegrootte 10 GB. Als we de grootte van de gedistribueerde cache willen aanpassen, kunnen we deze aanpassen met lokaal .cache .maat.

Implementatie

Een applicatie die gedistribueerde cache gaat gebruiken om een ​​bestand te distribueren:

  • Zorg er eerst voor dat het bestand beschikbaar is.
  • Zorg er daarna ook voor dat het bestand toegankelijk is via URL's. URL's kunnen ofwel hdfs:// of https:// zijn.

Na bovenstaande validatie, als het bestand aanwezig is op de genoemde url's. De Hadoop-gebruiker vermeldt dat het een cachebestand is voor de gedistribueerde cache. De Hadoop MapReduce-taak kopieert het cachebestand op alle knooppunten voordat de taken op die knooppunten worden gestart.

Volg het onderstaande proces:

a) Kopieer het vereiste bestand naar de HDFS:

$ hdfs dfs-put/user/dataflair/lib/jar_file.jar

b) Stel de JobConf van de toepassing in:

DistributedCache.addFileToClasspath(nieuw pad (“/user/dataflair/lib/jar-file.jar”), conf).

c) Voeg het toe in de Driver-klasse.

Voordelen van gedistribueerde cache

  • Single point of failure- Omdat gedistribueerde cache over veel knooppunten wordt uitgevoerd. Het falen van een enkel knooppunt resulteert dus niet in een volledig falen van de cache.
  • Consistentie van gegevens- Het volgt de wijzigingstijdstempels van cachebestanden. Het meldt dan dat de bestanden niet mogen veranderen totdat een taak wordt uitgevoerd. Met behulp van een hash-algoritme kan de cache-engine altijd bepalen op welk knooppunt een bepaalde sleutelwaarde zich bevindt. Zoals we weten, is er altijd een enkele status van het cachecluster, dus het is nooit inconsistent.
  • Sla complexe gegevens op – Het distribueert een eenvoudig, alleen-lezen tekstbestand. Het slaat ook complexe typen op, zoals potten, archieven. Deze resultaten worden vervolgens gedearchiveerd op de slave-node.

Nadeel van gedistribueerde cache

Een gedistribueerde cache in Hadoop heeft overhead die het langzamer maakt dan een in-process cache:

a) Objectserialisatie – Het moet objecten serialiseren. Maar het serialisatiemechanisme heeft twee hoofdproblemen:

  • Zeer omvangrijk – Serialisatie slaat de volledige klassenaam, cluster en assemblagegegevens op. Het slaat ook verwijzingen naar andere instanties op in lidvariabelen. Dit alles maakt de serialisatie erg omvangrijk.
  • Zeer traag – Serialisatie gebruikt reflectie om het type informatie tijdens runtime te inspecteren. Reflectie is een erg langzaam proces in vergelijking met vooraf gecompileerde code.

Conclusie

Tot besluit van Distributed cache kunnen we zeggen dat het een faciliteit is die wordt geboden door MapReduce. Het slaat bestanden op in de cache wanneer de applicaties dat nodig hebben. Het kan alleen-lezen tekstbestanden, archieven, jar-bestanden enz. cachen.

Standaard is de gedistribueerde cachegrootte 10 GB. Als je deze blog vindt, of als je een vraag hebt over gedistribueerde cache in Hadoop, kun je deze met ons delen.


  1. Een subdocument bijwerken dat is opgenomen in een array in een MongoDB-document

  2. Hoe definieer ik methoden in een Mongoose-model?

  3. Wil je websockets in Laravel implementeren

  4. MongoDB $ min