sql >> Database >  >> NoSQL >> HBase

HDFS-zelfstudie - Een complete introductie tot HDFS voor beginners

Wil je weten hoe Hadoop enorme hoeveelheden gegevens op een betrouwbare en fouttolerante manier opslaat?

In deze HDFS-zelfstudie gaan we een van de kerncomponenten van Hadoop bespreken, namelijk Hadoop Distributed File System (HDFS).

Eerst zullen we een inleiding zien tot Distributed FileSystem. Daarna zullen we het Hadoop Distributed FileSystem bestuderen. Het artikel legt de reden uit voor het gebruik van HDFS, HDFS-architectuur en blokken in HDFS.

Het artikel maakt ook gebruik van enkele van de functies van Hadoop HDFS. Je komt ook meer te weten over de hartslagberichten in Hadoop HDFS.

Deze HDFS-zelfstudie biedt de complete inleidende gids voor de meest betrouwbare Hadoop HDFS-opslag.

Laten we eerst beginnen met een inleiding tot Distributed FileSystem.

Gedistribueerd bestandssysteem

Wanneer de dataset de opslagcapaciteit van een enkele machine overschrijdt, wordt het verplicht om de dataset over meerdere afzonderlijke machines te verdelen. Het bestandssysteem dat de gegevens over het netwerk van machines beheert, wordt een gedistribueerd bestandssysteem genoemd .

Een gedistribueerd bestandssysteem is een bestandssysteem waarmee we gegevens kunnen opslaan op meerdere machines of knooppunten in een cluster en waarmee meerdere gebruikers toegang hebben tot gegevens.

Aangezien de DFS op het netwerk is gebaseerd, treden alle complicaties van netwerkprogrammering op, waardoor een gedistribueerd bestandssysteem complexer wordt dan het reguliere bestandssysteem. Een van de grootste uitdagingen in DFS is het tolereren van uitval van knooppunten zonder gegevensverlies.

Hadoop wordt geleverd met een gedistribueerd bestandssysteem genaamd Hadoop Distributed Filesystem voor het opslaan van grote hoeveelheden gegevens, terwijl het tegelijkertijd fouttolerantie en hoge beschikbaarheid biedt.

Benieuwd naar HDFS? Laten we nu beginnen met de HDFS-zelfstudie.

HDFS-zelfstudie – Inleiding

Hadoop Distributed FileSystem (HDFS) is een op Java gebaseerd gedistribueerd bestandssysteem dat in Hadoop wordt gebruikt voor het opslaan van een grote hoeveelheid gestructureerde of ongestructureerde gegevens, variërend in grootte van GigaBytes tot PetaBytes, over een cluster van standaardhardware. Het is de meest betrouwbare opslag ter wereld die tot nu toe bekend is.

In HDFS worden gegevens op meerdere locaties opgeslagen, dus als een van de machines uitvalt, kunnen gegevens worden opgehaald van een andere machine die de kopie van de gegevens bevat. Het is dus zeer fouttolerant en zorgt ervoor dat er geen gegevens verloren gaan, zelfs niet in het geval van een hardwarestoring.

Het is het belangrijkste onderdeel van Hadoop, samen met MapReduce, YARN en andere veelvoorkomende hulpprogramma's.

Het volgt een Write-Once-Read-Many filosofie die de coherentie van gegevens vereenvoudigt en toegang met hoge doorvoer mogelijk maakt.

Waarom HDFS?

In de huidige IT-wereld bevindt bijna 75% van de gegevens ter wereld zich in Hadoop HDFS. Dit heeft de volgende reden:

  • HDFS slaat gegevens op over de standaardhardware, waardoor er geen high-end machines nodig zijn voor het opslaan van big data. Biedt dus voordelige opslag voor het opslaan van big data.
  • HDFS volgt het meest efficiënte gegevensverwerkingspatroon, namelijk het Write-Once-Read-Many-Times-patroon. Een dataset die uit verschillende bronnen is gegenereerd, wordt gekopieerd en vervolgens worden de verschillende analyses in de loop van de tijd op die dataset uitgevoerd. Het is dus het beste voor batchverwerking.
  • HDFS kan gegevens van elke grootte opslaan die zijn gegenereerd vanuit elke bron in elke indeling, gestructureerd of ongestructureerd.
  • Het write-one-read-many-model versoepelt de vereisten voor gelijktijdigheidsbeheer. De gegevens zijn meerdere keren toegankelijk zonder enig probleem met de coherentie van de gegevens.
  • HDFS werkt op basis van de aanname van gegevenslocatie dat het verplaatsen van berekeningen naar gegevens veel gemakkelijker en sneller is dan het verplaatsen van gegevens naar de rekeneenheid. HDFS vergemakkelijkt het lokaliseren van verwerkingslogica in de buurt van de gegevens in plaats van gegevens naar de toepassingsruimte te verplaatsen. Dit vermindert dus de netwerkcongestie en de algehele doorlooptijd.

Dus, als we verder gaan in deze HDFS-zelfstudie, gaan we naar HDFS-architectuur.

HDFS-architectuur

Hadoop DFS volgt master-slave architectuur. De HDFS bestaat uit twee soorten knooppunten, namelijk masterknooppunten en slavenknooppunten. Het hoofdknooppunt beheert de naamruimte van het bestandssysteem, dat wil zeggen, het slaat de metadata over de blokken bestanden op.

De slave nodes slaan de gebruikersgegevens op en zijn verantwoordelijk voor het verwerken van data op basis van de instructie van de master node.

HDFS-master

Master in HDFS is het middelpunt van Hadoop HDFS. Het zijn de high-end machines die metadata opslaan met betrekking tot alle bestanden die zijn opgeslagen in HDFS. Het beheert en onderhoudt de naamruimte van het bestandssysteem en geeft instructies aan de slave-knooppunten.

De NameNode is het hoofdknooppunt in Hadoop HDFS.

HDFS-slaaf

Slave Nodes zijn verantwoordelijk voor het opslaan van de feitelijke bedrijfsgegevens. Het zijn de normale configuratiemachines (commodity-hardware) die de datasets opslaan en verwerken in opdracht van het hoofdknooppunt.

De DataNodes zijn de slave-knooppunten in Hadoop HDFS.

HDFS-naamknooppunt

NameNode is het hoofdknooppunt. Het beheert bestandssysteemnaamruimtebewerkingen zoals openen/sluiten, hernoemen van bestanden en mappen. NameNode wijst gegevensblokken toe aan DataNodes en registreert elke wijziging die in de naamruimte van het bestandssysteem wordt aangebracht.

HDFS DataNode

DataNodes zijn de slave-knooppunten die lees-/schrijfverzoeken van HDFS-clients afhandelen. DataNodes maakt, verwijdert en repliceert datablokken volgens de instructies van het betreffende naamknooppunt.

Vraagt ​​u zich af hoe gegevens worden opgeslagen in HDFS?

Blokkeringen in HDFS

HDFS splitst de bestanden op in brokken van blokgrootte die gegevensblokken worden genoemd. Deze blokken worden opgeslagen over meerdere DataNodes in het cluster. De standaardblokgrootte is 128 MB. We kunnen de standaard blokgrootte configureren, afhankelijk van de clusterconfiguratie.

Voor het cluster met high-end machines kan de blokgrootte groot worden gehouden (zoals 256 Mb of meer). Voor het cluster met machines met een configuratie zoals 8Gb RAM, kan de blokgrootte kleiner worden gehouden (zoals 64 Mb).

HDFS maakt ook replica's van blokken op basis van de replicatiefactor (een getal dat het totale aantal kopieën van een blok van een bestand definieert). De replicatiefactor is standaard 3. Dit betekent dat er 3 kopieën van elk blok worden gemaakt en opgeslagen op meerdere knooppunten.

Als een van de DataNodes faalt, wordt het blok opgehaald van een andere DataNode die een replica van een blok bevat. Dit maakt HDFS-fouttolerantie.

Heb je erover nagedacht hoe NameNode een DataNode-fout ontdekt?

DataNode-fout

Alle DataNodes in Hadoop HDFS sturen continu een klein hartslagbericht (signalen) naar NameNode om elke 3 seconden te vertellen dat ik leef.

Als NameNode gedurende meer dan 10 minuten geen hartslagbericht ontvangt van een bepaalde DataNode, beschouwt het dat DataNode als dood en begint het een replica te maken van blokken die beschikbaar waren op die DataNode.

NameNode instrueert de DataNodes die een kopie van die gegevens bevatten om die gegevens op andere DataNodes te repliceren om de replicatie in evenwicht te brengen. Op deze manier ontdekt NameNode een DataNode-fout.

Wilt u weten hoe NameNode replica's op verschillende DataNodes plaatst? Laten we rackbewustzijn in HDFS onderzoeken om een ​​antwoord op de bovenstaande vraag te krijgen.

Rack Awareness in HDFS

Hadoop HDFS slaat gegevens op in het cluster van basishardware. Om fouttolerantie te bieden, worden replica's van blokken gemaakt en opgeslagen op verschillende DataNodes.

NameNode plaatst de replica's van blokken op meerdere DataNodes door het Rack Awareness-algoritme te volgen om ervoor te zorgen dat er geen gegevens verloren gaan, zelfs als DataNode of het hele rack uitvalt. De NameNode plaatst de eerste replica op de dichtstbijzijnde DataNode.

Het slaat de tweede replica op verschillende DataNode op hetzelfde rack en de derde replica op verschillende DataNode op een ander rack.

Als de replicatiefactor 2 is, wordt de tweede replica op een andere DataNode op een ander rack geplaatst, zodat als een compleet rack uitvalt, ook het systeem maximaal beschikbaar is.

Het belangrijkste doel van een rack-aware replica-plaatsingsbeleid is het verbeteren van fouttolerantie, gegevensbetrouwbaarheid en beschikbaarheid.

Vervolgens bespreken we in de HDFS-zelfstudie enkele belangrijke functies van Hadoop HDFS.

Belangrijke kenmerken van Hadoop HDFS

1. Hoge beschikbaarheid

Het is een zeer beschikbaar bestandssysteem. In dit bestandssysteem worden gegevens gerepliceerd tussen de knooppunten in het Hadoop-cluster door een replica te maken van de blokken op de andere slaven die aanwezig zijn in het HDFS-cluster. Dus wanneer een gebruiker toegang wil tot deze gegevens, heeft hij toegang tot zijn gegevens van de slaven, die de blokken bevatten.

2. Fouttolerantie

Fouttolerantie in Hadoop HDFS is de werkkracht van een systeem in ongunstige omstandigheden. Het is zeer fouttolerant. Hadoop-framework verdeelt gegevens in blokken.

Daarna maakt het meerdere kopieën van blokken op verschillende machines in het cluster. Dus wanneer een machine in het cluster uitvalt, kan een client gemakkelijk toegang krijgen tot zijn gegevens vanaf de andere machine, die dezelfde kopie van gegevensblokken bevat.

3. Hoge betrouwbaarheid

HDFS biedt betrouwbare gegevensopslag. Het kan gegevens opslaan in het bereik van 100 petabytes. HDFS slaat gegevens betrouwbaar op een cluster op. Het verdeelt de gegevens in blokken. Vervolgens slaat het Hadoop-framework deze blokken op op knooppunten die aanwezig zijn in het cluster.

HDFS slaat gegevens ook betrouwbaar op door een replica te maken van elk blok dat in het cluster aanwezig is. Biedt daarom fouttolerantie.

4. Replicatie

Gegevensreplicatie is een uniek kenmerk van HDFS. Replicatie lost het probleem van gegevensverlies op in ongunstige omstandigheden zoals hardwarestoringen, crashen van knooppunten, enz. HDFS onderhoudt het replicatieproces met een regelmatig tijdsinterval.

Het blijft ook replica's maken van gebruikersgegevens op verschillende machines die in het cluster aanwezig zijn. Dus wanneer een knooppunt uitvalt, heeft de gebruiker toegang tot de gegevens van andere machines. Er is dus geen mogelijkheid om gebruikersgegevens te verliezen.

5. Schaalbaarheid

Het slaat gegevens op meerdere knooppunten in het cluster op. Dus wanneer de vereisten toenemen, kunt u het cluster schalen. Er zijn twee schaalbaarheidsmechanismen beschikbaar in HDFS:verticale en horizontale schaalbaarheid.

6. Gedistribueerde opslag

HDFS-functies worden bereikt via gedistribueerde opslag en replicatie. Het slaat gegevens op een gedistribueerde manier op over de knooppunten. In Hadoop worden gegevens verdeeld in blokken en opgeslagen op de knooppunten die aanwezig zijn in het cluster.

Daarna maakt het de replica van elk blok en slaat het op andere knooppunten op. Wanneer de enkele machine in het cluster crasht, hebben we gemakkelijk toegang tot onze gegevens vanaf de andere knooppunten die de replica bevatten.

Vervolgens bespreken we in de HDFS-zelfstudie enkele handige HDFS-bewerkingen.

HDFS-bewerking

Hadoop HDFS heeft veel overeenkomsten met het Linux-bestandssysteem. We kunnen bijna alle bewerkingen doen die we kunnen doen met een lokaal bestandssysteem, zoals een map maken, het bestand kopiëren, machtigingen wijzigen, enz.

Het biedt ook verschillende toegangsrechten zoals lezen, schrijven en uitvoeren voor gebruikers, groepen en anderen.

1. Lees bewerking

Wanneer de HDFS-client een bestand van HDFS wil lezen, werkt de client eerst samen met NameNode. NameNode is de enige plaats waar metadata wordt opgeslagen. NameNode specificeert het adres van de slaves waar gegevens worden opgeslagen. Vervolgens communiceert de client met de opgegeven DataNodes en leest de gegevens van daaruit.

HDFS-client werkt samen met de API van het gedistribueerde bestandssysteem. Vervolgens stuurt het een verzoek naar NameNode om een ​​bloklocatie te verzenden. NameNode controleert eerst of de client voldoende privileges heeft om toegang te krijgen tot de data of niet? Daarna deelt NameNode het adres waarop gegevens zijn opgeslagen in de DataNode.

NameNode levert een token aan de client, die het aan de DataNode laat zien voor het lezen van het bestand voor veiligheidsdoeleinden. Wanneer een client naar DataNode gaat om het bestand te lezen, staat DataNode na het controleren van het token toe dat de client dat specifieke blok kan lezen.

Daarna opent de client de invoerstroom en begint gegevens te lezen van de opgegeven DataNodes. Op deze manier leest de client dus rechtstreeks gegevens uit DataNode.

2. Schrijfbewerking

Voor het schrijven van een bestand werkt de client eerst samen met NameNode. HDFS NameNode levert het adres van de DataNode waarop de client gegevens moet schrijven.

Wanneer de client klaar is met het schrijven van het blok, begint de DataNode het blok te repliceren naar een andere DataNode. Vervolgens kopieert het het blok naar de derde DataNode. Zodra het de vereiste replicatie heeft gemaakt, stuurt het een definitieve bevestiging naar de client. De authenticatie is hetzelfde als de leesbewerking.

De client stuurt slechts 1 kopie van gegevens, ongeacht onze replicatiefactor, terwijl DataNodes de blokken repliceren. Het schrijven van een bestand is niet duur omdat het meerdere blokken parallel meerdere blokken op meerdere DataNodes schrijft.

Samenvatting

In de conclusie van de HDFS-zelfstudie kunnen we zeggen dat Hadoop HDFS gegevens op een gedistribueerde manier opslaat over het cluster van basishardware.

Hadoop HDFS is een zeer betrouwbaar, fouttolerant en zeer beschikbaar opslagsysteem dat tot nu toe bekend is. Het volgt de master-slave-architectuur waarbij NameNode het masterknooppunt is en de DataNodes de slave-knooppunten.

Ook splitst de HDFS het invoerbestand van de klant in blokken van 128 MB, die we kunnen configureren volgens onze vereisten. Het slaat ook replica's van blokken op om fouttolerantie te bieden.

NameNode volgt het rackbewustzijnsbeleid voor het plaatsen van replica's op DataNode om ervoor te zorgen dat er geen gegevens verloren gaan tijdens machinestoringen of hardwarestoringen. Bovendien sturen de DataNodes een hartslagbericht naar NameNode om ervoor te zorgen dat ze in leven zijn.

Tijdens het lezen of schrijven van bestanden, communiceert de client eerst met de NameNode.

De Hadoop HDFS is een schaalbaar, betrouwbaar, gedistribueerd, fouttolerant en zeer beschikbaar opslagsysteem voor het opslaan van big data.


  1. Heeft iemand MongoDB op Google App Engine geprobeerd?

  2. Mongoose Query om een ​​array te filteren en gerelateerde inhoud te vullen

  3. Python-database programmeren met MongoDB voor beginners

  4. Belangrijkste dingen om te controleren in MongoDB