Hadoop Distributed File System (HDFS) is ontworpen om gegevens op te slaan over goedkope en meer onbetrouwbare hardware. Goedkoop heeft een aantrekkelijk tintje, maar het roept wel vragen op over de betrouwbaarheid van het systeem als geheel, vooral om de hoge beschikbaarheid van de gegevens te waarborgen.
Vooruitlopend op rampen hadden de hersenpan achter HDFS de beslissing genomen om het systeem zo in te stellen dat het drie (tel 'em - drie) exemplaren van elk gegevensblok zou opslaan.
HDFS gaat ervan uit dat elk schijfstation en elk slaafknooppunt inherent onbetrouwbaar is, dus moet er duidelijk voor worden gezorgd dat de drie exemplaren van de gegevensblokken worden opgeslagen.
De afbeelding laat zien hoe datablokken uit het eerdere bestand gestreept zijn over het Hadoop-cluster - wat betekent dat ze gelijkmatig zijn verdeeld tussen de slave-knooppunten, zodat een kopie van het blok nog steeds beschikbaar is, ongeacht de schijf, knooppunt of rackfouten.
Het getoonde bestand heeft vijf gegevensblokken, aangeduid met a, b, c, d en e. Als u van dichterbij kijkt, kunt u zien dat dit specifieke cluster is samengesteld uit twee rekken met elk twee knooppunten en dat de drie exemplaren van elk gegevensblok zijn uitgesmeerd over de verschillende slaafknopen.
Elk onderdeel in de Hadoop-cluster wordt als een mogelijk faalpunt gezien, dus wanneer HDFS de replica's van de oorspronkelijke blokken in de Hadoop-cluster opslaat, probeert het ervoor te zorgen dat de blokreplica's in verschillende faalpunten worden opgeslagen.
Kijk bijvoorbeeld eens naar Blok A. Op het moment dat het moest worden opgeslagen, werd Slave Node 3 gekozen en de eerste kopie van Blok A werd daar opgeslagen. Voor systemen met meerdere racks bepaalt HDFS vervolgens dat de resterende twee exemplaren van blok A in een ander rek moeten worden opgeslagen. Dus de tweede kopie van blok A wordt opgeslagen op Slave Node 1.
De uiteindelijke kopie kan worden opgeslagen in hetzelfde rack als de tweede kopie, maar niet op dezelfde slave-node, dus wordt het opgeslagen op Slave Node 2.