sql >> Database >  >> NoSQL >> HBase

HDFS-wiscodering in Big Data Hadoop

Deze blog gaat helemaal over HDFS Erasure Coding. In deze blog bespreken we het concept van Erasure Coding in Hadoop , problemen van het oude replicatieschema. In deze blog worden ook twee algoritmen voor Hadoop-verwijderingscodering besproken, zoals het XOR-algoritme en het Reed-Solomon-algoritme.

Eindelijk zullen we de architectuur en de voordelen zien van wiscodering in Hadoop HDFS.

Probleem met oude schemareplicatie

HDFS-wiscodering is een nieuwe functie die is geïntroduceerd om de opslagoverhead met ongeveer 50% te verminderen in vergelijking met 3x replicatie. Hadoop HDFS repliceert elk blok 3 keer voor verschillende doeleinden. Het is een zeer eenvoudige vorm van redundantie om af te schermen tegen het falen van de datanode.

Naast de voordelen heeft het verschillende nadelen dat het erg duur is. 3 x replicatie heeft 200% overhead in opslagruimte en andere bronnen. Datasets met lage I/O-activiteit, replica's van toevoegingen worden zelden gebruikt tijdens normaal gebruik, maar verbruiken nog steeds andere bronnen.

Dit is de reden dat Hadoop Erasure-codering is ontstaan. Het biedt hetzelfde niveau van fouttolerantie met minder opslagruimte en 50% opslagoverhead.

Bij het vergelijken van de verschillende opslagschema's is een belangrijke overweging:

  • Duurzaamheid van gegevens (aantal gelijktijdige fouttolerantie)
  • Opslagefficiëntie

Dus bij N-way replicatie is er N-1 fouttolerantie met 1/n opslagefficiëntie.

Wat is HDFS-wiscodering in Hadoop?

HDFS Erasure Coding gebruikt RAID . RAID implementeert EC gebruikt stripping. Strippen slaat de gegevens logisch op in de vorm van een blok. Slaat deze blokken vervolgens op op de andere schijf. Het berekent de pariteit voor elk blok en elke winkel. Dit is gecodeerd. Door pariteit herstelt het de fout.

Voor fouttolerantie breidt EC het bericht uit met redundante gegevens. HDFS Erasure-codering werkt op gegevenscellen van uniforme grootte. De codec neemt een aantal datacellen als invoer. En produceert vervolgens pariteitscellen als uitvoer.

Dit hele proces wordt codering genoemd. Pariteit en datacel worden samen een wiscoderingsgroep genoemd. Het proces waarbij verloren datacellen worden gereconstrueerd over de resterende cellen, staat bekend als decoderen.

Er zijn twee algoritmen beschikbaar voor HDFS Erasure Coding:

a) XOR-algoritme

Het is de eenvoudige implementatie van Hadoop Erasure-codering.

Laten we aannemen dat datacellen X en Y en Z datacellen zijn, dan is pariteitscel XOR van deze drie datacellen x ⊕ y ⊕ z dus tijdens de XOR-bewerking wordt slechts één pariteitsbit gegenereerd en als een bit verloren gaat, kan deze worden hersteld door de resterende gegevenscellen en een pariteitsbit.

Het is zeer beperkt omdat het 1 pariteitsbit produceert, zodat de XOR-bewerking slechts 1 fout kan tolereren met n groepsgrootte.

"In XOR-bewerking is fouttolerantie 1 en opslagefficiëntie n-1/n wanneer groepsgrootte is n.

b) Reed-Solomon-algoritme

Reed-Solomon pakt de XOR-bewerkingsbeperking aan. Het gebruikt lineaire algebra om meerdere pariteitscellen te genereren. RS gebruikt twee parameters k en m, k is een aantal datacellen en m is een aantal pariteitscellen.

RS werkt door k datacellen te vermenigvuldigen met een generatormatrix (G), om een ​​uitgebreid codewoord te genereren met k datacellen en m pariteitscellen. Storing in de opslag kan worden hersteld door de inverse vermenigvuldiging van de generatormatrix met de uitgebreide codewoorden, zolang k uit k+m-cellen beschikbaar is.

“MetReed, Solomon fouttolerantie is tot m cellen en opslagefficiëntie k/k+m waarbij k datacellen zijn en m pariteitscellen zijn.”

Ontwerpbeslissing en architectuur

EC-striping heeft verschillende voordelen:

  • Strippen maakt online EC mogelijk (gegevens direct in EC-formaat schrijven), een conversiefase vermijden en direct opslagruimte besparen.
  • Het distribueert een klein bestand naar meerdere Datanodes. Het elimineert het bundelen van meerdere bestanden in een enkele codeergroep. Het vereenvoudigt dus bestandsbewerkingen, zoals verwijdering en migratie tussen federatieve naamruimten.
  • Om kleine bestanden beter te ondersteunen, ondersteunt EC strippen. In de toekomst zal HDFS ook een aaneengesloten EC-layout ondersteunen.

EC heeft veel nieuwe componenten toegevoegd:

  • NameNode-extensies (ECManager ) – Stripe HDFS-bestanden zijn logisch samengesteld uit blokgroepen. Elk daarvan bevat een bepaald aantal interne blokken. Om het geheugengebruik van Namenode van deze extra blokken te verminderen, introduceerde het een nieuw hiërarchisch protocol voor het benoemen van blokken. EC leidt de ID van een blokgroep af van de ID van een van zijn interne blokken. Dit maakt beheer op het niveau van de blokgroep mogelijk in plaats van het blok.
  • Clientextensies (EC Client) – De client kan parallelle lees- en schrijfbewerkingen uitvoeren op meerdere interne blokken in een blokgroep.
  • DataNode-extensies (ECWorker)- DataNode voert een extra EC-werktaak uit voor het herstellen van mislukte wissen gecodeerde blokken. Dus NameNode detecteert de mislukte EC-blokken, namenode geeft herstelinstructies aan datanodes. Vervolgens geeft het de hersteltaak door als hartslagreactie.

Voordelen van wiscodering

  • Beschikbaarheid van gegevens bij lagere capaciteit: HDFS  Wiscodes maken de beschikbaarheid van gegevens mogelijk bij een lagere capaciteit. Repliceer in eerste instantie blokken in drie replica's. De opslagruimte van drie replica's is dus groot. Maar sla nu in wiscodering grote gegevens op als een pariteitsbit, dus opslag vermindert de ruimte.
  • Prestaties: Aangezien EC gegevens opslaat als pariteit in plaats van 3 replica's, geeft het betere prestaties.
  • Snel herstel: Het ontdekt en herstelt HDFS-blokfouten, zowel actief (op de achtergrond) als passief (op het leespad).

Conclusie

Concluderend kunnen we zeggen dat HDFS Erasure-codering de opslagoverhead met 50% heeft verminderd. EC vermindert de overhead vanwege pariteitsbits. Vandaar dat deze HDFS-functies bekrachtig de Apache Hadoop-functionaliteit.

Als je een vraag of suggestie hebt met betrekking tot Erasure Coding in HDFS, reageer dan alsjeblieft in het onderstaande gedeelte.


  1. Hoe kan ik verwijderde ruimte terugwinnen zonder `db.repairDatabase()`?

  2. Wat is het verschil tussen MongoTemplate en MongoRepository van Spring Data?

  3. Waarom heeft Redis Pub/Sub-mogelijkheden?

  4. MongoDB $nin Query-operator