Τεχνικές βελτιστοποίησης για μια κατανεμημένη υπολογιστική πλατφόρμα στη μνήμη με μόχλευση SSD Μέρος 2

Aug 17, 2023

3.1. Περιβάλλον Cluster

Το σχήμα 1 δείχνει το σύμπλεγμα δοκιμαστικής κλίνης που αποτελείται από έναν κόμβο ονόματος (κύριος) και τέσσερις κόμβους δεδομένων (σκλάβους). Στον κόμβο ονόματος (κύριος), διαμορφώσαμε το NameNode και το Secondary NameNode του Hadoop (HDFS) και τον Κόμβο προγράμματος οδήγησης (κύριος κόμβος) του Spark. Σε κάθε κόμβο δεδομένων, εκτελούμε το DataNode of Hadoop (HDFS) και το Worker Node of Spark. Ο κόμβος ονομάτων και τα μηχανήματα κόμβων δεδομένων έχουν τα ίδια περιβάλλοντα H/W (3,4 GHz Xeon E3-1240V3 QuadCore Processor with hyper-threading), εκτός από την ποσότητα της κύριας μνήμης (8 GB για τον κόμβο ονόματος και 4 GB για κάθε κόμβο δεδομένων).

Το Namename είναι ο κύριος κόμβος στην αρχιτεκτονική Hadoop, υπεύθυνος για τη διαχείριση και την παρακολούθηση του συστήματος αρχείων ολόκληρου του συμπλέγματος Hadoop. Ο κόμβος Namename είναι επίσης ένας από τους κρίσιμους κόμβους ολόκληρου του συμπλέγματος Hadoop και η απόδοση και η αξιοπιστία του θα επηρεάσουν άμεσα τη λειτουργική απόδοση και τη διαθεσιμότητα ολόκληρου του συμπλέγματος Hadoop.

Υπάρχουν πολλοί δείκτες που σχετίζονται με τον κόμβο Namename, ένας από τους πιο σημαντικούς δείκτες είναι η μνήμη. Ο κόμβος Namename απαιτεί πολλή μνήμη για την αποθήκευση και τη διαχείριση του χώρου ονομάτων ολόκληρου του συστήματος αρχείων HDFS, το οποίο περιλαμβάνει πληροφορίες μεταδεδομένων αρχείων και καταλόγων, όπως ονόματα αρχείων, δικαιώματα, χρονικές σημάνσεις, μεγέθη αρχείων κ.λπ.

Η μνήμη του κόμβου Namename όχι μόνο καθορίζει τον αριθμό των αρχείων που μπορεί να διαχειριστεί και το μέγεθος του συστήματος αρχείων, αλλά επηρεάζει επίσης την απόδοση και την αξιοπιστία του συμπλέγματος Hadoop. Εάν ο κόμβος Namename έχει ανεπαρκή μνήμη, δεν θα μπορεί να ανταποκριθεί γρήγορα σε αιτήματα πελάτη, με αποτέλεσμα τη μειωμένη απόδοση ολόκληρου του συμπλέγματος Hadoop. Επιπλέον, εάν ο κόμβος Namename αποτύχει, οι πληροφορίες μεταδεδομένων που αποθηκεύει ενδέχεται να χαθούν, καθιστώντας ολόκληρο το σύστημα αρχείων HDFS μη διαθέσιμο.

Επομένως, στο σύμπλεγμα Hadoop, η μνήμη του κόμβου Namename είναι ζωτικής σημασίας. Συνιστάται στους διαχειριστές να επιλέγουν την κατάλληλη διαμόρφωση υλικού Namename node με βάση συγκεκριμένες επιχειρηματικές ανάγκες και να παρακολουθούν τακτικά την απόδοση και τη διαθεσιμότητα των Namename nodes για να διασφαλίζουν ότι μπορούν να παρέχουν αποτελεσματικές και αξιόπιστες υπηρεσίες για ολόκληρο το σύμπλεγμα Hadoop. Μπορεί να φανεί ότι πρέπει να βελτιώσουμε τη μνήμη μας. Το Cistanche μπορεί να βελτιώσει σημαντικά τη μνήμη επειδή η πάστα κρέατος είναι ένα παραδοσιακό κινέζικο φαρμακευτικό υλικό με πολλά μοναδικά αποτελέσματα, ένα από τα οποία είναι η βελτίωση της μνήμης. Η αποτελεσματικότητα του κιμά προέρχεται από διάφορα ενεργά συστατικά, όπως καρβοξυλικό οξύ, πολυσακχαρίτες, φλαβονοειδή κ.λπ. Αυτά τα συστατικά μπορούν να προάγουν την υγεία του εγκεφάλου μέσω διαφόρων καναλιών.

improving brain function

Κάντε κλικ στα συμπληρώματα γνώσης για να ενισχύσετε τη μνήμη

Χρησιμοποιήσαμε δύο SSD ως χώρους αποθήκευσης όπου χρησιμοποιείται ένας SSD SATA3 120 GB για το λειτουργικό σύστημα και ένας SSD SATA3 512 GB είναι εξοπλισμένος για το HDFS, αντίστοιχα. Επιπλέον, ο 512 GB SATA3 SSD μπορεί να αξιοποιηθεί αποτελεσματικά για την επέκταση του εύρους ζώνης ανεπαρκούς κύριας μνήμης για την προσωρινή αποθήκευση των RDD του Spark. Όλοι οι κόμβοι, συμπεριλαμβανομένου του κόμβου ονόματος και του κόμβου δεδομένων, συνδέονται με έναν διακόπτη Ethernet 1 Gb, όπως φαίνεται στο Σχήμα 1. Ο Πίνακας 2 δείχνει τη σύνοψη των διαμορφώσεων υλικού και λογισμικού σε κάθε κόμβο δεδομένων του συμπλέγματος δοκιμαστικής κλίνης.

boost memory

10 ways to improve memory

3.2. Spark JVM Heap

Μια εργασία Spark εκτελείται ως διαδικασία Java στην εικονική μηχανή Java (JVM) και το Spark εκμεταλλεύεται τη Scala, μια λειτουργική γλώσσα που επεκτείνεται από την Java. Η διεργασία εργασίας του Spark εκτελείται επίσης στο JVM κάθε κόμβου δεδομένων, έτσι ώστε σε κάθε κόμβο δεδομένων, η διεργασία εργασίας έχει το σωρό JVM στην κύρια μνήμη, όπως απεικονίζεται στην Εικόνα 2. Όταν το Spark υποβάλλει μια εργασία, η διεργασία εργασίας που έχει ο σωρός JVM εκτελεί την εργασία ως κατανεμημένες εργασίες.

short term memory how to improve

Μπορούμε να προσαρμόσουμε την αναλογία του μεγέθους σωρού JVM ενός Spark Worker μέσω του αρχείου διαμόρφωσης spark-defaults. conf στον κατάλογο spark/conf/. Στο αρχείο spark defaults.conf, η τιμή του spark.executor.memory είναι το μέγεθος σωρού JVM όπου η προεπιλογή είναι 512 MB που μπορεί να χρησιμοποιήσει κάθε κόμβος εργαζόμενος στον κόμβο δεδομένων. Επιπλέον, η τιμή του spark.storage.safetyFraction καθορίζεται ως 0.9, πράγμα που σημαίνει ότι το Spark μπορεί να χρησιμοποιήσει έως και το 90% του μεγέθους του σωρού JVM (γνωστό και ως περιοχή ασφαλείας). Αυτό γίνεται για να εμποδίσει το JVM να δημιουργήσει σφάλματα OOM (εκτός μνήμης) λόγω της έλλειψης διαθέσιμης κύριας μνήμης κατά την επεξεργασία της εργασίας.

Σε αυτήν την περιοχή ασφαλείας, ο συνολικός χώρος σωρού JVM διαιρείται σε τρεις υποπεριοχές: χώροι ξετυλίγματος, αποθήκευσης και τυχαίας αναπαραγωγής, όπως φαίνεται στην Εικόνα 2. Ο χώρος ξετυλίγματος χρησιμοποιείται για την ξετύλιξη μπλοκ δεδομένων στη μνήμη. Όταν ένα RDD αποθηκεύεται προσωρινά σε άλλα μέσα αποθήκευσης, όπως SSD ή HDD που δεν βρίσκεται στην κύρια μνήμη, το RDD θα πρέπει να είναι σειριακό. Στη συνέχεια, όταν το Spark διαβάζει αυτό το RDD πίσω στη μνήμη, το RDD πρέπει να ξετυλιχθεί. Ο χώρος αποθήκευσης χρησιμοποιείται για την προσωρινή αποθήκευση ενός RDD. Εάν ο αποθηκευτικός χώρος δεν επαρκεί για την προσωρινή αποθήκευση του RDD, ορισμένα RDD μπορούν να εξαλειφθούν από αυτόν τον χώρο με βάση την πολιτική LRU (που χρησιμοποιήθηκε λιγότερο πρόσφατα) ή μπορούν να αποθηκευτούν προσωρινά σε άλλα μέσα αποθήκευσης, όπως ένα SSD. Ο χώρος τυχαίας αναπαραγωγής χρησιμοποιείται για την τυχαία αναπαραγωγή των ενδιάμεσων δεδομένων. Αυτός ο χώρος τυχαίας αναπαραγωγής μπορεί να παίξει σημαντικό ρόλο σε επαναληπτικές εφαρμογές όπως η μηχανική εκμάθηση, καθώς μπορεί να επηρεάσει σημαντικά τον συνολικό χρόνο ολοκλήρωσης της εργασίας.

Στην προεπιλεγμένη διαμόρφωση Spark, οι χώροι αποθήκευσης και τυχαίας αναπαραγωγής του σωρού JVM έχουν αναλογίες κλασμάτων χωρητικότητας {{0}}.6 και 0.2, αντίστοιχα (δηλ. 60 % της περιοχής ασφαλείας για την αποθήκευση και 20% για την ανακατεύθυνση). Ο χώρος ξετυλίγματος καταλαμβάνει το 20% του αποθηκευτικού χώρου από προεπιλογή. Η χωρητικότητα αυτών των τριών χώρων του σωρού JVM μπορεί να ρυθμιστεί από έναν σπινθήρα. storage.unrollFraction, spark.storage.memoryFraction και spark.shuffle.memoryFraction. Για παράδειγμα, στο σύμπλεγμα testbed μας, μπορούμε να ορίσουμε το spark.executor.memory ως 2,6 GB από τη μνήμη 4 GB του κόμβου εργαζομένου, πράγμα που σημαίνει ότι το μέγεθος σωρού JVM έχει οριστεί σε 2,6 GB κατ' ανώτατο όριο. Στη συνέχεια, οι πραγματικές χωρητικότητες του αποθηκευτικού χώρου και του χώρου τυχαίας αναπαραγωγής είναι 2,6 GB × 0.9 × 0.6 = 1.4 GB και 2,6 GB × 0,9 × 0.2=0.46 GB, αντίστοιχα. Αντίστοιχα, ο χώρος ξετυλίγματος παίρνει 1,4 GB × 0.2=0,28 GB.

3.3. Πολιτική προσωρινής αποθήκευσης RDD

Η πλατφόρμα Spark προσφέρει διάφορες επιλογές προσωρινής αποθήκευσης RDD που περιλαμβάνουν κύρια μνήμη και δίσκους. Η προεπιλεγμένη επιλογή είναι η ΜΝΗΜΗ_ΜΟΝΟ, όπου το RDD διατηρείται στον αποθηκευτικό χώρο που περιγράφεται στην Ενότητα 3.2 ως μη σειριακό αντικείμενο Java. Εάν αυτός ο χώρος αποθήκευσης είναι ανεπαρκής για τη διατήρηση όλων των RDD, ορισμένα από αυτά θα εξαφανιστούν από την κύρια μνήμη βάσει μιας προκαθορισμένης πολιτικής αντικατάστασης της κρυφής μνήμης. Ωστόσο, όποτε απαιτείται ένα μη αποθηκευμένο RDD για την επεξεργασία εργασιών, αυτό το RDD θα πρέπει να δημιουργείται ξανά με βάση τις πληροφορίες γενεαλογίας που μπορεί να οδηγήσει σε σημαντική υποβάθμιση της απόδοσης σε αυτήν την πολιτική αποθήκευσης MEMORY{{6}ONLY.

Εκτός από την επιλογή MEMORY_ONLY, το Spark παρέχει εναλλακτικές επιλογές MEMORY_AND_DISK, DISK_ONLY και OFF_HEAP. Η επιλογή ΜΝΗΜΗ_ΚΑΙ_ΔΙΣΚΟΣ αποθηκεύει RDD στον μη πτητικό δίσκο όταν ο χώρος αποθήκευσης δεν επαρκεί για την αποθήκευση όλων των απαιτούμενων RDD. Οι δίσκοι μπορεί να αποτελούνται από σκληρούς δίσκους ή SSD. Ωστόσο, οι κανονικοί δίσκοι ατράκτου έχουν σχετικά χαμηλή απόδοση ανάγνωσης/εγγραφής, επομένως ο συνολικός χρόνος εκτέλεσης μπορεί να είναι μεγαλύτερος από εκείνον της επιλογής αποθήκευσης MEMORY_ONLY. Για να αντιμετωπίσουμε αυτό το πρόβλημα, μπορούμε να αξιοποιήσουμε αποτελεσματικά τους SSD, οι οποίοι μπορούν ενδεχομένως να μειώσουν τον συνολικό χρόνο ολοκλήρωσης της εργασίας σε σύγκριση με την κανονική προσέγγιση που βασίζεται σε σκληρό δίσκο.

improve cognitive function

Η επιλογή DISK_ONLY αποθηκεύει RDD μόνο σε μη πτητικές συσκευές αποθήκευσης, όπως σκληρούς δίσκους ή SSD, δηλαδή όχι στην κύρια μνήμη. Ένα σύμπλεγμα που δεν έχει επαρκή ποσότητα διαθέσιμης μνήμης μπορεί να επιτύχει καλή απόδοση με αυτήν την επιλογή. Σε αυτήν την περίπτωση, καθώς το RDD αποθηκεύεται μόνο σε μέσα δίσκου, ο χώρος τυχαίας αναπαραγωγής μπορεί να επεκταθεί αντί να χρησιμοποιηθεί ο χώρος αποθήκευσης της μνήμης. Ως αποτέλεσμα, όταν εκτελούμε μια εφαρμογή όπως το PageRank, η οποία δημιουργεί σχετικά μεγάλο όγκο δεδομένων τυχαίας αναπαραγωγής, μπορούμε να παρατηρήσουμε καλύτερη απόδοση από ό,τι στην περίπτωση MEMORY_ΜΟΝΟ.

Η επιλογή OFF_HEAP επιτρέπει στο Spark να χρησιμοποιεί χώρο εκτός σωρού, ο οποίος βρίσκεται εκτός της διαχείρισης του σκουπιδιού Java. Έτσι, εάν χρησιμοποιούμε χώρο εκτός σωρού, πρέπει να αντιμετωπίσουμε πολύπλοκες λειτουργίες μνήμης όπως η εκχώρηση/αποκατάσταση και η σειριοποίηση/αποσειριοποίηση. Επομένως, για πρακτικούς σκοπούς, δεν χρησιμοποιούμε τη διαμόρφωση OFF_HEAP.

3.4. Μεθοδολογία Βελτιστοποίησης

Όπως συζητήσαμε στις Ενότητες 3.2 και 3.3, οι μέθοδοι βελτιστοποίησης μας περιλαμβάνουν (1) τη διαμόρφωση του σωρού Spark JVM και (2) τις πειραματικές επιλογές της πολιτικής προσωρινής αποθήκευσης RDD ως εξής:

1. Διαμόρφωση σωρού Spark JVM: Διερευνήσαμε τα αποτελέσματα της αλλαγής των αναλογιών κλασμάτων χωρητικότητας των χώρων ανακατεύθυνσης και αποθήκευσης. Η αναλογία τυχαίας αναπαραγωγής και χώρου αποθήκευσης είναι 60%:30%, 50%:40% και 20%:60%, αντίστοιχα. Η αναλογία τυχαίας αναπαραγωγής και αποθήκευσης "20%:60%" είναι η προεπιλεγμένη τιμή στη ρύθμιση Spark. Επιλέγουμε "60%:30%" για να αντιπαραβάλουμε το αποτέλεσμα με επαρκή χώρο τυχαίας αναπαραγωγής και διαμορφώνουμε το "50%:40%" για να δείχνει την απόδοση με ισορροπημένο τρόπο.

2. Πολιτική προσωρινής αποθήκευσης RDD: Εξετάσαμε επίσης τα αποτελέσματα διαφορετικών πολιτικών προσωρινής αποθήκευσης RDD. Συγκρίναμε την απόδοση διαφόρων πολιτικών, όπως ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ_HEAP, MEMORY_ONLY, MEMORY_AND_DISK και DISK_ONLY, όπου ΔΙΣΚΟΣ υποδηλώνει τον SSD σε αυτό το πείραμα.

Ο Πίνακας 3 δείχνει συνολικά 12 διαφορετικές πειραματικές διαμορφώσεις με βάση τις πολιτικές προσωρινής αποθήκευσης RDD και τους λόγους κλασμάτων χωρητικότητας Spark JVM. Στις διαμορφώσεις πειράματος με την ετικέτα "_1" (για παράδειγμα, "N_1"), ορίσαμε το 60% του σωρού Spark JVM για ανακάτεμα και το 30% για χώρους αποθήκευσης. Με αυτά που φέρουν την ετικέτα "_2", ορίσαμε το 50% του σωρού Spark JVM για ανακάτεμα και το 40% για αποθήκευση. Τέλος, για όσους φέρουν ετικέτα "_3", ορίσαμε το 20% του σωρού Spark JVM για ανακάτεμα και 60% για αποθήκευση, όπως φαίνεται από τις στήλες "Επιλογή", "Τυχαία αναπαραγωγή" και "Αποθήκευση". στον Πίνακα 3. Σημειώστε ότι το μέγιστο μέγεθος μνήμης του εκτελεστή του συμπλέγματος δοκιμαστικής κλίνης μας είναι 2,7 GB, δηλαδή, κάθε κόμβος εργάτη έχει 2,7 GB ως μέγεθος σωρού Spark JVM.

ways to improve memory

Όσον αφορά την πολιτική προσωρινής αποθήκευσης RDD, η επιλογή "N" είναι η προσωρινή αποθήκευση του RDD, η επιλογή "M" είναι η προσωρινή αποθήκευση του RDD μόνο στη μνήμη, η επιλογή "M&S" είναι η προσωρινή αποθήκευση του RDD στη μνήμη και του SSD μαζί. και τέλος, η επιλογή "S" είναι για αποθήκευση του RDD μόνο στο SSD.

Μέσω των πειραμάτων μας, προτείνουμε στρατηγικές βελτιστοποίησης που μπορούν να επιτύχουν την καλύτερη απόδοση από το σύμπλεγμα που έχει ανεπαρκή ποσότητα μνήμης, προσαρμόζοντας προσεκτικά τη διαμόρφωση σωρού Spark JVM και χρησιμοποιώντας μια αποτελεσματική πολιτική προσωρινής αποθήκευσης RDD, όπως θα δούμε στην Ενότητα 4.

4. Πειραματικά Αποτελέσματα και Ανάλυση

4.1. Πειράματα κατάταξης σελίδας 500 MB

4.1.1. Αποτελέσματα με την αλλαγή των διαμορφώσεων σωρού JVM

Το σχήμα 3 δείχνει τα πειραματικά αποτελέσματα κάθε σταδίου στο φόρτο εργασίας του PageRank αλλάζοντας τα μεγέθη σωρού JVM. Στο στάδιο Distinct, το Spark διαβάζει τα δεδομένα εισόδου και διακρίνει τη διεύθυνση URL και τους συνδέσμους. Όπως μπορούμε να δούμε από τα αποτελέσματα του σταδίου Distinct0, ο συνολικός χρόνος εκτέλεσης μειώνεται αλλάζοντας τα μεγέθη σωρού JVM από _1 και _2 σε _3, κυρίως λόγω στη συλλογή απορριμμάτων (GC). Για παράδειγμα, ο χρόνος GC διαρκεί 25 s, 24 s και 16 s σε M&S_1, M&S_2 και M&S{{10}}, αντίστοιχα. Επομένως, στο στάδιο Distinct0, καθώς αυξάνουμε τον χώρο αποθήκευσης, μπορούμε να βελτιώσουμε τη συνολική απόδοση μειώνοντας τον χρόνο GC. Από την άλλη πλευρά, στο στάδιο Distinct1, ο συνολικός χρόνος εκτέλεσης αυξάνεται καθώς αλλάζουμε τις επιλογές από _1 και _2 σε _3. Αυτό οφείλεται κυρίως στη διαρροή. Όταν ελέγξαμε τη διεπαφή ιστού Spark, τα δεδομένα τυχαίας αναπαραγωγής χύθηκαν στο δίσκο λόγω της έλλειψης χώρου στη μνήμη τυχαίας αναπαραγωγής. Για παράδειγμα, τα μεγέθη τυχαίας διαρροής δεδομένων στο δίσκο σε M&S_1, M&S_2 και M&S_3 είναι 0, 220 MB και 376 MB αντίστοιχα. Όταν συμβαίνει η τυχαία διαρροή, τα γενικά έξοδα της CPU για τη διαρροή των δεδομένων στο δίσκο αυξάνονται επειδή τα δεδομένα πρέπει να σειριοποιηθούν.

memory enhancement

Μετά τα Διακεκριμένα στάδια, υπάρχουν επαναληπτικά στάδια flatMap για την απόκτηση βαθμών. Τα στάδια του FlatMap δημιουργούν πολλά δεδομένα τυχαίας αναπαραγωγής, τα οποία μπορεί να κάνουν το σύμπλεγμα μας να μην έχει τον απαραίτητο χώρο μνήμης τυχαίας αναπαραγωγής. Επομένως, καθώς μειώνεται ο διαθέσιμος χώρος τυχαίας αναπαραγωγής (κατά σειρά από τις επιλογές _1, _2 και _3), τόσο περισσότερο μπορεί να προκύψει τυχαία διαρροή, η οποία μπορεί να επηρεάσει τη συνολική εκτέλεση της εργασίας χρόνος (π.χ., επιλογή M&S flatMap2 στάδιο _1: 37 s, _2: 40 s, _3: 49 s). Ωστόσο, όταν τα δεδομένα αποθηκεύονται προσωρινά μόνο στη μνήμη (δηλαδή, M_1, M_2 και M_3), εμφανίζουν ένα άλλο μοτίβο. Ο κύριος λόγος για αυτήν τη συμπεριφορά είναι ότι ο προγραμματιστής Spark προγραμματίζει τις εργασίες άνισα επειδή υπάρχει έλλειψη χώρου αποθήκευσης μνήμης για την προσωρινή αποθήκευση του RDD στις επιλογές _1 και _2. Εάν ένας εργαζόμενος δεν έχει RDDs, αποκλείεται από την ομάδα προγραμματισμού. Επομένως, οι άλλοι εργαζόμενοι πρέπει να χειριστούν πρόσθετες εργασίες με γενικά έξοδα GC που μπορεί να επηρεάσουν ολόκληρο τον χρόνο εκτέλεσης της εργασίας.

4.1.2. Αποτελέσματα με την αλλαγή των επιλογών προσωρινής αποθήκευσης RDD

Πρώτα απ 'όλα, τα διακριτά στάδια δεν επηρεάζονται από την αλλαγή της πολιτικής προσωρινής αποθήκευσης RDD αλλά μόνο από τη χρήση της μνήμης. Τα στάδια που επηρεάζονται από την επιλογή προσωρινής αποθήκευσης RDD είναι στάδια flatMap αφού κατά τη φάση τυχαίας αναπαραγωγής, χρησιμοποιούνται ξανά προσωρινά αποθηκευμένα RDD.

improve working memory

Στο σχήμα 4, το γράφημα κανονικοποιείται από την επιλογή N_1 που δεν αποθηκεύει προσωρινά τη διαμόρφωση μνήμης RDD και _1 για να ελέγξει τη διαφορά απόδοσης. Όταν συγκρίνετε μόνο τα γραφήματα του _1, με τη σειρά των M_1, M&S_1 και S_1, υπάρχει υποβάθμιση απόδοσης 32% στο M{{8 }} και 30% και 20% βελτιώσεις απόδοσης με M&S_1 και S_1, αντίστοιχα. Με την επιλογή M_1, ο λόγος για τη σχετικά κακή απόδοση είναι ότι τα RDD αποθηκεύονται άνισα στην κρυφή μνήμη λόγω της έλλειψης αποθηκευτικού χώρου, γεγονός που θα έχει ως αποτέλεσμα ανομοιόμορφο προγραμματισμό, όπως αναφέραμε προηγουμένως. Αυτό σημαίνει ότι ο χώρος σωρού JVM είναι ανεπαρκής για την τυχαία αναπαραγωγή των δεδομένων και την αποθήκευση των RDD.

increase brain power

Για να αντιμετωπίσουμε αυτό το πρόβλημα, διανέμουμε τα RDD σε προσωρινή μνήμη τόσο στη μνήμη όσο και στο SSD, κάτι που μπορεί να βελτιώσει την απόδοση όπως φαίνεται στην επιλογή M&S_1. Η προσωρινή αποθήκευση του RDD στη μνήμη βελτιώνει την ταχύτητα πρόσβασης για το RDD και η προσωρινή αποθήκευση του RDD στο SSD μπορεί να αποφύγει τη διαρροή τυχαίας αναπαραγωγής επεκτείνοντας αποτελεσματικά τον διαθέσιμο χώρο τυχαίας αναπαραγωγής στη μνήμη. Με την επιλογή S_1 που έχει βελτιωθεί κατά 20% στην απόδοση, το RDD αποθηκεύεται προσωρινά μόνο στον SSD. Η τυχαία διαρροή μειώνεται με την αποθήκευση του RDD στο SSD. Ωστόσο, έχει επιτύχει χαμηλότερη βελτίωση απόδοσης από το M&S_1, όπου το RDD αποθηκεύεται κυρίως στην κρυφή μνήμη και επαναχρησιμοποιείται από τη μνήμη.

Στην προεπιλεγμένη διαμόρφωση του Spark, που είναι η επιλογή _3, μπορούμε να δούμε ότι με τη σειρά των M_3, M&S_3, S_3 και N{{4 }}, η συνολική απόδοση μειώνεται. Στην προεπιλεγμένη διαμόρφωση, η αποθήκευση του σωρού JVM είναι αρκετή για να αποθηκευτεί το RDD στην κρυφή μνήμη με υπόλοιπο. Επομένως, η συνολική απόδοση εξαρτάται κυρίως από την απόδοση της χρησιμοποιούμενης συσκευής μνήμης. Ωστόσο, εξακολουθούμε να βλέπουμε την καλύτερη απόδοση με την επιλογή M&S_1, καθώς μπορούμε να μειώσουμε αποτελεσματικά τον χρόνο GC και την τυχαία διαρροή αποθηκεύοντας το RDD στην κρυφή μνήμη τόσο στη μνήμη όσο και στο SSD.

4.2. Απόδοση PageRank 1 GB

Πειραματιστήκαμε με το φόρτο εργασίας του PageRank αυξάνοντας το μέγεθος των δεδομένων από 500 MB σε 1 GB. Το Σχήμα 5 δείχνει τις διαφορετικές συμπεριφορές του συστήματος σε σύγκριση με το PageRank για το σύνολο δεδομένων των 500 MB. Μπορούμε να δούμε ορισμένες αποτυχημένες εργασίες που δεν μπόρεσαν να ολοκληρώσουν την εργασία μέχρι το στάδιο take6 (π.χ., N_1, N_2, M_1, M_2, M _3, M&S_3). Μεταξύ αυτών των αποτυχημένων εργασιών, υπάρχουν κάποιες που απέτυχαν στο στάδιο flatMap2, οι οποίες είναι οι N_1, N_2 και M_1. Ο λόγος για την αποτυχία της εργασίας είναι η έλλειψη μνήμης αποθήκευσης. Το GC εμφανίζεται όταν το RDD αποθηκεύεται προσωρινά σε ανεπαρκή μνήμη. Λόγω αυτής της επιβάρυνσης GC, ο εκτελεστής Spark λαμβάνει μια εξαίρεση ExecutorLostFailure.

Οι M_2, M_3 και M&S_3 θα μπορούσαν να συνεχίσουν την επεξεργασία μέχρι το στάδιο flatMap2. Ωστόσο, μετά από αυτό, εμφανίζεται αποτυχία. Το M&S_3 λειτουργεί παρόμοια με το M_3 μέχρι το στάδιο flatMap2, επειδή όταν χρησιμοποιείται η επιλογή M&S_3, υπάρχει επαρκής μνήμη για την προσωρινή αποθήκευση του RDD. Μετά το flatMap2, παρουσιάζεται το σφάλμα OutOfMemory λόγω της έλλειψης χώρου μνήμης τυχαίας αναπαραγωγής στο στάδιο flatMap3.

4.2.1. Αποτελέσματα με την αλλαγή της διαμόρφωσης σωρού JVM

Το στάδιο Distinct0 εμφανίζει πολύ παρόμοια αποτελέσματα με το σύνολο δεδομένων των 500 MB και η συνολική απόδοση βελτιώνεται με τη σειρά των επιλογών _1, _2 και _3. Αυτό συμβαίνει επειδή ο χρόνος GC μειώνεται στα 78 s, 59 s και 28 s, αντίστοιχα

Από την άλλη πλευρά, στο στάδιο Distinct1, έδειξε διαφορετικά αποτελέσματα για το σύνολο δεδομένων των 500 MB. Στο πείραμα δεδομένων των 500 MB, μπορούμε να δούμε το κέρδος απόδοσης αυξάνοντας τον χώρο τυχαίας αναπαραγωγής της μνήμης. Ωστόσο, στο πείραμα δεδομένων 1 GB, η μνήμη εκτελεστή του κόμβου εργαζομένου δεν μπορεί να φιλοξενήσει το μεγάλο μέγεθος δεδομένων. Επομένως, ο χώρος ανακατεύθυνσης της μνήμης καθίσταται σχετικά ανεπαρκής. Για παράδειγμα, οι ποσότητες τυχαίας διαρροής για τις επιλογές _1, _2 και _3 είναι 575,5 MB, 813,8 MB και 843,4 MB, αντίστοιχα, και ο χρόνος GC διαρκεί 33 δευτερόλεπτα, 10 s, και 8 s, αντίστοιχα. Όπως αναφέραμε προηγουμένως, όταν συμβαίνει μια τυχαία διαρροή, το RDD πρέπει να σειριοποιηθεί έτσι ώστε να αυξηθούν οι υπολογισμοί της CPU, γεγονός που μπορεί να οδηγήσει σε υποβάθμιση της συνολικής απόδοσης.

increase memory power

4.2.2. Αποτελέσματα της αλλαγής της πολιτικής προσωρινής αποθήκευσης RDD

Για την ανάλυση του χρόνου εκτέλεσης αλλάζοντας την πολιτική προσωρινής αποθήκευσης RDD, όπως μπορούμε να δούμε από το Σχήμα 6, εξαιρούμε διαφορετικά στάδια από το Σχήμα 5. Αυτό συμβαίνει επειδή δεν χρειάζεται να αναλύσουμε διαφορετικά στάδια, καθώς δεν υπάρχουν αλλαγές που προκαλούνται από την αλλαγή της πολιτικής προσωρινής αποθήκευσης RDD .

Είναι ενδιαφέρον ότι δεν υπάρχουν αλλαγές με διάφορες διαμορφώσεις σωρού JVM σε στάδια flatMap σε αντίθεση με την περίπτωση του συνόλου δεδομένων των 500 MB. Ο λόγος για αυτό είναι ότι η τυχαία διαρροή συμβαίνει σε όλες τις διαμορφώσεις επειδή δεν υπάρχει επαρκής μνήμη. Ο συνολικός χρόνος εκτέλεσης αλλάζοντας την επιλογή προσωρινής αποθήκευσης RDD αυξάνεται με τη σειρά M&S, S, N και M. (Το M&S είναι η ταχύτερη επιλογή.) Στην επιλογή N, παρουσιάζεται το σφάλμα ExecutorLostFailure επειδή δεν υπάρχει επαρκής χώρος στη μνήμη. Στην επιλογή M, όταν το RDD αποθηκευτεί προσωρινά στη μνήμη, εμφανίζεται γενική επιβάρυνση GC επειδή δεν υπάρχει επαρκής χώρος στη μνήμη. Ακόμη και αν το RDD αποθηκευτεί προσωρινά στη μνήμη, η εργασία αποτυγχάνει λόγω του σφάλματος ExecutorLostFailure που παρουσιάζεται όταν ο χώρος της μνήμης τυχαίας αναπαραγωγής είναι ανεπαρκής (OutOfMemory).

Σε τέτοιες περιπτώσεις χαμηλής διαθέσιμης μνήμης, οι επιλογές M&S και S μπορούν να είναι αποτελεσματικές εναλλακτικές. Στην επιλογή M&S{{0}}, αυξάνουμε την προσβασιμότητα του RDD αποθηκεύοντας το RDD στην κρυφή μνήμη χρησιμοποιώντας τη μνήμη και τον SSD. Ως αποτέλεσμα, υπάρχει βελτίωση απόδοσης για τον ίδιο λόγο με το σύνολο δεδομένων των 500 MB. Επιπλέον, υπάρχει επαρκής χώρος μνήμης τυχαίας αναπαραγωγής λόγω της προσωρινής αποθήκευσης του RDD στο SSD. Όπως φαίνεται στο σχήμα 6, η επιλογή M&S_1 γίνεται η πιο γρήγορη επιλογή σε αυτό το πείραμα (M&S_1:0.6, S_1:0.63, T{10}}.64).

improve short term memory

4.3. TC Πειραματική Ανάλυση

Το σχήμα 7 δείχνει τα αποτελέσματα πειραμάτων TC (μεταβατικό κλείσιμο) που χρησιμοποιούν τα δεδομένα εισόδου που περιλαμβάνουν 50,000 άκρες και 25,000 κορυφές που δημιουργούνται τυχαία. Ο αριθμός επανάληψης είναι 10. Μέσω των επαναλήψεων, ο αριθμός των εργασιών διπλασιάζεται σε κάθε επανάληψη, και ως εκ τούτου, το μέγεθος του RDD αυξάνεται και οι ποσότητες τυχαίας ανάγνωσης και εγγραφής αυξάνονται επίσης. Στην τελευταία επανάληψη, ο αριθμός των εργασιών γίνεται 4096. Καθώς υπάρχουν περισσότερα στάδια επανάληψης, υπάρχει μεγαλύτερη επίδραση στον συνολικό χρόνο εκτέλεσης της εργασίας και το τελευταίο στάδιο επανάληψης είναι το μεγαλύτερο, που αποτελείται από πολλές εργασίες που μπορούν να μειώσουν τη συνολική απόδοση .

increase memory

Όπως μπορούμε να δούμε από το Σχήμα 7, η απόδοση βελτιώνεται με τη σειρά των _3, _2 και _1 στις επιλογές M, M&S και S, πράγμα που σημαίνει ότι επιτυγχάνεται επαρκής ανακάτεμα Η μνήμη του σωρού JVM είναι χρήσιμη. Με την επιλογή M, η απόδοση της επιλογής _1 είναι 18% ταχύτερη από την επιλογή _3, ενώ στην επιλογή M&S, η απόδοση της επιλογής _1 είναι 3% ταχύτερη από την επιλογή {{9 }}. Στην επιλογή S, η απόδοση του _1 είναι 2% ταχύτερη από το _3.

Όταν εστιάζουμε στην αλλαγή της επιλογής προσωρινής αποθήκευσης RDD, η απόδοση της επιλογής S_1 είναι 42% ταχύτερη από την N_1 και είναι επίσης 31% ταχύτερη από την M_1. Ο λόγος για το κέρδος απόδοσης του χρόνου εκτέλεσης εργασίας εξαρτάται από το τελευταίο στάδιο επανάληψης. Ο βασικός παράγοντας που επηρεάζει το τελευταίο στάδιο επανάληψης είναι ο αποκλεισμένος χρόνος ανάγνωσης με τυχαία σειρά. Ο αποκλεισμένος χρόνος ανάγνωσης τυχαίας αναπαραγωγής εμφανίζεται όταν το RDD που εκτελέστηκε στο προηγούμενο στάδιο διαβάζεται από έναν άλλο κόμβο εργασίας μέσω του δικτύου λόγω έλλειψης μνήμης εκτελεστή.

Ακόμα κι αν κάθε εργασία έχει κέρδος απόδοσης περίπου 1–2 δευτερόλεπτα μέσω της επίλυσης του αποκλεισμένου χρόνου ανάγνωσης με τυχαία σειρά, μπορούμε να επιτύχουμε σημαντικό κέρδος απόδοσης επειδή, στην τελευταία κατάσταση, ο αριθμός των εργασιών είναι αρκετά μεγάλος (δηλαδή, 4096). Επιπλέον, ένας από τους κύριους παράγοντες που επηρεάζουν τον χρόνο εκτέλεσης της εργασίας είναι το στάδιο μέτρησης, το οποίο μετρά πόσες ακμές έχει ο πίνακας TC στην τελευταία εργασία.

Με την επιλογή N, επειδή δεν υπάρχουν προσωρινά αποθηκευμένα RDD στο στάδιο μέτρησης, το Spark διαβάζει τα δεδομένα τυχαίας αναπαραγωγής που εκτελέστηκαν από το προηγούμενο στάδιο, το οποίο διαρκεί 60 δευτερόλεπτα. Επιπλέον, στην επιλογή M, το RDD δεν αποθηκεύεται προσωρινά στη μνήμη λόγω έλλειψης μνήμης εκτελεστή. Ως αποτέλεσμα, χρειάζονται επίσης 60 δευτερόλεπτα. Ωστόσο, στις επιλογές M&S και S, το RDD μπορεί να αποθηκευτεί προσωρινά στη μνήμη και στο SSD, έτσι ώστε να διαρκεί μόνο 2 δευτερόλεπτα στο στάδιο μέτρησης.

4.4. Ανάλυση πειράματος TeraSort

Το σχήμα 8 δείχνει τα πειραματικά αποτελέσματα του σημείου αναφοράς TeraSort που χρησιμοποιεί ένα σύνολο δεδομένων 10 GB αλλάζοντας τη διαμόρφωση σωρού JVM και την επιλογή προσωρινής αποθήκευσης RDD. Αυτό το γράφημα κανονικοποιείται από την επιλογή N_1. Μπορούμε να δούμε ότι όλοι οι χρόνοι εκτέλεσης εργασιών είναι παρόμοιοι. η διαφορά μεταξύ τους είναι μικρότερη από 5%. Στον φόρτο εργασίας TeraSort, δεν υπήρξαν βελτιώσεις ή υποβαθμίσεις απόδοσης αλλάζοντας τις διαμορφώσεις και τις επιλογές. Στο στάδιο της ταξινόμησης, υπάρχουν μερικές ανακατατάξεις μέσω του δικτύου. Ωστόσο, τα μεγέθη τυχαίας ανάγνωσης και τυχαίας εγγραφής είναι 25 MB το καθένα, που είναι αρκετά μικρό σε σύγκριση με το PageRank και το TC. Επομένως, η διαμόρφωση σωρού JVM και η επιλογή προσωρινής αποθήκευσης RDD δεν επηρεάζουν την απόδοση. Επιπλέον, ο φόρτος εργασίας TeraSort δεν αποτελείται από επαναληπτικές εργασίες όπως στο μεταβατικό κλείσιμο, επομένως δεν υπάρχει όφελος από την προσωρινή αποθήκευση RDD στο προηγούμενο στάδιο.

ways to improve brain function

4.5. K-Means Clustering Experiment Analysis

Ο κανονικοποιημένος χρόνος ολοκλήρωσης εργασίας της ομαδοποίησης k-means για το σύνολο δεδομένων 1,5 GB φαίνεται στο Σχήμα 9. Ο σκοπός της ομαδοποίησης k-means είναι να βρεθούν οι k ομάδες στο σύνολο δεδομένων με βάση τη μέτρηση απόστασης (π.χ. Ευκλείδεια απόσταση). Σε αυτόν τον φόρτο εργασίας, ο αλγόριθμος μειώνει το SSE (άθροισμα τετραγώνου σφάλματος) [24] επαναλαμβάνοντας τον υπολογισμό της απόστασης μεταξύ των k κεντρικών σημείων και κάθε σημείου δεδομένων. Σε αυτό το πείραμα, επαναλαμβάνουμε αυτή τη διαδικασία οκτώ φορές. Ο όγκος των δεδομένων που πρέπει να ανακατευτεί είναι ελάχιστος επειδή τα δεδομένα που απαιτούνται από το προηγούμενο στάδιο είναι οι πληροφορίες για τα κεντρικά σημεία και το SSE σε κάθε στάδιο. Στον φόρτο εργασίας ομαδοποίησης k-means, η μέγιστη ποσότητα δεδομένων ανάγνωσης/εγγραφής με τυχαία σειρά είναι 1.0 MB και η ελάχιστη είναι 0,8 MB. Η τυχαία διαρροή δεν εμφανίζεται εδώ επειδή ο χώρος τυχαίας αναπαραγωγής είναι επαρκής σε όλες τις ρυθμίσεις. Στα πειράματα χωρίς επιλογές προσωρινής αποθήκευσης, δεν υπάρχει διαφορά μεταξύ των επιλογών _1, _2 και _3, επειδή αυτές οι ρυθμίσεις δεν αποθηκεύουν προσωρινά κανένα RDD και στις τρεις ρυθμίσεις, η τυχαία αναπαραγωγή ο χώρος είναι αρκετός.

improve your memory

Κατά την προσωρινή αποθήκευση των RDD στην κύρια μνήμη ή στη μνήμη και στο SSD, όσο περισσότερος είναι ο χώρος αποθήκευσης για το RDD, τόσο περισσότερο βελτιώνεται η απόδοση στον χρόνο εκτέλεσης της εργασίας, επειδή μπορούν να αποθηκευτούν περισσότερα RDD στον αποθηκευτικό χώρο. Κατά τη σύγκριση της επιλογής μνήμης_μόνο και της επιλογής μνήμης_και_SSD, η επιλογή μνήμης_και_SSD παρουσίασε καλύτερη βελτίωση απόδοσης. Αυτό συμβαίνει επειδή, στην επιλογή μνήμης_μόνο, ο χώρος αποθήκευσης είναι ανεπαρκής ακόμη και στην επιλογή M_3. Επιπλέον, η προσωρινή αποθήκευση των RDD στο SSD επιλύει μια τέτοια έλλειψη μνήμης αποθήκευσης. Οι επιλογές μνήμης_και_SSD βελτίωσαν την απόδοση κατά 10% κατά μέσο όρο σε σύγκριση με την επιλογή μόνο για τη μνήμη.

Λάβετε υπόψη ότι ο φόρτος εργασίας ομαδοποίησης k-means δείχνει αντίθετη τάση απόδοσης από τους φόρτους εργασίας κατάταξης σελίδας και μεταβατικού κλεισίματος λόγω της διαφοράς στον όγκο των δεδομένων τυχαίας αναπαραγωγής. Θα το συζητήσουμε λεπτομερέστερα στην επόμενη υποενότητα.

5. Συζήτηση και Περίληψη

5.1. Συζήτηση

Αναλύσαμε τους κύριους παράγοντες πιθανών προβλημάτων υποβάθμισης της απόδοσης με βάση το χαρακτηριστικό του φόρτου εργασίας και τα στάδια επεξεργασίας. Τα εκτεταμένα πειραματικά μας αποτελέσματα συνοψίζονται σχετικά με την εφαρμογή των τεχνικών βελτιστοποίησης απόδοσης της πλατφόρμας Spark για διάφορους φόρτους εργασίας ως εξής:

• Η υποβάθμιση της απόδοσης από τη συλλογή σκουπιδιών Java: Στο φόρτο εργασίας του PageRank με το σύνολο δεδομένων 500 MB και το σύνολο δεδομένων 1 GB, το GC προκύπτει όταν δεν υπάρχει επαρκής χώρος αποθήκευσης του σωρού JVM για την αποθήκευση του RDD. Στο στάδιο Distinct0 που διαβάζει το αρχείο εισόδου από το HDFS και το αποθηκεύει στην κρυφή μνήμη στο RDD, εμφανίζεται το GC. Επεκτείνουμε τον αποθηκευτικό χώρο του σωρού JVM μέσω της διαμόρφωσης για να λύσουμε αυτό το πρόβλημα GC. Μπορούμε να βελτιώσουμε την απόδοση για να μειώσουμε το GC επειδή ο χώρος αποθήκευσης του σωρού JVM μπορεί να επεκταθεί. Στα σχήματα 3 και 5, με την ίδια επιλογή προσωρινής αποθήκευσης RDD, η διαμόρφωση _3 δείχνει την καλύτερη απόδοση στο στάδιο Distinct0. Επιπλέον, στο PageRank με το σύνολο δεδομένων 1 GB, ορισμένες επιλογές αποτυγχάνουν στο στάδιο flatMap λόγω έλλειψης μνήμης. Η γενική επιβάρυνση του GC αυξάνεται τόσο πολύ που το στάδιο αποτυγχάνει ή πηγαίνει σε έναν άπειρο βρόχο. Έτσι, κατασκευάζουμε το σύμπλεγμα με SSD για να λύσουμε αυτό το πρόβλημα. Δείχνει βελτίωση απόδοσης και πετυχαίνει την εργασία που απέτυχε χρησιμοποιώντας μόνο μνήμη, όπως φαίνεται στην Εικόνα 6, M&S_1 και S_1.

• Η υποβάθμιση της απόδοσης από τυχαία διαρροή: Στο φόρτο εργασίας PageRank με το σύνολο δεδομένων των 500 MB και το σύνολο δεδομένων 1 GB, στο στάδιο flatMap, μπορούμε να δούμε ότι η επιλογή M&S_1 εμφανίζει την καλύτερη απόδοση επειδή έχει τη μικρότερη ποσότητα τυχαίας αναπαραγωγής διαρροή (Εικόνα 4: Το M&S_1 είναι 30% ταχύτερο από το N_1; Εικόνα 6: Το M&S_1 είναι 40% ταχύτερο από το N_3). Το PageRank έχει πολλές εργασίες τυχαίας αναπαραγωγής. Έτσι, όταν ο χώρος τυχαίας αναπαραγωγής του σωρού JVM είναι ανεπαρκής για την τυχαία αναπαραγωγή των δεδομένων μέσω του δικτύου, εμφανίζεται η τυχαία διαρροή. Επομένως, για να μειωθεί η τυχαία διαρροή, η επέκταση του χώρου τυχαίας αναπαραγωγής του σωρού JVM γίνεται ο βασικός παράγοντας βελτίωσης της απόδοσης.

Επιπλέον, μπορούμε να βελτιώσουμε την απόδοση αποθηκεύοντας το RDD τόσο στη μνήμη όσο και στο SSD. Αυτό μπορεί να κάνει τον εκτελεστή να επεκτείνει τη μνήμη τυχαίας αναπαραγωγής του σωρού JVM για να μειώσει τη διαρροή τυχαίας αναπαραγωγής. Εάν υπάρχουν περισσότερες επαναλήψεις, η απόδοση από το στάδιο flatMap θα ήταν το βασικό σημείο της βελτίωσης της απόδοσης. Στο πείραμα του συνόλου του 1 GB, ο χρόνος εκτέλεσης εργασίας του S_3 είναι η καλύτερη επιλογή, επειδή τα RDD αποθηκεύονται στην κρυφή μνήμη μόνο στο SSD και υπάρχει επαρκής μνήμη σωρού στους εκτελεστές. Έτσι, στην επιλογή S_3, τα Διακεκριμένα στάδια είναι ταχύτερα από οποιαδήποτε άλλη επιλογή. Ωστόσο, εάν ο αριθμός επανάληψης αυξηθεί, το στάδιο flatMap επηρεάζει τον χρόνο εκτέλεσης της εργασίας. Έτσι, η επιλογή M&S_1 μπορεί να επιτύχει εξαιρετική απόδοση σε αυτήν την περίπτωση. Μέσα από αυτές τις αναλύσεις, μπορούμε να προσδιορίσουμε ότι η ανακατεία έχει καθοριστική επίδραση στον χρόνο ολοκλήρωσης της εργασίας. Επομένως, πρέπει να επεκτείνουμε τη μνήμη τυχαίας αναπαραγωγής του σωρού JVM και να αποθηκεύσουμε προσωρινά το RDD τόσο στη μνήμη όσο και στο SSD για να αποκτήσουμε αρκετό χώρο μνήμης τυχαίας αναπαραγωγής για να αποτρέψουμε τη διαρροή τυχαίας αναπαραγωγής.

• Η υποβάθμιση της απόδοσης από τον αποκλεισμένο χρόνο ανάγνωσης τυχαίας αναπαραγωγής: Υπάρχει αποκλεισμένος χρόνος ανάγνωσης τυχαίας αναπαραγωγής στο φόρτο εργασίας TC. Εμφανίζεται όταν υπάρχουν πολλές εργασίες στο στάδιο και κάθε εργασία χρειάζεται να διαβάσει το προηγούμενο RDD μέσω του δικτύου. Ως αποτέλεσμα του πειράματος TC (Εικόνα 7), η επιλογή M&S είναι ταχύτερη από την επιλογή M. Στην ίδια επιλογή προσωρινής αποθήκευσης RDD, η επέκταση του χώρου τυχαίας αναπαραγωγής του σωρού JVM είναι ταχύτερη από την επέκταση του χώρου αποθήκευσης. Ο λόγος για τη βελτιωμένη απόδοση είναι ότι με την επέκταση του χώρου τυχαίας αναπαραγωγής του σωρού JVM, ο αποκλεισμένος χρόνος ανάγνωσης τυχαίας αναπαραγωγής μειώνεται σε κάθε εργασία.

5.2. Περίληψη: Ποιος είναι ο καλύτερος τρόπος;

Στα ολοκληρωμένα πειραματικά αποτελέσματα, δεν υπάρχει ούτε μία καλύτερη ρύθμιση για την ενίσχυση όλων των φόρτων εργασίας, καθώς καθένας από αυτούς τους φόρτους εργασίας έχει διαφορετικά χαρακτηριστικά, ακόμη και στη διάρκεια ζωής του. Ωστόσο, μπορούμε ακόμα να προτείνουμε τον τρόπο βελτιστοποίησης των διαμορφώσεων μιας κατανεμημένης πλατφόρμας υπολογιστών στη μνήμη, λαμβάνοντας υπόψη την ποικιλία των στόχων φόρτου εργασίας ως εξής:

• Διαμόρφωση σωρού Spark JVM—ανακάτεμα περιοχή έναντι περιοχής αποθήκευσης: Σύμφωνα με τα πειραματικά αποτελέσματα τεσσάρων διαφορετικών φόρτων εργασίας, μπορούμε να παρατηρήσουμε τις διαφορές απόδοσης ανάλογα με τα χαρακτηριστικά του φόρτου εργασίας. Για παράδειγμα, το PageRank είναι ένα τυπικό παράδειγμα ύπαρξης μεγάλου όγκου δεδομένων τυχαίας αναπαραγωγής, επομένως η κατανομή περισσότερης μνήμης στο τμήμα τυχαίας αναπαραγωγής βελτιώνει τη συνολική απόδοση. Ωστόσο, στην περίπτωση της ομαδοποίησης k-means, όσο περισσότερο διαθέτουμε στη μνήμη αποθήκευσης, σε αντίθεση με τη μνήμη τυχαίας αναπαραγωγής, τόσο λιγότερος χρόνος εκτέλεσης απαιτείται. Επομένως, εάν μπορούμε να προσαρμόσουμε δυναμικά το ποσοστό εκχώρησης μνήμης JVM σύμφωνα με τα χαρακτηριστικά του φόρτου εργασίας, μπορούμε να βελτιστοποιήσουμε τον συνολικό χρόνο εκτέλεσης. Το Hadoop YARN [25] μας δίνει τη δυνατότητα να αντιστοιχίσουμε εργασίες σε διαφορετικούς τύπους συμπλεγμάτων (διαμορφώσεις) έτσι ώστε να μπορούμε να εφαρμόσουμε αυτήν την ιδέα σε ένα σύμπλεγμα Hadoop μεγάλου μεγέθους για να ικανοποιήσουμε τα χαρακτηριστικά μνήμης για διάφορους τύπους εργασιών.

• Πολιτική προσωρινής αποθήκευσης RDD—μνήμη έναντι SSD: Στις περισσότερες περιπτώσεις, η αποθήκευση στην κρυφή μνήμη με υποστήριξη SSD δείχνει την καλύτερη απόδοση, εκτός εάν όλα τα RDD μπορούν να χωρέσουν στην πραγματική κύρια μνήμη. Επομένως, η πολιτική προσωρινής αποθήκευσης μνήμης υποβοηθούμενη από SSD μπορεί να είναι μια βιώσιμη επιλογή για απαιτητικούς φόρτους εργασίας που απαιτούν σημαντικές ποσότητες κύριας μνήμης που δεν μπορούν να καλυφθούν από κανέναν μεμονωμένο κόμβο σε ένα σύμπλεγμα.

6. Συμπεράσματα

Σε αυτό το άρθρο, διερευνήσαμε τους κύριους παράγοντες για την υποβάθμιση της απόδοσης του συστήματος Spark που τρέχει πάνω από ένα υπολογιστικό σύμπλεγμα βασισμένο σε διακομιστή εμπορευμάτων με ανεπαρκείς διαθέσιμες κύριες μνήμες. Μετά από πειραματισμό και ανάλυση, παρουσιάσαμε εναλλακτικές λύσεις που μπορούν να βελτιώσουν τη συνολική απόδοση.

Η συλλογή σκουπιδιών Java πραγματοποιείται όταν ο χώρος αποθήκευσης του σωρού JVM είναι ανεπαρκής λόγω έλλειψης φυσικής μνήμης. Το Java GC κάνει τις εργασίες να περιμένουν για τη συλλογή σκουπιδιών, έτσι ώστε να αυξάνεται ο συνολικός χρόνος ολοκλήρωσης της εργασίας. Η τυχαία διαρροή συμβαίνει όταν ο χώρος ανακατεύθυνσης του σωρού JVM είναι ανεπαρκής κατά τη φάση της τυχαίας αναπαραγωγής. Η τυχαία διαρροή αυξάνει την επιβάρυνση της CPU για την εκτέλεση σειριοποίησης για τη διαρροή ενδιάμεσων δεδομένων τυχαίας αναπαραγωγής στο δίσκο λόγω της έλλειψης χώρου τυχαίας αναπαραγωγής. Στο πείραμα φόρτου εργασίας TC, ο αποκλεισμένος χρόνος ανάγνωσης τυχαίας αναπαραγωγής κάνει την εργασία να περιμένει για την ανάγνωση δεδομένων τυχαίας αναπαραγωγής μέσω του δικτύου λόγω της έλλειψης χώρου τυχαίας αναπαραγωγής. Όλοι αυτοί οι παράγοντες μπορούν δυνητικά να αυξήσουν τον συνολικό χρόνο ολοκλήρωσης της εργασίας που μπορεί να επηρεάσει σοβαρά την απόδοση του συστήματος Spark.

Για να αντιμετωπίσουμε αυτά τα προβλήματα, κατασκευάζουμε ένα σύμπλεγμα με έναν SSD και αποθηκεύουμε προσωρινά το RDD τόσο στη μνήμη όσο και στο SSD ξεχωριστά, χρησιμοποιώντας το SSD για να συμπληρώσει τον αποθηκευτικό χώρο της μνήμης. Επιπλέον, προσαρμόζουμε τη διαμόρφωση σωρού JVM για την επέκταση του χώρου τυχαίας αναπαραγωγής. Ως αποτέλεσμα, θα μπορούσαμε να επιτύχουμε 30% βελτίωση της απόδοσης για το φόρτο εργασίας του PageRank και 42% βελτίωση απόδοσης για το φόρτο εργασίας TC. Εντοπίσαμε ότι η τυχαία διαρροή μπορεί να είναι ένας βασικός παράγοντας υποβάθμισης της απόδοσης και δείξαμε μέσω πειραματισμού ότι σε φόρτους εργασίας που αποτελούνται από πολλές επαναλήψεις και ανακάτεμα, η επέκταση του χώρου τυχαίας αναπαραγωγής μπορεί να προσφέρει σημαντικά κέρδη απόδοσης. Επιπλέον, διαπιστώσαμε ότι διαφορετικά μοτίβα χρήσης μνήμης των εργασιών μπορούν να επηρεάσουν τον συνολικό χρόνο εκτέλεσης ανάλογα με την ποσοστιαία κατανομή μνήμης αποθήκευσης/τυχαίας αναπαραγωγής στο JVM. Σύμφωνα με την ανάλυση απόδοσης του PageRank και της ομαδοποίησης k-means, η κατανομή μνήμης στο JVM που είναι καλά συντονισμένη στα χαρακτηριστικά του φόρτου εργασίας μπορεί να βελτιώσει σημαντικά τον χρόνο ολοκλήρωσης της εργασίας.

Η ενσωμάτωση αυτών των ευρημάτων στην πλατφόρμα Spark θα ήταν ένα από τα μελλοντικά μας έργα. Για παράδειγμα, εάν οι φόρτοι εργασίας μπορούν να χαρακτηριστούν ως προς τις ποσότητες δεδομένων τυχαίας αναπαραγωγής, μπορεί να εφαρμοστεί αυτόματα μια βελτιστοποιημένη διαμόρφωση για να επιταχυνθεί η επεξεργασία των στόχων φόρτων εργασίας. Επομένως, σε ετερογενείς διαμορφώσεις διακομιστή, η ανάπτυξη ενός συστήματος προγραμματισμού με επίγνωση της χρήσης μνήμης φόρτου εργασίας μπορεί να βελτιώσει τη συνολική απόδοση ενός συμπλέγματος που βασίζεται σε Spark.

Συνεισφορές συγγραφέα:

Conceptualization, JL (Jaehwan Lee); μεθοδολογία, JL (Jaehwan Lee) και JC; λογισμικό, JC και JL (Jaehyun Lee); επικύρωση, JC, JL (Jaehyun Lee) και JL (Jaehwan Lee)· έρευνα, JL (Jaehwan Lee) και J.-SK; πηγές, JL (Jaehwan Lee) και J.-SK; επιμέλεια δεδομένων, JC και JL (Jaehyun Lee); συγγραφή—προετοιμασία πρωτότυπου σχεδίου, JC και JL (Jaehyun Lee). συγγραφή— κριτική και επιμέλεια, JL (Jaehwan Lee) και J.-SK; οπτικοποίηση, JL (Jaehyun Lee); εποπτεία, JL (Jaehwan Lee) και J.-SK; διαχείριση έργου, JL (Jaehwan Lee) και J.-SK; εξαγορά χρηματοδότησης, JL (Jaehwan Lee). Όλοι οι συγγραφείς έχουν διαβάσει και έχουν συμφωνήσει με τη δημοσιευμένη έκδοση του χειρογράφου.

help with memory

Χρηματοδότηση:

Αυτή η έρευνα υποστηρίχθηκε από το Πρόγραμμα Βασικής Έρευνας Επιστημών (NRF-2020R1F1A1072696) μέσω του Εθνικού Ιδρύματος Ερευνών της Κορέας (NRF) που χρηματοδοτείται από το Υπουργείο Επιστημών και ΤΠΕ, πρόγραμμα GRRC της επαρχίας Gyeonggi (Αρ. GRRC-KAU{ {5}}B01, "Μελέτη για την πλατφόρμα σύγκλισης βίντεο και διαστήματος για υπηρεσίες 360VR") και πρόγραμμα υποστήριξης ITRC (Information Technology Research Center) (IITP-2021-2018-0-01423).

Δήλωση του Συμβουλίου Θεσμικής Αναθεώρησης:

Δεν εφαρμόζεται.

Δήλωση ενημερωμένης συναίνεσης:

Δεν εφαρμόζεται.

Δήλωση διαθεσιμότητας δεδομένων:

Διαθέσιμο έπειτα από ζήτηση.

Σύγκρουση συμφερόντων:

Οι συγγραφείς δηλώνουν ότι δεν υπάρχει σύγκρουση συμφερόντων.


βιβλιογραφικές αναφορές

1. Dean, J.; Ghemawat, S. MapReduce: Απλοποιημένη επεξεργασία δεδομένων σε μεγάλα συμπλέγματα. Commun. ACM 2008, 51, 107–113. [CrossRef]

2. The Apache Hadoop Project: Λογισμικό ανοιχτού κώδικα για αξιόπιστους, κλιμακωτούς, κατανεμημένους υπολογιστές. Διαθέσιμο στο διαδίκτυο: https: //hadoop.apache.org/ (πρόσβαση στις 10 Σεπτεμβρίου 2021).

3. Shvachko, Κ.; Kuang, Η.; Radia, S.; Chansler, R. The Hadoop κατανεμημένο σύστημα αρχείων. Στα Πρακτικά του 26ου συμποσίου IEEE 2010 για τα συστήματα και τις τεχνολογίες μαζικής αποθήκευσης (MSST), Incline Village, NV, ΗΠΑ, 3–7 Μαΐου 2010; σελ. 1–10.

4. Ζαχαρία, Μ.; Chowdhury, Μ.; Franklin, MJ; Shenker, S.; Stoica, I. Spark: Cluster computing with work sets. HotCloud 2010, 10, 95.

5. Ousterhout, K.; Rasti, R.; Ratnasamy, S.; Shenker, S.; Chun, BG Κατανοώντας την απόδοση σε πλαίσια ανάλυσης δεδομένων. In Proceedings of the 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI), Oakland, CA, USA, 4–6 Μαΐου 2015; σελ. 293–307.

6. Xing, W.; Ghorbani, A. Weighted PageRank αλγόριθμος. In Proceedings of the IEEE Second Annual Conference on Communication Networks and Services Research, Fredericton, NB, Καναδάς, 21 Μαΐου 2004; σελ. 305–314.

7. Chakradhar, ST; Agrawal, VD; Rothweiler, SG Ένας μεταβατικός αλγόριθμος κλεισίματος για τη δημιουργία δοκιμής. IEEE Trans. Comput.-Aided Des. Ενσωμάτωση. Circuits Syst. 1993, 12, 1015–1028. [CrossRef]

8. O'Malley, O. Terabyte Ταξινόμηση σε Apache Hadoop. Yahoo. Μάιος 2008. σελ. 1–3. Διαθέσιμο στο διαδίκτυο: http://sortbenchmark.org/ YahooHadoop.pdf (πρόσβαση στις 10 Σεπτεμβρίου 2021).

9. K-Means Clustering. Διαθέσιμο στο διαδίκτυο: https://en.wikipedia.org/wiki/K-means_ομαδοποίηση (πρόσβαση στις 10 Σεπτεμβρίου 2021).

10. Ζαχαρία, Μ.; Chowdhury, Μ.; Das, Τ.; Dave, Α.; Ma, J.; McCauly, Μ.; Franklin, MJ; Shenker, S.; Stoica, I. Ανθεκτικά κατανεμημένα σύνολα δεδομένων: Μια αφαίρεση ανεκτική σε σφάλματα για υπολογισμό συμπλέγματος στη μνήμη. In Proceedings of the 9th USENIX Symposium on Networked Systems Design and Implementation (NSDI), San Jose, CA, USA, 25–27 Απριλίου 2012; σελ. 15–28.

11. Davidson, Α.; Ή, Α. Βελτιστοποίηση της απόδοσης τυχαίας αναπαραγωγής στο Spark. Τεχνική αναφορά; Berkeley-Department of Electrical Engineering and Computer Sciences, University of California: Berkeley, CA, USA, 2013.

12. Nicolae, Β.; Costa, CHA; Misale, C.; Κατρίνης, Κ.; Park, Y. Μόχλευση προσαρμοστικής εισόδου/εξόδου για βελτιστοποίηση μοτίβων ανακάτευσης συλλογικών δεδομένων για ανάλυση μεγάλων δεδομένων. IEEE Trans. Παράλληλη Διανομή. Συστ. 2017, 28, 1663–1674. [CrossRef]

13. Zhang, Η.; Cho, Β.; Seyfe, Ε.; Ching, Α.; Freedman, MJ Riffle: Optimized Shuffle Service for Large Scale Data Analytics. Στα Πρακτικά της Δέκατης Τρίτης Διάσκεψης EuroSys. EuroSys '18; Association for Computing Machinery: Νέα Υόρκη, Νέα Υόρκη, ΗΠΑ, 2018. [CrossRef]


For more information:1950477648nn@gmail.com




Μπορεί επίσης να σας αρέσει