Βίντεο: Week 8 2025
Όταν αποθηκεύετε ένα αρχείο σε HDFS, το σύστημα το διασπά σε ένα σύνολο μεμονωμένων μπλοκ και αποθηκεύει αυτά τα μπλοκ σε διάφορους κόμβους υποτελών στο σύμπλεγμα Hadoop. Αυτό είναι ένα εντελώς φυσιολογικό πράγμα, καθώς όλα τα συστήματα αρχείων σπάνε τα αρχεία σε μπλοκ πριν τα αποθηκεύσουν στο δίσκο.
Το HDFS δεν έχει ιδέα (και δεν ενδιαφέρεται) τι είναι αποθηκευμένο μέσα στο αρχείο, έτσι τα ακατέργαστα αρχεία δεν χωρίζονται σύμφωνα με κανόνες που θα καταλάβαιναν οι άνθρωποι. Οι άνθρωποι, για παράδειγμα, θα ήθελαν όρια ρεκόρ - οι γραμμές που δείχνουν πού αρχίζει και τελειώνει ένα ρεκόρ - πρέπει να τηρούνται.
Το HDFS συχνά δεν γνωρίζει καλά ότι η τελική εγγραφή σε ένα μπλοκ μπορεί να είναι μόνο μερική εγγραφή, με το υπόλοιπο περιεχόμενο να απομακρύνεται στο επόμενο μπλοκ. Το HDFS θέλει μόνο να βεβαιωθεί ότι τα αρχεία χωρίζονται σε μπλοκ με ομοιόμορφο μέγεθος που ταιριάζουν με το προκαθορισμένο μέγεθος μπλοκ για την περίπτωση Hadoop (εκτός αν έχει εισαχθεί προσαρμοσμένη τιμή για το αρχείο που αποθηκεύεται). Στο προηγούμενο σχήμα, το μέγεθος του μπλοκ είναι 128MB.
Δεν είναι όλα τα αρχεία που χρειάζεστε να αποθηκεύσετε είναι ένα ακριβές πολλαπλάσιο του μεγέθους του μπλοκ του συστήματός σας, οπότε το μπλοκ τελικών δεδομένων για ένα αρχείο χρησιμοποιεί μόνο τον απαιτούμενο χώρο. Στην περίπτωση του προηγούμενου σχήματος, το τελικό σύνολο δεδομένων είναι 1MB.
Η ιδέα της αποθήκευσης ενός αρχείου ως συλλογής μπλοκ είναι απόλυτα συνεπής με τον τρόπο λειτουργίας των συστημάτων αρχείων. Αλλά τι είναι διαφορετικό για το HDFS είναι η κλίμακα. Ένα τυπικό μέγεθος μπλοκ που θα βλέπατε σε ένα σύστημα αρχείων κάτω από το Linux είναι 4KB, ενώ ένα τυπικό μέγεθος μπλοκ στο Hadoop είναι 128MB. Αυτή η τιμή είναι διαμορφώσιμη και μπορεί να προσαρμοστεί, τόσο ως προεπιλογή νέου συστήματος όσο και ως προσαρμοσμένη τιμή για μεμονωμένα αρχεία.
Hadoop σχεδιάστηκε για την αποθήκευση δεδομένων στην κλίμακα petabyte, όπου ελαχιστοποιούνται οι δυνητικοί περιορισμοί στην κλιμάκωση. Το μεγάλο μέγεθος μπλοκ είναι άμεση συνέπεια αυτής της ανάγκης αποθήκευσης δεδομένων σε τεράστια κλίμακα.
Πρώτα απ 'όλα, κάθε μπλοκ δεδομένων αποθηκευμένο σε HDFS έχει τα δικά του μεταδεδομένα και πρέπει να παρακολουθείται από κεντρικό εξυπηρετητή, έτσι ώστε οι εφαρμογές που χρειάζονται πρόσβαση σε ένα συγκεκριμένο αρχείο να μπορούν να κατευθύνονται σε ό, τι αποθηκεύονται όλα τα μπλοκ του αρχείου. Εάν το μέγεθος του μπλοκ ήταν στην περιοχή kilobyte, ακόμη και μέτριες ποσότητες δεδομένων στην κλίμακα terabyte θα υπερκεράσουν το διακομιστή μεταδεδομένων με πάρα πολλά μπλοκ για παρακολούθηση.
Δεύτερον, το HDFS έχει σχεδιαστεί για να επιτρέπει υψηλή απόδοση, έτσι ώστε η παράλληλη επεξεργασία αυτών των μεγάλων συνόλων δεδομένων να γίνεται όσο το δυνατόν πιο γρήγορα. Το κλειδί της επεκτασιμότητας του Hadoop στην πλευρά επεξεργασίας δεδομένων είναι, και πάντα θα είναι, παραλληλισμός - η δυνατότητα επεξεργασίας των μεμονωμένων μπλοκ αυτών των μεγάλων αρχείων παράλληλα.
Για να καταστεί δυνατή η αποτελεσματική επεξεργασία, πρέπει να επιτευχθεί ισορροπία. Από τη μια πλευρά, το μέγεθος του μπλοκ πρέπει να είναι αρκετά μεγάλο ώστε να δικαιολογεί τους πόρους που είναι αφιερωμένοι σε μια μεμονωμένη μονάδα επεξεργασίας δεδομένων (για παράδειγμα, ένας χάρτης ή μια εργασία μείωσης). Από την άλλη πλευρά, το μέγεθος του μπλοκ δεν μπορεί να είναι τόσο μεγάλο που το σύστημα περιμένει πολύ μεγάλο χρονικό διάστημα για μια τελευταία μονάδα επεξεργασίας δεδομένων για να ολοκληρώσει τη δουλειά του.
Αυτές οι δύο σκέψεις εξαρτώνται προφανώς από τα είδη των εργασιών που γίνονται στα μπλοκ δεδομένων.
