Vad är replikeringsfaktorn i HDFS, och hur kan vi ställa in den?


Bästa svaret

Tja, replikeringsfaktorn är 3 Som standard i HDFS . I det här är ett originalblock och två repliker.

Men det kan vara Set av oss.

Låt mig förklara hur du ska göra det.

Se, det finns två sätt att göra det. En är med kommandot och annat är en direkt förändring i hdfs-site.xml fil.

Den första är enkel, du behöver bara skriva kommandot enligt följande:

Du kan också ändra replikeringsfaktorn per fil med Hadoop FS-skalet .

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

Alternativt kan du ändra replikeringsfaktorn för alla filer under en katalog.

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

som du ser kommandot ovan, ersätt bara 3 med vad du än behöver.

Låt oss förstå den andra …

Öppna hdfs-webbplatsen .xml -fil. Den här filen finns vanligtvis i conf / -mappen i Hadoop-installationskatalogen. Ändra eller lägg till följande egenskap i hdfs-site.xml….

dfs.replication

3

Block Replication

hdfs-site.xml används för att konfigurera HDFS. Ändring av egenskapen dfs.replication i hdfs-site.xml ändrar standardreplikationen för alla filer placerade i HDFS.

Ovan dfs.replication-egenskapen ersätter bara 3 med vad du än behöver.

Tack !!

Svar

Den verkliga anledningen till att välja replikering av tre är att det är det minsta antalet som möjliggör en mycket tillförlitlig design. Låt oss gå igenom en riktig analys av varför.

Tänk på att du kommer att förlora data om du har ett hårdvarufel på hårdvaran som lagrar varje replik av data. För moderna snurrskivor är felfrekvensen relativt enkel och är ungefär 5\% per år (dina siffror kan vara högre eller lägre beroende på din uppskattningsmetod och hårdvara du köper). Om alla fel är oberoende (de är inte, verkligen eftersom du får dåliga satser), betyder det att enskilda diskar misslyckas med en hastighet på cirka 1,6e-9-fel per sekund och fel bör fördelas enligt en Poisson-distribution. Tusen diskar borde ha en dataförlust på cirka 1000 gånger den här hastigheten under korta tidsperioder om du inte antar någon replikering.

Vi kan använda dessa siffror för att beräkna något som kallas genomsnittlig tid för dataförlust. I fallet med en enda disk har du 95\% chans att behålla dina data efter ett år, men i tusen disk fall har du en försumbar chans att undvika dataförlust efter ett år. Jag tror inte att ens enstaka skivfodral är uppriktigt, uppriktigt sagt.

Så vi replikerar data.

De tusen skivfodral kommer att ha cirka 50 fel per år, vilket betyder att en diskförlust varje vecka eller så. Det betyder inte att det kommer att ske med exakta veckointervall. Det betyder bara att den genomsnittliga tiden mellan diskfel kommer att vara ungefär en vecka. Efter ett diskfel måste vi replikera data igen eftersom vi inte vill ha ett system som bryts ned över tiden. Om vi ​​kan replikera data innan nästa disk misslyckas som innehåller våra data, kommer vårt system att undvika dataförlust på grund av det första felet.

Tricket är dock att tiden mellan enskild disk fel minskar när systemen ökar i storlek. Om vi ​​utformar saker bra kommer dock replikeringstiden * att minska * i samma proportion. Tiden för återhämtning beror på antalet enheter per maskin och nätverksbandbredden mellan maskinerna.

Det betyder att vi kan göra en snabb uppskattning av medeltiden för dataförlust ganska enkelt. För två kopior måste vi beräkna hastigheten för diskförlust och sedan beräkna sannolikheten för en annan diskförlust under återställningstiden för den förlusten. För två kopior måste vi utöka detta till fallet där två enheter dör under återställningstiden för den första enheten. Detta görs mer komplext när du stripar diskar och har snygga återställningsstrategier som försöker behålla normal drift efter det första misslyckandet, men som ägnar alla resurser till att återhämta sig efter det andra misslyckandet.

Om du gör matematiken en kopia av data ger dig en mycket hög sannolikhet (nästan säker, faktiskt) för att förlora data i ett stort kluster.

För två kopior har du en sannolikhet att förlora data som ligger inom intervallet 0,3 \% – 5\% beroende på dina klusterparametrar. Detta är inte tillräckligt bra för de flesta företag, men vissa applikationer tål det.

För tre kopior kan du vanligtvis utöka sannolikheten för dataförlust till ,1\% per år, vilket motsvarar en genomsnittlig tid för dataförlust på 1000 år eller mer om du gör saker rätt.

Så det är anledningen.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *