Den här bloggen handlar om HDFS Erasure Coding. I den här bloggen kommer vi att diskutera konceptet raderingskodning i Hadoop , frågor av gammalt replikeringsschema. Två algoritmer för Hadoop raderingskodning som XOR algoritm, Reed-Solomon Algorithm diskuteras också i den här bloggen.
Äntligen kommer vi att se arkitekturen och fördelarna med raderingskodning i Hadoop HDFS.
Problem med gammal schemareplikering
HDFS-raderingskodning är en ny funktion som introduceras för att minska lagringskostnader med cirka 50 % jämfört med 3x replikering. Hadoop HDFS replikerar varje block 3 gånger för olika ändamål. Det är en mycket enkel form av redundans för att skydda mot datanodfel.
Tillsammans med fördelar har det olika nackdelar att det är väldigt dyrt. 3 x replikering har 200 % overhead i lagringsutrymme och andra resurser. Datauppsättningar med låg I/O-aktivitet, tilläggsrepliker nås sällan under normal drift men förbrukar fortfarande andra resurser.
Detta är anledningen till att Hadoop Erasure-kodning kom till. Det ger samma feltolerans med mindre lagringsutrymme och 50 % lagringskostnader.
När man jämför de olika lagringsschemana är en viktig faktor:
- Datahållbarhet (antal samtidiga feltoleranser)
- Lagringseffektivitet
Så i N-vägsreplikering finns det N-1 feltolerans med 1/n lagringseffektivitet.
Vad är HDFS Erasure Coding i Hadoop?
HDFS Erasure Coding använder RAID . RAID implementerar EC använder strippning. Strippning lagrar logiskt data i form av ett block. Lagrar sedan dessa block på den andra disken. Den beräknar paritet för varje block och butik. Detta är kodat. Genom paritet återställer den fel.
För feltolerans utökar EC meddelandet med redundanta data. HDFS Erasure-kodning kommer att fungera på enhetliga dataceller. codec tar ett antal dataceller som indata. Och producerar sedan paritetsceller som utdata.
Hela denna process kallas kodning. Paritet och datacell kallas tillsammans för en raderingskodningsgrupp. Processen genom vilken förlorad datacell rekonstrueras över de återstående cellerna kallas avkodning.
Två tillgängliga algoritmer för HDFS Erasure Coding är följande:
a) XOR-algoritm
Det är den enkla implementeringen av Hadoop Erasure-kodning.
Låt oss anta att datacellerna X och Y och Z är dataceller, då är paritetscellen XOR av dessa tre dataceller x ⊕ y ⊕ z så under XOR-operationen genereras endast en paritetsbit och om någon bit går förlorad kan den återställas av de återstående datacellerna och en paritetsbit.
Den är mycket begränsad eftersom den producerar 1 paritetsbit så XOR-operationen kan endast tolerera 1 fel med n gruppstorlek.
"I XOR-drift är feltolerans 1 och lagringseffektivitet n-1/n när gruppstorleken är n. ”
b) Reed-Solomon-algoritm
Reed-Solomon tar upp XOR-driftbegränsningen. Den använder linjär algebra för att generera flera paritetsceller. RS använder två parametrar k och m, k är ett antal dataceller och m är ett antal paritetsceller.
RS fungerar genom att multiplicera k dataceller med en Generator Matrix (G) för att generera utökat kodord med k dataceller och m paritetsceller. Lagringsfel kan återställas genom att multiplicera inversen av generatormatrisen med de utökade kodorden så länge k ur k+m celler är tillgängliga.
"Med Reed, Solomon feltolerans är upp till m celler och lagringseffektivitet k/k+m där k är dataceller och m är paritetsceller."
Designbeslut och arkitektur
EC striping har flera fördelar:
- Stripning möjliggör online-EC (skriver data omedelbart i EC-format), undviker en konverteringsfas och sparar omedelbart lagringsutrymme.
- Den distribuerar en liten fil till flera datanoder. Det eliminerar buntar flera filer i en enda kodningsgrupp. Således förenklar det filhantering som radering och migrering mellan federerade namnområden.
- För att bättre stödja små filer, stödjer EC strippning. I framtiden kommer HDFS också att stödja en sammanhängande EC-layout.
EC har lagt till många nya komponenter är:
- NameNode-tillägg (ECManager ) – Stripe HDFS-filer är logiskt sammansatta av blockgrupper. Var och en innehåller ett visst antal interna block. För att minska minnesförbrukningen för Namenode från dessa ytterligare block, introducerade den ett nytt hierarkiskt blocknamngivningsprotokoll. EC härleder ID:t för en blockgrupp från ID:t för något av dess interna block. Detta tillåter hantering på nivån för blockgruppen snarare än blocket.
- Client Extensions (EC Client) – Klienten kan utföra läs- och skrivoperationer på flera interna block i en blockgrupp parallellt.
- DataNode Extensions (ECWorker)- DataNode kör en extra EC-arbetaruppgift för återställning av misslyckade raderingskodade block. Så, NameNode upptäcker de misslyckade EC-blocken, namenode ger återställningsinstruktioner till datanoder. Sedan klarar den återställningsuppgiften som hjärtslagssvar.
Fördelar med raderingskodning
- Datatillgänglighet vid lägre kapacitet: HDFS Raderingskoder möjliggör datatillgänglighet vid lägre kapacitet. Inledningsvis replikera block i tre repliker. Så, lagringsutrymme för tre kopior är stort. Men nu i raderingskodning lagra stor data som en paritetsbit, så lagring minskar utrymmet.
- Prestanda: Eftersom EC lagrar data som paritet istället för 3 repliker så ger det bättre prestanda.
- Snabb återhämtning: Den upptäcker och återställer HDFS-blockfel både aktivt (i bakgrunden) och passivt (på läsvägen).
Slutsats
Sammanfattningsvis kan vi säga att HDFS Erasure-kodning har minskat lagringskostnaderna med 50%. EC minskar overhead på grund av paritetsbitar. Därför är dessa HDFS-funktioner förstärker Apache Hadoop-funktioner.
Om du har några frågor eller förslag relaterade till raderingskodning i HDFS, så kommentera oss gärna i avsnittet nedan.