Wat is de replicatiefactor in HDFS, en hoe kunnen we deze instellen?


Beste antwoord

Nou, replicatiefactor is 3 Standaard in HDFS . Hierin is één origineel blok en twee replicas.

Maar het kan Set zijn door ons.

Laat me je uitleggen hoe je het moet doen.

Kijk, er zijn twee manieren om het te doen. Een is door het commando te gebruiken en anders is directe wijziging in hdfs-site.xml bestand.

De eerste is eenvoudig, je hoeft alleen maar het commando als volgt in te typen:

Je kunt ook verander de replicatiefactor op een basis per bestand met behulp van de Hadoop FS-shell .

[sawant@localhost ~]$ hadoop fs –setrep –w 3 /my/file

U kunt ook de replicatiefactor wijzigen van alle bestanden in een directory.

[sawant@localhost ~]$ hadoop fs –setrep –w 3 -R /my/dir

als je ziet het bovenstaande commando, vervang gewoon 3 door wat je maar wilt.

Laten we de tweede begrijpen …

Open de hdfs-site .xml -bestand. Dit bestand bevindt zich meestal in de map conf / van de Hadoop-installatiemap. Wijzig of voeg de volgende eigenschap toe aan hdfs-site.xml….

dfs.replication

3

Block Replication

hdfs-site.xml wordt gebruikt om HDFS te configureren. Als u de eigenschap dfs.replication wijzigt in hdfs-site.xml , wordt de standaardreplicatie gewijzigd voor alle bestanden zijn in HDFS geplaatst.

In de bovenstaande eigenschap dfs.replication vervang je gewoon 3 door wat je maar wilt.

Dank je !!

Antwoord

De echte reden om voor replicatie van drie te kiezen, is dat dit het kleinste getal is dat een zeer betrouwbaar ontwerp mogelijk maakt. Laten we eens kijken waarom.

Bedenk dat u gegevens verliest als u een hardwarefout heeft op de hardware die elke replica van de gegevens opslaat. Voor moderne draaiende schijven is het uitvalpercentage relatief eenvoudig en bedraagt ​​het ongeveer 5\% per jaar (uw aantal kan hoger of lager zijn, afhankelijk van uw schattingsmethode en hardware die u koopt). Als alle storingen onafhankelijk zijn (dat zijn ze niet, aangezien u eigenlijk slechte batches krijgt), dan betekent dit dat individuele schijven uitvallen met een snelheid van ongeveer 1,6e-9 storingen per seconde en dat de storingen moeten worden verdeeld volgens een Poisson-verdeling. Duizend schijven zouden een gegevensverlies moeten hebben met ongeveer 1000 keer deze snelheid over korte tijdsperioden als u ervan uitgaat dat er geen replicatie plaatsvindt.

We kunnen deze getallen gebruiken om iets te berekenen dat de gemiddelde tijd tot gegevensverlies wordt genoemd. In het geval van één schijf heb je 95\% kans om je gegevens na een jaar te behouden, maar in het geval van duizend schijven heb je een verwaarloosbare kans om gegevensverlies na een jaar te voorkomen. Ik denk eerlijk gezegd niet dat zelfs de behuizing van een enkele schijf acceptabel is.

Dus we repliceren de gegevens.

De duizend schijfbehuizingen zullen ongeveer 50 storingen per jaar hebben, wat zich vertaalt naar een schijfverlies elke week of zo. Dat betekent niet dat het met exacte wekelijkse intervallen zal gebeuren. Het betekent alleen dat de gemiddelde tijd tussen schijfstoringen ongeveer een week zal zijn. Na een schijfstoring zullen we de gegevens opnieuw moeten repliceren, omdat we geen systeem willen dat na verloop van tijd achteruitgaat. Als we de gegevens opnieuw kunnen repliceren voordat de volgende schijf defect raakt die onze gegevens bevat, zal ons systeem gegevensverlies door de eerste storing voorkomen.

De truc is echter dat de tijd tussen afzonderlijke schijven storingen zullen afnemen naarmate systemen groter worden. Als we de dingen echter goed ontwerpen, zal de herreplicatietijd * afnemen * in dezelfde verhouding. De hersteltijd is afhankelijk van het aantal schijven per machine en de netwerkbandbreedte tussen de machines.

Dat betekent dat we vrij gemakkelijk een snelle schatting kunnen maken van de gemiddelde tijd tot gegevensverlies. Voor twee exemplaren moeten we de snelheid van schijfverlies berekenen en vervolgens de kans berekenen dat er nog een schijf verloren gaat tijdens de hersteltijd voor dat verlies. Voor twee exemplaren moeten we dit uitbreiden naar het geval waarin twee schijven doodgaan tijdens de hersteltijd van de eerste schijf. Dit wordt ingewikkelder gemaakt wanneer u schijven stripe en mooie herstelstrategieën heeft die proberen de normale werking te behouden na de eerste storing, maar die alle middelen besteden aan herstel na de tweede storing.

één kopie van de gegevens geeft u een zeer grote kans (bijna zeker, in feite) dat u gegevens verliest in een groot cluster.

Voor twee kopieën heeft u een kans dat u gegevens verliest binnen het bereik van 0,3 \% – 5\% afhankelijk van uw clusterparameters. Voor de meeste bedrijven is dit niet goed genoeg, maar sommige applicaties kunnen dit tolereren.

Voor drie exemplaren kunt u de kans op gegevensverlies doorgaans uitbreiden tot ,1\% per jaar, wat overeenkomt met een gemiddelde tijd tot gegevensverlies van 1000 jaar of meer als u de zaken goed doet.

Dus dat is de reden.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *