Βίντεο: Φυσική Οργάνωση του δίσκου 2024
Το Hadoop Distributed File System (HDFS) σχεδιάστηκε για να αποθηκεύει δεδομένα σε φθηνό και πιο αναξιόπιστο υλικό. Το φθηνό έχει ένα ελκυστικό δαχτυλίδι σε αυτό, αλλά δημιουργεί ανησυχίες για την αξιοπιστία του συστήματος στο σύνολό του, ειδικά για την εξασφάλιση της υψηλής διαθεσιμότητας των δεδομένων.
Προγραμματίζοντας μπροστά για καταστροφή, οι εγκέφαλοι πίσω από το HDFS αποφάσισαν να ρυθμίσουν το σύστημα έτσι ώστε να αποθηκεύουν τρία (τρία) αντίγραφα κάθε μπλοκ δεδομένων.
Το HDFS υποθέτει ότι κάθε μονάδα δίσκου και κάθε κόμβος υποτελούς είναι εγγενώς αναξιόπιστος, οπότε είναι σαφές ότι πρέπει να ληφθεί μέριμνα για την επιλογή των τριών αντιγράφων των μπλοκ δεδομένων.
Το σχήμα δείχνει πως τα μπλοκ δεδομένων από το προηγούμενο αρχείο είναι ριγέ σε ολόκληρο το σύμπλεγμα Hadoop - που σημαίνει ότι κατανέμονται ομοιόμορφα μεταξύ των κόμβων σκλάβου έτσι ώστε ένα αντίγραφο του μπλοκ να είναι ακόμα διαθέσιμο ανεξάρτητα από το δίσκο, κόμβων ή αστοχιών ραφιών.
Το αρχείο που εμφανίζεται έχει πέντε μπλοκ δεδομένων, με α, b, c, d και e. Αν κοιτάξετε πιο προσεκτικά, μπορείτε να δείτε ότι αυτό το συγκεκριμένο σύμπλεγμα αποτελείται από δύο ράφια με δύο κόμβους ανά τεμάχιο και ότι τα τρία αντίγραφα κάθε μπλοκ δεδομένων έχουν διανεμηθεί στους διάφορους κόμβους των σκλάβων.
Κάθε στοιχείο του συμπλέγματος Hadoop θεωρείται πιθανό σημείο αποτυχίας, οπότε όταν το HDFS αποθηκεύει τα αντίγραφα των αρχικών μπλοκ σε ένα σύμπλεγμα Hadoop, προσπαθεί να διασφαλίσει ότι τα αντίγραφα μπλοκ αποθηκεύονται σε διαφορετικά σημεία αποτυχίας.
Για παράδειγμα, ρίξτε μια ματιά στο Block A. Τη στιγμή που έπρεπε να αποθηκευτεί, επιλέχθηκε ο Slave Node 3 και αποθηκεύτηκε το πρώτο αντίγραφο του Block A. Για τα πολλαπλά συστήματα rack, το HDFS στη συνέχεια καθορίζει ότι τα υπόλοιπα δύο αντίγραφα του μπλοκ Α πρέπει να αποθηκευτούν σε διαφορετική βάση. Έτσι το δεύτερο αντίγραφο του μπλοκ Α αποθηκεύεται στον κόμβο Slave 1.
Το τελικό αντίγραφο μπορεί να αποθηκευτεί στο ίδιο ράφι με το δεύτερο αντίγραφο, αλλά όχι στον ίδιο κόμβο υποτελούς, έτσι αποθηκεύεται στον κόμβο Slave 2.