hadoop hdfs hadoop distributed file system
Αυτό το σεμινάριο εξηγεί Hadoop HDFS - Hadoop Κατανεμημένο σύστημα αρχείων, στοιχεία και αρχιτεκτονική συμπλέγματος. Θα μάθετε επίσης για τον αλγόριθμο συνειδητοποίησης Rack:
Όπως μάθαμε στο προηγούμενο σεμινάριο, το μεγαλύτερο πρόβλημα με το Big Data είναι να το αποθηκεύσουμε σε ένα υπάρχον σύστημα. Ακόμα κι αν αποθηκεύσαμε κάπως μέρος του σε ένα υπάρχον σύστημα, η επεξεργασία του BigData χρειάστηκε χρόνια.
Τα αποτελέσματα που θέλατε σε λίγα λεπτά χρειάστηκαν εβδομάδες ή ίσως σε μήνες και λόγω αυτού, η αξία αυτού του αποτελέσματος χάθηκε.
=> Παρακολουθήστε την απλή σειρά εκπαίδευσης BigData εδώ.
Τι θα μάθετε:
Κατανεμημένο σύστημα αρχείων Hadoop
Για να επιλύσουμε αυτό το πρόβλημα ή για να αντιμετωπίσουμε αυτό το ζήτημα έχουμε τώρα το HADOOP. Η Hadoop έλυσε αυτό το μεγάλο πρόβλημα δεδομένων χρησιμοποιώντας Hadoop HDFS.
Hadoop HDFS έλυσε το πρόβλημα αποθήκευσης των Big Data και Μείωση χάρτη Hadoop επίλυσε τα ζητήματα που σχετίζονται με την επεξεργασία μέρους των Big Data.
Τώρα, γνωρίζουμε ότι το Hadoop ουσιαστικά διαθέτει ένα Κατανεμημένο Σύστημα Αρχείων… ΑΛΛΑ ΓΙΑΤΙ;
jms συνεντεύξεις ερωτήσεις και απαντήσεις για έμπειρους
Γιατί το Hadoop είναι ένα κατανεμημένο σύστημα αρχείων;
Ας προσπαθήσουμε να καταλάβουμε τι είναι ένα κατανεμημένο σύστημα αρχείων και να κατανοήσουμε τα πλεονεκτήματα του κατανεμημένου συστήματος αρχείων.
Κατανεμημένο σύστημα αρχείων
Ας πάρουμε ένα παράδειγμα ανάγνωσης 1 TB δεδομένων. Έχουμε έναν διακομιστή που είναι ένας καλός διακομιστής υψηλών προδιαγραφών που έχει 4 κανάλια εισόδου / εξόδου (είσοδος εξόδου) και κάθε κανάλι έχει εύρος ζώνης 100MB / s, χρησιμοποιώντας αυτό το μηχάνημα, θα μπορείτε να διαβάσετε αυτά τα δεδομένα 1TB σε 43 Λεπτά.
Τώρα αν φέρνουμε 10 αριθ. Μηχανών ακριβώς έτσι, τι θα συμβεί;
Ο χρόνος μειώθηκε στα 4,3 λεπτά. Επειδή η όλη προσπάθεια χωρίστηκε σε 10 μηχανήματα και γι 'αυτό ο χρόνος που αφιερώθηκε για την επεξεργασία 1TB δεδομένων μειώνεται στο 1/10ου4,3 λεπτά.
Ομοίως, όταν εξετάζουμε το BigData, αυτά τα δεδομένα χωρίζονται σε πολλαπλά κομμάτια δεδομένων και επεξεργαζόμαστε πραγματικά αυτά τα δεδομένα ξεχωριστά και αυτός είναι ο λόγος για τον οποίο η Hadoop επέλεξε το Κατανεμημένο σύστημα αρχείων σε σχέση με ένα κεντρικό σύστημα αρχείων.
Συστατικά του Hadoop
Το Hadoop HDFS διαθέτει 2 κύρια στοιχεία για την επίλυση των προβλημάτων με τα BigData.
- Το πρώτο συστατικό είναι το Hadoop HDFS για την αποθήκευση Big Data.
- Το δεύτερο στοιχείο είναι το Hadoop Map Reduce για την επεξεργασία μεγάλων δεδομένων.
Τώρα, όταν βλέπουμε την αρχιτεκτονική του Hadoop (η εικόνα δίνεται παρακάτω), έχει δύο φτερά όπου βρίσκεται η αριστερή 'Αποθήκευση' και η δεξιά είναι 'Επεξεργασία' . Αυτό σημαίνει ότι το αριστερό είναι το HDFS, δηλαδή το σύστημα αρχείων διανομής Hadoop και το δεξί είναι το YARN και το Map Reduce, δηλαδή το μέρος επεξεργασίας.
Χρησιμοποιώντας το HDFS, το Hadoop μας επιτρέπει να αποθηκεύουμε Big Data και χρησιμοποιώντας το YARN & Map Reduce, το Hadoop μας δίνει τη δυνατότητα να επεξεργαστούμε τα ίδια Big Data που αποθηκεύουμε στο HDFS.
Όπως μπορείτε να δείτε στην παραπάνω εικόνα, το HDFS έχει δύο μεγάλους δαίμονες ή μπορείτε να τους καλέσετε ως διεργασίες ή νήματα που δεν είναι τίποτα εκτός από τις διαδικασίες JAVA, δηλαδή να εκτελούνται εντός ενός JVM - NameNode και DataNode.
Το NameNode είναι ένας κύριος δαίμονας που τρέχει στο Master Machine, δηλαδή ένα μηχάνημα υψηλής τεχνολογίας ουσιαστικά και το DataNode είναι ένα Slave Machine που τρέχει σε υλικό εμπορευμάτων. Μπορεί να υπάρχουν περισσότερα DataNode καθώς τα Slave Machines είναι περισσότερα από ένα Master Machine.
Επομένως, έχουμε πάντα ένα NameNode και πολλά DataNode σε Slave Machines.
Παρομοίως, έχουμε το YARN στην άλλη πλευρά που έχει και πάλι δύο δαίμονες, το ένα είναι το Resource Manager που τρέχει στο Master Machine και το Node Manager που τρέχει στο Slave Machine όπως το DataNode. Έτσι κάθε Slave Machine έχει δύο δαίμονες - ο ένας είναι ο DataNode και ο άλλος ο Node Manager.
Το Master Machine έχει το NameNode και το Resource Manager σε λειτουργία. Το NameNode είναι υπεύθυνο για τη διαχείριση των δεδομένων στο Hadoop Distributed File System και το Resource Manager είναι υπεύθυνο για την εκτέλεση των εργασιών επεξεργασίας σε αυτά τα αποθηκευμένα δεδομένα.
NameNode και DataNode
Θα εμβαθύνουμε στην αρχιτεκτονική HDFS και ως εκ τούτου είναι σημαντικό να κατανοήσουμε τι είναι το NameNode και το DataNode, καθώς αυτοί είναι οι δύο κύριοι δαίμονες που λειτουργούν πραγματικά το HDFS.
Όνομα
- Είναι ένας Δάσκαλος Δάσκαλος.
- Διαχείριση και συντήρηση των DataNodes.
- Εγγραφή μεταδεδομένων.
- Λαμβάνει αναφορές καρδιακού παλμού και αποκλεισμού από όλους τους DataNodes.
DataNode
- Είναι ένας σκλάβος δαίμονας.
- Τα πραγματικά δεδομένα αποθηκεύονται εδώ.
- Εξυπηρετεί αιτήματα ανάγνωσης και εγγραφής από τους πελάτες.
Απλώς επικεντρωθείτε στο Διάγραμμα, όπως μπορείτε να δείτε ότι υπάρχει ένα κεντρικό μηχάνημα NameNode που ελέγχει διάφορα DataNode που υπάρχουν, δηλ. Υλικό εμπορευμάτων. Οπότε το Name Node δεν είναι τίποτα άλλο από το Master Daemon που διατηρεί όλο το DataNode.
Αυτά τα NameNode έχουν όλες τις πληροφορίες σχετικά με τα δεδομένα που είναι αποθηκευμένα στο DataNode. Το DataNode όπως προτείνει το ίδιο το όνομα αποθηκεύει τα δεδομένα που υπάρχουν στο σύμπλεγμα Hadoop.
Το NameNode έχει μόνο τις πληροφορίες σχετικά με τα δεδομένα που είναι αποθηκευμένα σε ποια DataNode. Έτσι, αυτό που μπορούμε να πούμε είναι το NameNode αποθηκεύει τα μεταδεδομένα των δεδομένων που είναι αποθηκευμένα στο DataNodes.
Το DataNode κάνει επίσης μια άλλη εργασία, δηλαδή στέλνει τακτικά τον καρδιακό παλμό πίσω στο NameNode. Οι καρδιακοί παλμοί λένε στην πραγματικότητα το NameNode ότι αυτός ο DataNode είναι ακόμα ζωντανός.
Για παράδειγμα, Τα DataNodes στέλνουν έναν καρδιακό παλμό πίσω στο NameNode και με αυτόν τον τρόπο το NameNode έχει την εικόνα ότι αυτά τα DataNodes είναι ζωντανά, οπότε το NameNode μπορεί να χρησιμοποιήσει αυτά τα DataNode για να αποθηκεύσει περισσότερα δεδομένα ή να διαβάσει τα δεδομένα από αυτούς τους DataNodes.
Τώρα ερχόμαστε στο DataNode, το DataNode δεν είναι τίποτα άλλο από το Slave Daemons που αποθηκεύει πραγματικά τα δεδομένα που αποστέλλονται στο Hadoop Cluster. Αυτοί οι DataNodes είναι αυτοί που εξυπηρετούν πραγματικά το αίτημα ανάγνωσης και εγγραφής που υποβάλλεται από τους πελάτες.
Εάν κάποιος θέλει να διαβάσει τα δεδομένα από το σύμπλεγμα Hadoop, τότε αυτά τα αιτήματα επεξεργάζονται πραγματικά από τα DataNodes όπου βρίσκονται τα δεδομένα.
Αρχιτεκτονική συστάδων Hadoop
Στο προηγούμενο θέμα που σχετίζεται με το NameNode και το DataNode, χρησιμοποιήσαμε τον όρο 'Σύμπλεγμα Hadoop'. Ας ρίξουμε μια γρήγορη ματιά σε τι ακριβώς είναι;
Η παραπάνω εικόνα δείχνει την επισκόπηση μιας Hadoop Cluster Architecture. Το Hadoop Cluster δεν είναι τίποτα άλλο από μια τοπολογία Master-Slave, στην οποία υπάρχει ένα Master Machine όπως μπορείτε να δείτε στην κορυφή, δηλαδή το Hadoop Cluster. Σε αυτό το Master Machine, υπάρχει ένα NameNode και ο Resource Manager που εκτελούνται, δηλαδή οι Master Daemons.
Το Master Machine είναι συνδεδεμένο σε όλους τους Slave Machine χρησιμοποιώντας τους Core Switches, επειδή αυτά τα DataNodes είναι πραγματικά αποθηκευμένα σε διάφορα ράφια, έτσι όπως μπορείτε να δείτε Computer 1, Computer 2, Computer 3 έως Computer N. Αυτό δεν είναι τίποτα άλλο από το Slave Μηχανήματα ή DataNodes και όλα είναι παρόντα σε ένα ράφι.
«Το ράφι είναι στην πραγματικότητα μια ομάδα μηχανών που υπάρχουν φυσικά σε μια συγκεκριμένη τοποθεσία και συνδέονται μεταξύ τους.»
Έτσι, το εύρος ζώνης δικτύου μεταξύ κάθε μηχανήματος είναι το ελάχιστο δυνατό. Παρομοίως, υπάρχουν περισσότερα ράφια, ωστόσο, δεν υπάρχουν στην ίδια θέση, επομένως, μπορούμε να έχουμε έναν αριθμό 'r' και μπορούμε επίσης να έχουμε 'n' αριθμό DataNodes ή υπολογιστές ή Slave Machines σε αυτά τα ράφια.
Αυτός είναι ο τρόπος με τον οποίο τα Slave Machines διανέμονται πραγματικά στο σύμπλεγμα, ωστόσο ταυτόχρονα συνδέονται μεταξύ τους.
Πώς αποθηκεύονται τα δεδομένα σε HDFS;
Τώρα προχωράμε αργά στις λεπτομέρειες του τρόπου λειτουργίας του HDFS. Εδώ θα εξερευνήσουμε την αρχιτεκτονική του HDFS.
Όταν λέμε, αποθηκεύοντας ένα αρχείο σε HDFS, τα δεδομένα αποθηκεύονται ως μπλοκ σε HDFS. Όλο το αρχείο δεν είναι αποθηκευμένο σε HDFS, είναι επειδή, όπως γνωρίζετε, το Hadoop είναι ένα κατανεμημένο σύστημα αρχείων.
Έτσι, εάν έχετε μέγεθος αρχείου ίσως 1 PB (Peta Byte), τότε αυτός ο τύπος αποθήκευσης δεν υπάρχει σε ένα μηχάνημα, καθώς το σύμπλεγμα Hadoop δημιουργείται χρησιμοποιώντας το υλικό εμπορευμάτων. Το υλικό σε ένα μόνο μηχάνημα θα είναι περίπου 1 TB ή 2 TB.
Έτσι, ολόκληρο το αρχείο πρέπει να αναλυθεί σε κομμάτια δεδομένων που ονομάζονται HDFS Blocks.
- Κάθε αρχείο αποθηκεύεται σε HDFS ως μπλοκ.
- Το προεπιλεγμένο μέγεθος κάθε μπλοκ είναι περίπου 128 MB στο Apache Hadoop 2.x (και 64mb στην προηγούμενη έκδοση, δηλ. Apache Hadoop 1.x).
- Υπάρχει μια δυνατότητα αύξησης ή μείωσης του μεγέθους του αρχείου των μπλοκ χρησιμοποιώντας το αρχείο διαμόρφωσης, δηλαδή hdfssite.xml που συνοδεύει το πακέτο Hadoop.
Ας πάρουμε ένα παράδειγμα για να κατανοήσουμε αυτόν τον μηχανισμό και να δούμε πώς δημιουργούνται αυτά τα μπλοκ.
Ας εξετάσουμε εδώ ένα αρχείο 248 MB, τώρα αν σπάσουμε αυτό το αρχείο ή αν μετακινήσουμε αυτό το αρχείο στο Hadoop Cluster, δηλαδή 2.x, τότε αυτό το αρχείο θα χωριστεί σε ένα μπλοκ, δηλαδή το μπλοκ Α των 128 MB και ένα άλλο μπλοκ Β 120 MB.
Όπως μπορείτε να δείτε, το πρώτο μπλοκ είναι 128 MB, δηλ. Η πρώτη πλάκα κόβεται εκεί και αυτός είναι ο λόγος για τον οποίο το άλλο μπλοκ είναι 120 MB και όχι 128 MB, δηλαδή δεν πρόκειται να χάσουμε χώρο εάν το υπόλοιπο μέγεθος αρχείου είναι μικρότερο από το προεπιλεγμένο μέγεθος μπλοκ.
Τώρα έχουμε ένα άλλο πρόβλημα μπροστά μας, δηλαδή είναι ασφαλές να έχουμε ένα αντίγραφο κάθε μπλοκ;
απροσδιόριστη αναφορά στο c ++
Η απάντηση είναι ΟΧΙ, επειδή υπάρχει πιθανότητα το σύστημα να αποτύχει και δεν είναι τίποτα άλλο παρά υλικό υλικού, λόγω του οποίου μπορεί να είμαστε σε μεγάλο πρόβλημα. Για να ξεπεραστεί αυτό το ζήτημα, το Hadoop HDFS έχει μια καλή λύση, δηλαδή «Η αναπαραγωγή του μπλοκ».
Αντιγραφή μπλοκ αρχιτεκτονικής Hadoop
Το Hadoop δημιουργεί τα αντίγραφα κάθε μπλοκ που αποθηκεύεται στο Hadoop Distired File System και έτσι το Hadoop είναι ένα σύστημα ανεκτικού σφάλματος, δηλαδή παρόλο που το σύστημά σας αποτυγχάνει ή το DataNode αποτύχει ή ένα αντίγραφο χαθεί, θα έχετε πολλά άλλα αντίγραφα να υπάρχουν στους άλλους DataNodes ή στους άλλους διακομιστές, ώστε να μπορείτε πάντα να διαλέγετε αυτά τα αντίγραφα από εκεί.
Όπως φαίνεται στο παραπάνω διάγραμμα που αντιπροσωπεύει την αναπαραγωγή μπλοκ, υπάρχουν πέντε διαφορετικά μπλοκ ενός αρχείου, δηλαδή μπλοκ 1, 2,3,4,5. Ας δούμε πρώτα με το Block 1 και θα βρείτε αντίγραφα του Block 1 στους κόμβους 1, κόμβο 2 και κόμβο 4.
Παρομοίως, το Block 2 έχει επίσης τρία αντίγραφα, δηλαδή κόμβους 2, κόμβους 3 και κόμβος 4 και έτσι το ίδιο για τα μπλοκ 3, 4 και 5 στους αντίστοιχους κόμβους.
Έτσι, εκτός από τα αντίγραφα που δημιουργούνται, κάθε μπλοκ έχει αναπαραχθεί τρεις φορές, δηλαδή το Hadoop ακολουθεί έναν προεπιλεγμένο συντελεστή αναπαραγωγής τριών, πράγμα που σημαίνει ότι κάθε αρχείο που αντιγράφετε στο Hadoop Distribution File System επαναλαμβάνεται τρεις φορές.
Με άλλα λόγια, εάν αντιγράψετε 1 GB ενός αρχείου στο Hadoop Distribution File System, στην πραγματικότητα αποθηκεύει 3 GB ενός αρχείου σε HDFS. Το καλό είναι ότι ο προεπιλεγμένος παράγοντας αναπαραγωγής μπορεί να αλλάξει κάνοντας μια αλλαγή στα αρχεία διαμόρφωσης του Hadoop.
Πώς αποφασίζει η Hadoop πού να αποθηκεύει τα αντίγραφα;
Το Hadoop ακολουθεί στην πραγματικότητα το Rack Awareness για να αποφασίσει πού να αποθηκεύσει ποιο αντίγραφο ενός μπλοκ.
Δίνεται παρακάτω το διάγραμμα που απεικονίζει τον αλγόριθμο ευαισθητοποίησης Rack.
Υπάρχουν τρία διαφορετικά Racks, δηλαδή Rack-1, Rack-2 και Rack-3.
Το Rack-1 έχει τέσσερα DataNodes και το Rack-2 & Rack-3, έτσι συνολικά ολόκληρο το Hadoop Cluster θα αποτελείται και από τα τρία ράφια και θα υπάρχουν 12 DataNodes.
Ας υποθέσουμε ότι το Block A αντιγράφεται στο DataNode 1 στο Rack-1, σύμφωνα με την έννοια του Rack Awareness το αντίγραφο του Block A δεν μπορεί να δημιουργηθεί στο ίδιο ράφι και πρέπει να δημιουργηθεί σε οποιοδήποτε άλλο rack εκτός από το Rack-1 όπως το κύριο αρχείο υπάρχει ήδη στο Rack-1.
Εάν δημιουργήσουμε τα αντίγραφα του Block A στο ίδιο Rack-1 και σε περίπτωση που ολόκληρο το Rack-1 αποτύχει από ό, τι θα χάσουμε τα δεδομένα σίγουρα, έτσι τα αντίγραφα πρέπει να αποθηκευτούν σε οποιοδήποτε άλλο ράφι, αλλά όχι στο Rack-1.
Έτσι, το αντίγραφο θα δημιουργηθεί στο DataNode 6 και 8 του Rack-2. Ομοίως, για το Block B και το Block C, τα αντίγραφα πρόκειται να δημιουργηθούν σε διαφορετικά ράφια, όπως φαίνεται στο παραπάνω διάγραμμα.
συμπέρασμα
Μάθαμε με τους παρακάτω δείκτες από αυτό το σεμινάριο-
- Το Hadoop HDFS επιλύει το πρόβλημα αποθήκευσης των BigData.
- Το Hadoop Map Reduce επιλύει τα ζητήματα που σχετίζονται με την επεξεργασία των BigData.
- Το NameNode είναι ένα Master Daemon και χρησιμοποιείται για τη διαχείριση και τη συντήρηση των DataNodes.
- Το DataNode είναι ένας Slave Daemon και τα πραγματικά δεδομένα αποθηκεύονται εδώ. Χρησιμεύει στην ανάγνωση και τη σύνταξη αιτημάτων από τους πελάτες.
- Στο Hadoop Cluster, ένα ράφι είναι στην πραγματικότητα μια ομάδα μηχανών που υπάρχουν φυσικά σε μια συγκεκριμένη τοποθεσία και συνδέονται μεταξύ τους.
- Κάθε αρχείο αποθηκεύεται σε HDFS ως μπλοκ.
- Το προεπιλεγμένο μέγεθος κάθε μπλοκ είναι περίπου 128 MB στο Apache Hadoop 2.x (64 MB στην προηγούμενη έκδοση, δηλ. Apache Hadoop 1.x)
- Υπάρχει μια δυνατότητα αύξησης ή μείωσης του μεγέθους του αρχείου των μπλοκ χρησιμοποιώντας το αρχείο διαμόρφωσης, δηλ. Hdfssite.xml που συνοδεύει το πακέτο Hadoop.
Στο επόμενο σεμινάριο για HDFS, θα μάθουμε για την αρχιτεκτονική HDFS και τους μηχανισμούς ανάγνωσης και εγγραφής.
=> Επισκεφθείτε εδώ για να δείτε τη σειρά εκπαίδευσης BigData για όλους.
Συνιστώμενη ανάγνωση
- Τι είναι το Hadoop; Εκμάθηση Apache Hadoop για αρχάριους
- Διαχείριση αρχείων στο Unix: Επισκόπηση του συστήματος αρχείων Unix
- Unix ειδικοί χαρακτήρες ή μεταχαρακτήρες για τη διαχείριση αρχείων
- Unix Access Access Δικαιώματα: Unix Chmod, Chown και Chgrp
- Ranorex Test Suite, Test Module Creation, UserCode File, Xpath και Data Binding
- Αντικείμενα αρχείου VBScript: CopyFile, DeleteFile, OpenTextFile, Ανάγνωση και εγγραφή αρχείου κειμένου
- Λειτουργίες εξόδου εισόδου αρχείου σε C ++
- Ανάπτυξη Java: Δημιουργία και εκτέλεση αρχείου Java JAR