sql >> Database >  >> NoSQL >> HBase

Hoe Hadoop werkt - Begrijp de werking van Hadoop

Wilt u weten hoe Hadoop grote hoeveelheden gegevens daadwerkelijk opslaat en verwerkt?

In dit artikel zullen we bestuderen hoe Hadoop intern werkt. We zullen zien hoe Hadoop grote datasets opslaat en verwerkt. Het artikel legt in detail uit hoe Hadoop werkt. Het artikel geeft eerst een korte introductie tot Hadoop.

Dan zullen we de Hadoop-kerncomponenten en de Daemons zien draaien in het Hadoop-cluster. Het artikel legt vervolgens de werking van Hadoop uit die alle kerncomponenten omvat, zoals HDFS, MapReduce en YARN.

Dus laten we nu eerst de korte introductie tot Hadoop bekijken.

Inleiding tot Hadoop

Met de opkomst van Big data ontwikkelde Apache Software Foundation in 2008 een open-source framework, bekend als Apache Hadoop, dat een oplossing is voor alle big data-problemen.

Apache Hadoop is een raamwerk dat enorme hoeveelheden ongestructureerde gegevens kan opslaan en verwerken, variërend in grootte van terabytes tot petabytes. Het is een zeer fouttolerant en zeer beschikbaar systeem.

Hadoop slaat een enorme hoeveelheid gegevens op een gedistribueerde manier op in HDFS. De Hadoop MapReduce is de verwerkingseenheid in Hadoop, die de gegevens parallel verwerkt.

Hadoop YARN is een ander kernonderdeel in het Hadoop-framework, dat verantwoordelijk is voor het beheer van bronnen tussen applicaties die in het cluster worden uitgevoerd en voor het plannen van de taak.

Voordat we bestuderen hoe Hadoop intern werkt, laten we eerst de belangrijkste componenten en daemons van Hadoop bekijken.

Componenten en Daemons van Hadoop

De Hadoop bestaat uit drie hoofdcomponenten, namelijk HDFS, MapReduce en YARN.

1. Hadoop HDFS

Het is de opslaglaag voor Hadoop. Hadoop Distributed File System slaat gegevens op over verschillende knooppunten in een cluster. Het verdeelt de gegevens in blokken en slaat ze op verschillende knooppunten op. De blokgrootte is standaard 128 MB . We kunnen de blokgrootte configureren volgens onze vereisten.

2. Hadoop MapReduce

Het is de verwerkingslaag in Hadoop. Hadoop MapReduce verwerkt de gegevens die zijn opgeslagen in Hadoop HDFS parallel over verschillende knooppunten in het cluster. Het verdeelt de taak die door de gebruiker is ingediend in de onafhankelijke taak en verwerkt deze als subtaken over de basishardware.

3. Hadoop GAREN

Het is de resource- en procesbeheerlaag van Hadoop. YARN is verantwoordelijk voor het delen van bronnen tussen de applicaties die in het cluster worden uitgevoerd en voor het plannen van de taak in het cluster.

Dit zijn de drie kerncomponenten in Hadoop.

Daemons die draaien in het Hadoop-cluster

Er zijn enkele Daemons die op het Hadoop-cluster draaien. Daemons zijn het lichtgewicht proces dat op de achtergrond draait.

Sommige Daemons draaien op het Master-knooppunt en sommige op het Slave-knooppunt. Laten we nu de Hadoop Daemons bestuderen.

De belangrijkste Hadoop Daemon zijn:

1. Meester Daemons

  • NameNode: Het is de meester-daemon in Hadoop HDFS. Het onderhoudt de naamruimte van het bestandssysteem. Het slaat metadata op over elk blok van de bestanden.
  • ResourceManager: Het is de meester-daemon van YARN. Het bemiddelt tussen alle applicaties die in het cluster draaien.

2. Slavendaemons

  • DataNode: DataNode is de slave-daemon van Hadoop HDFS. Het draait op slave-machines. Het slaat actuele gegevens of blokken op.
  • NodeManager: Het is de slavendaemon van YARN. Het zorgt voor alle individuele rekenknooppunten in het cluster.

Hoe werkt Hadoop?

Hadoop bewaart en verwerkt de gegevens op een gedistribueerde manier over het cluster van basishardware. Om gegevens op te slaan en te verwerken, verzendt de client de gegevens en het programma naar het Hadoop-cluster.

Hadoop HDFS slaat de gegevens op, MapReduce verwerkt de gegevens die zijn opgeslagen in HDFS en YARN verdeelt de taken en wijst resources toe.

Laten we deze componenten nu in detail bekijken.

1. HDFS

De gegevens in Hadoop worden opgeslagen in het Hadoop Distributed File System. Er draaien twee daemons in Hadoop HDFS, NameNode en DataNode.

a. NaamNode

NameNode is de hoofddaemon in HDFS. Het draait op de hoofdknooppunten. Het onderhoudt de naamruimte van het bestandssysteem. NameNode slaat de werkelijke gegevens niet op. Het slaat de metadata op, zoals informatie over bestandsblokken, bestandsrechten, blokkeerlocaties, enz.

NameNode beheert de DataNode en geeft instructies aan hen. NameNode ontvangt elke 3 seconden een hartslag van DataNodes, wat aangeeft dat de DataNode in leven is.

b. DataNode

DataNode is de slave-daemon in HDFS. DataNodes zijn de slave-knooppunten die de feitelijke bedrijfsgegevens opslaan. Zij zijn verantwoordelijk voor het bedienen van de lees-/schrijfverzoeken van de klant op basis van de instructies van NameNode. DataNodes sturen hartslagberichten naar de NameNode om ervoor te zorgen dat ze in leven zijn.

c. Secundaire NameNode

Het is een andere daemon in de Hadoop HDFS. Het is het hulpknooppunt voor de primaire NameNode. Secondary NameNode downloadt de bewerkingslogboeken en het Fsimage-bestand van de primaire NameNode en past de bewerkingslogboeken periodiek toe op Fsimage .

Vervolgens stuurt het het bijgewerkte Fsimage-bestand terug naar de NameNode. Dus als de primaire NameNode faalt, wordt de laatste opgeslagen Fsimage op de secundaire NameNode gebruikt om metadata van het bestandssysteem te herstellen.

Wanneer de client gegevens naar Hadoop HDFS wil lezen of schrijven, communiceert deze eerst met de NameNode. NameNode controleert eerst de clientrechten en als de client voldoende rechten heeft, geeft de NameNode het adres van de DataNodes van waaruit de client gegevens kan lezen of schrijven.

Het bestand van de klant in HDFS is verdeeld in blokken. De blokgrootte is standaard 128 MB. DataNode slaat de blokken bestanden op. Om fouttolerantie te bieden, maakt HDFS replica's van blokken, afhankelijk van de replicatiefactor.

Standaard is de replicatiefactor 3, wat betekent dat er 3 exemplaren van een blok worden opgeslagen in HDFS. HDFS slaat replica's van het blok op verschillende DataNodes op door het Rack Awareness-algoritme te volgen.

Als tijdens het lezen van bestanden een DataNode uitvalt, geeft de NameNode het adres van een andere DataNode die een replica van het blok bevat van waaruit de client zijn gegevens kan lezen zonder enige downtime.

2. MapReduce

MapReduce is de verwerkingslaag in Hadoop. Het verwerkt de gegevens parallel over meerdere machines in het cluster. Het werkt door de taak te verdelen in onafhankelijke subtaken en deze parallel uit te voeren over verschillende DataNodes.

MapReduce verwerkt de gegevens in twee fasen, dat wil zeggen de Kaartfase en de Verminder fase . De invoer en uitvoer van beide fasen zijn de belangrijkste waardeparen. Het type sleutel, waardeparen wordt gespecificeerd door de programmeur via de InputFormat-klasse . Standaard wordt het tekstinvoerformaat gebruikt.

De programmeur specificeert de twee functies, dat wil zeggen, kaartfunctie en de reduceer functie . In de kaartfunctie schrijft de programmeur de bedrijfslogica voor het verwerken van de gegevens.

In de functie Verminderen schrijft de programmeur de logica voor het samenvatten en aggregeren van de tussenuitvoer van de kaartfunctie en genereert de uitvoer.

Werking van Hadoop MapReduce

Telkens wanneer de klant enige verwerking wil uitvoeren op zijn gegevens in het Hadoop-cluster, slaat hij de gegevens eerst op in Hadoop HDFS en schrijft vervolgens het MapReduce-programma voor het verwerken van de gegevens. De Hadoop MapReduce werkt als volgt:

1. Hadoop verdeelt de taak in twee soorten taken, namelijk taken in kaart brengen en taken verminderen. YARN heeft deze taken gepland (die we later in dit artikel zullen zien). Deze taken worden uitgevoerd op verschillende DataNodes.

2. De invoer voor de MapReduce-taak is verdeeld in stukken van vaste grootte die invoersplitsingen worden genoemd.

3. Voor elke invoersplitsing wordt één kaarttaak gemaakt die een door de gebruiker gedefinieerde kaartfunctie uitvoert voor elk record in de invoersplitsing. Deze kaarttaken worden uitgevoerd op de DataNodes waar de invoergegevens zich bevinden.

4. De uitvoer van de kaarttaak is een tussenuitvoer en wordt naar de lokale schijf geschreven.

5. De tussentijdse outputs van de kaarttaken worden geschud en gesorteerd en worden vervolgens doorgegeven aan de reducer.

6. Voor een enkele verkleiningstaak wordt de gesorteerde tussentijdse uitvoer van de mapper doorgegeven aan het knooppunt waar de verkleiningstaak wordt uitgevoerd. Deze uitgangen worden vervolgens samengevoegd en vervolgens doorgegeven aan de door de gebruiker gedefinieerde reduceerfunctie.

7. De reduceerfunctie vat de output van de mapper samen en genereert de output. De output van het verloopstuk wordt opgeslagen op HDFS.

8. Voor meerdere reduceerfuncties specificeert de gebruiker het aantal reducers. Als er meerdere verkleiningstaken zijn, partitioneren de kaarttaken hun uitvoer, waarbij één partitie wordt gemaakt voor elke verkleiningstaak.

GAREN

YARN is de resourcebeheerlaag in Hadoop. Het plant de taak in het Hadoop-cluster en wijst resources toe aan de toepassingen die in het cluster worden uitgevoerd. Het is verantwoordelijk voor het leveren van de rekenbronnen die nodig zijn voor het uitvoeren van de applicaties.

Er draaien twee YARN-daemons in het Hadoop-cluster voor het leveren van YARN-kernservices. Dit zijn:

a. ResourceManager

Het is de meester-daemon van YARN. Het draait op het hoofdknooppunt per cluster om de resources in het cluster te beheren. De ResourceManager heeft twee hoofdcomponenten:Scheduler en ApplicationManager.

De planner wijst resources toe aan verschillende applicaties die in het cluster worden uitgevoerd.

ApplicationManager neemt de taak over die door de klant is ingediend en onderhandelt over de container voor het uitvoeren van de toepassingsspecifieke ApplicationMaster en start de ApplicationMaster-container opnieuw op bij een fout.

b. NodeManager

NodeManager is de slave-daemons van YARN. Het draait op alle slave-knooppunten in het cluster. Het is verantwoordelijk voor het lanceren en beheren van de containers op knooppunten. Containers voeren de applicatiespecifieke processen uit met een beperkte set bronnen zoals geheugen, CPU, enzovoort.

Wanneer NodeManager start, kondigt het zichzelf aan bij de ResourceManager. Het stuurt periodiek een hartslag naar de ResourceManager. Het biedt middelen aan het cluster.

c. ApplicatieMaster

De ApplicationMaster per applicatie onderhandelt over containers vanuit planners en houdt de containerstatus bij en bewaakt de voortgang van de container.

Een opdrachtgever dient een aanvraag in bij de ResourceManager. De ResourceManager neemt contact op met de NodeManager die de rekencontainers op knooppunten in het cluster start en bewaakt. De container voert de ApplicationMaster uit.

De MapReduce-taak en de ApplicationMaster draaien in containers die worden gepland door de ResourceManager en beheerd door de NodeManagers.

Laten we nu samenvatten hoe Hadoop intern werkt:

1. HDFS verdeelt de invoergegevens van de client in blokken van 128 MB. Afhankelijk van de replicatiefactor worden replica's van blokken gemaakt. De blokken en hun replica's worden opgeslagen op verschillende DataNodes.

2. Zodra alle blokken zijn opgeslagen op HDFS DataNodes, kan de gebruiker de gegevens verwerken.

3. Om de gegevens te verwerken, dient de klant het MapReduce-programma in bij Hadoop.

4. ResourceManager plande vervolgens het programma dat door de gebruiker werd ingediend op individuele nodes in het cluster.

5. Zodra alle knooppunten de verwerking hebben voltooid, wordt de uitvoer teruggeschreven naar de HDFS.

Samenvatting

In dit artikel hebben we de volledige werking van Hadoop bestudeerd. Ik hoop dat je na het lezen van dit artikel begrijpt hoe Hadoop enorme hoeveelheden gegevens opslaat en verwerkt.

In het artikel wordt ook uitgelegd hoe de resources worden gepland tussen de toepassingen in de resources. Het artikel beschrijft de belangrijkste daemons die draaien in het Hadoop-cluster en de kerncomponenten van Hadoop.

Ik hoop dat je begrijpt hoe Hadoop intern werkt.

Blijf leren!!


  1. Array-elementen opvragen met Mongo

  2. Is er een manier om twee collecties in MongoDB atomair bij te werken?

  3. Hoe de logboekregistratie van mongoDB Java-stuurprogramma's uit te schakelen?

  4. projectie werkt niet met zoekquery