Spark vs Hadoop: Ποιο είναι το καλύτερο Big Data Framework;

Αυτή η ανάρτηση ιστολογίου μιλάει για apache spark vs hadoop. Θα σας δώσει μια ιδέα για το ποιο είναι το σωστό πλαίσιο Big Data για να επιλέξετε σε διαφορετικά σενάρια.

Θα ξεκινήσω αυτό το blog Apache Spark εναντίον Hadoop εισάγοντας πρώτα τα Hadoop και Spark για να ορίσω το σωστό περιβάλλον και για τα δύο πλαίσια. Στη συνέχεια, προχωρώντας θα συγκρίνουμε και τα δύο πλαίσια Big Data σε διαφορετικές παραμέτρους για να αναλύσουμε τα πλεονεκτήματα και τις αδυναμίες τους.Όμως, ανεξάρτητα από το αποτέλεσμα της σύγκρισής μας, θα πρέπει να γνωρίζετε ότι τόσο το Spark όσο και το Hadoop είναι κρίσιμα συστατικά του .



Apache Spark εναντίον Hadoop: Εισαγωγή στο Hadoop

Το Hadoop είναι ένα πλαίσιο που σας επιτρέπει να αποθηκεύετε πρώτα Big Data σε κατανεμημένο περιβάλλον, ώστε να μπορείτε να το επεξεργαστείτε παράλληλα. Υπάρχουν βασικά δύο συστατικά στο Hadoop:



HDFS

Το HDFS δημιουργεί μια άντληση πόρων, επιτρέψτε μου να το απλοποιήσω για εσάς. Παρόμοια με την εικονικοποίηση, μπορείτε να δείτε το HDFS λογικά ως μία μονάδα για την αποθήκευση Big Data, αλλά στην πραγματικότητα αποθηκεύετε τα δεδομένα σας σε πολλούς κόμβους με κατανεμημένο τρόπο. Εδώ, έχετε αρχιτεκτονική master-slave. Στο HDFS, το Namenode είναι ένας κύριος κόμβος και οι Datanodes είναι σκλάβοι.

ΌνομαΚωδικός

Είναι ο κύριος δαίμονας που διατηρεί και διαχειρίζεται τους DataNodes (slave node). Καταγράφει τα μεταδεδομένα όλων των αρχείων που είναι αποθηκευμένα στο σύμπλεγμα, π.χ. θέση αποθηκευμένων μπλοκ, το μέγεθος των αρχείων, δικαιώματα, ιεραρχία κ.λπ. Καταγράφει κάθε αλλαγή που πραγματοποιείται στα μεταδεδομένα του συστήματος αρχείων.



Για παράδειγμα, εάν ένα αρχείο διαγραφεί σε HDFS, το NameNode θα το καταγράψει αμέσως στο EditLog. Λαμβάνει τακτικά ένα Heartbeat και μια αναφορά μπλοκ από όλους τους DataNodes του συμπλέγματος για να διασφαλίσει ότι τα DataNodes είναι ζωντανά. Διατηρεί αρχείο όλων των μπλοκ σε HDFS και στους κόμβους που αποθηκεύονται αυτά τα μπλοκ.

DataNode

Αυτοί είναι σκλάβοι δαίμονες που λειτουργούν σε κάθε υποτελή μηχανή. Τα πραγματικά δεδομένα αποθηκεύονται σε DataNodes. Είναι υπεύθυνοι για την εξυπηρέτηση αιτημάτων ανάγνωσης και γραφής από τους πελάτες. Είναι επίσης υπεύθυνοι για τη δημιουργία μπλοκ, τη διαγραφή μπλοκ και την αναπαραγωγή του με βάση τις αποφάσεις που λαμβάνονται από το NameNode.

HDFS - Apache Spark εναντίον Hadoop - EdurekaΝΗΜΑ

Το YARN εκτελεί όλες τις δραστηριότητες επεξεργασίας σας εκχωρώντας πόρους και προγραμματίζοντας εργασίες. Έχει δύο μεγάλους δαίμονες, δηλαδή Διαχείριση πόρων και NodeManager .



Διαχείριση πόρων

Είναι ένα στοιχείο επιπέδου συμπλέγματος (ένα για κάθε σύμπλεγμα) και λειτουργεί στο κύριο μηχάνημα. Διαχειρίζεται πόρους και προγραμματίζει εφαρμογές που εκτελούνται πάνω από το YARN.

NodeManager

Είναι ένα συστατικό επίπεδο κόμβου (ένα σε κάθε κόμβο) και εκτελείται σε κάθε υποτελή μηχανή. Είναι υπεύθυνη για τη διαχείριση εμπορευματοκιβωτίων και την παρακολούθηση της χρήσης πόρων σε κάθε κοντέινερ. Παρακολουθεί επίσης την υγεία των κόμβων και τη διαχείριση των αρχείων καταγραφής. Επικοινωνεί συνεχώς με το ResourceManager για να παραμένει ενημερωμένος. Έτσι, μπορείτε να εκτελέσετε παράλληλη επεξεργασία σε HDFS χρησιμοποιώντας το MapReduce.

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

Apache Spark εναντίον Hadoop: Εισαγωγή στο Apache Spark

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

Το Resilient Distributed Dataset (RDD) είναι μια βασική δομή δεδομένων του Spark. Είναι μια αμετάβλητη κατανεμημένη συλλογή αντικειμένων. Κάθε σύνολο δεδομένων στο RDD χωρίζεται σε λογικά διαμερίσματα, τα οποία μπορούν να υπολογιστούν σε διαφορετικούς κόμβους του συμπλέγματος. Τα RDD μπορούν να περιέχουν οποιονδήποτε τύπο αντικειμένων Python, Java ή Scala, συμπεριλαμβανομένων κατηγοριών που καθορίζονται από το χρήστη. Τα εξαρτήματα Spark το καθιστούν γρήγορο και αξιόπιστο. Το Apache Spark έχει τα ακόλουθα στοιχεία:

  1. Spark Core - Το Spark Core είναι ο βασικός κινητήρας για παράλληλη και κατανεμημένη επεξεργασία δεδομένων μεγάλης κλίμακας. Επιπλέον, πρόσθετες βιβλιοθήκες που είναι χτισμένες στον πυρήνα επιτρέπουν διαφορετικούς φόρτους εργασίας για ροή, SQL και μηχανική μάθηση. Είναι υπεύθυνη για τη διαχείριση της μνήμης και την ανάκτηση σφαλμάτων, τον προγραμματισμό, τη διανομή και την παρακολούθηση εργασιών σε ένα σύμπλεγμα και αλληλεπίδραση με συστήματα αποθήκευσης
  2. Ροή σπινθήρων - Το Spark Streaming είναι το συστατικό του Spark που χρησιμοποιείται για την επεξεργασία δεδομένων ροής σε πραγματικό χρόνο. Έτσι, είναι μια χρήσιμη προσθήκη στον πυρήνα του API Spark. Επιτρέπει την επεξεργασία ροής υψηλής απόδοσης και ανεκτικό σε σφάλματα ζωντανών ροών δεδομένων
  3. Spark SQL : Το Spark SQL είναι μια νέα ενότητα στο Spark που ενσωματώνει τη σχεσιακή επεξεργασία με το λειτουργικό API προγραμματισμού του Spark. Υποστηρίζει ερωτήματα δεδομένων είτε μέσω SQL είτε μέσω της γλώσσας ερωτημάτων Hive. Για όσους είστε εξοικειωμένοι με το RDBMS, το Spark SQL θα είναι μια εύκολη μετάβαση από τα προηγούμενα εργαλεία σας, όπου μπορείτε να επεκτείνετε τα όρια της παραδοσιακής σχεσιακής επεξεργασίας δεδομένων.
  4. ΓράφημαX : Το GraphX ​​είναι το API Spark για γραφήματα και παράλληλους υπολογισμούς γραφημάτων. Έτσι, επεκτείνει το Spark RDD με ένα γράφημα ελαστικών κατανεμημένων ιδιοτήτων. Σε υψηλό επίπεδο, το GraphX ​​επεκτείνει την αφαίρεση Spark RDD εισάγοντας το γράφημα ανθεκτικής κατανεμημένης ιδιότητας: ένα κατευθυνόμενο πολύγραμμα με ιδιότητες συνδεδεμένες σε κάθε κορυφή και άκρη.
  5. MLlib (Machine Learning): Το MLlib σημαίνει βιβλιοθήκη μηχανικής εκμάθησης. Το Spark MLlib χρησιμοποιείται για την εκτέλεση μηχανικής μάθησης στο Apache Spark.

Όπως μπορείτε να δείτε, το Spark έρχεται γεμάτο με βιβλιοθήκες υψηλού επιπέδου, συμπεριλαμβανομένης της υποστήριξης για R, SQL, Python, Scala, Java κ.λπ. Αυτές οι τυπικές βιβλιοθήκες αυξάνουν τις απρόσκοπτες ενοποιήσεις σε πολύπλοκες ροές εργασίας. Πέρα από αυτό, επιτρέπει επίσης την ενσωμάτωση διαφόρων συνόλων υπηρεσιών όπως MLlib, GraphX, SQL + Data Frames, Streaming services κ.λπ. για να αυξήσει τις δυνατότητές του.

διαφορά μεταξύ εργαλείων και επεκτείνει java

Για να μάθετε περισσότερα για το Apache Spark, μπορείτε να το διαβάσετε ιστολόγιο. Τώρα το έδαφος είναι έτοιμο για Apache Spark εναντίον Hadoop. Ας προχωρήσουμε μπροστά και συγκρίνουμε το Apache Spark με το Hadoop σε διαφορετικές παραμέτρους για να κατανοήσουμε τα δυνατά τους σημεία.

Apache Spark εναντίον Hadoop: Παράμετροι για σύγκριση

Εκτέλεση

Το Spark είναι γρήγορο επειδή διαθέτει επεξεργασία στη μνήμη. Μπορεί επίσης να χρησιμοποιήσει δίσκο για δεδομένα που δεν χωράνε στη μνήμη. Η επεξεργασία στη μνήμη του Spark παρέχει σχεδόν αναλυτικά δεδομένα σε πραγματικό χρόνο. Αυτό καθιστά το Spark κατάλληλο για σύστημα επεξεργασίας πιστωτικών καρτών, μηχανική εκμάθηση, αναλυτικά στοιχεία ασφαλείας και αισθητήρες Internet of Things.

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

Το πρόβλημα με τη σύγκριση των δύο είναι ότι εκτελούν διαφορετική επεξεργασία.

Ευκολία στη χρήση

Το Spark διαθέτει φιλικά προς το χρήστη API για Scala, Java, Python και Spark SQL. Το Spark SQL μοιάζει πολύ με το SQL, οπότε γίνεται πιο εύκολο για τους προγραμματιστές SQL να το μάθουν. Το Spark παρέχει επίσης ένα διαδραστικό κέλυφος για προγραμματιστές για αναζήτηση και εκτέλεση άλλων ενεργειών και άμεση ανατροφοδότηση.

Μπορείτε να απορροφήσετε δεδομένα στο Hadoop εύκολα είτε χρησιμοποιώντας κέλυφος είτε ενσωματώνοντάς τα σε πολλά εργαλεία όπως το Sqoop, το Flume κ.λπ. Το YARN είναι απλώς ένα πλαίσιο επεξεργασίας και μπορεί να ενσωματωθεί σε πολλά εργαλεία όπως το Hive και το Pig. Το HIVE είναι ένα στοιχείο αποθήκευσης δεδομένων που εκτελεί την ανάγνωση, τη συγγραφή και τη διαχείριση μεγάλων συνόλων δεδομένων σε κατανεμημένο περιβάλλον χρησιμοποιώντας διεπαφή τύπου SQL. Μπορείτε να περάσετε από αυτό Οικοσύστημα Hadoop blog για να μάθετε για τα διάφορα εργαλεία που μπορούν να ενσωματωθούν στο Hadoop.

Δικαστικά έξοδα

Τα Hadoop και Spark είναι και τα δύο έργα ανοιχτού κώδικα Apache, επομένως δεν υπάρχει κόστος για το λογισμικό. Το κόστος σχετίζεται μόνο με την υποδομή. Και τα δύο προϊόντα έχουν σχεδιαστεί με τέτοιο τρόπο ώστε να μπορούν να λειτουργούν σε υλικό εμπορευμάτων με χαμηλό TCO.

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

Λόγω της επεξεργασίας μνήμης του Apache Spark απαιτεί πολλή μνήμη, αλλά μπορεί να αντιμετωπίσει μια τυπική ταχύτητα και ποσότητα δίσκου. Καθώς ο χώρος στο δίσκο είναι ένα σχετικά φθηνό αγαθό και επειδή το Spark δεν χρησιμοποιεί δίσκο I / O για επεξεργασία, αντ 'αυτού απαιτεί μεγάλες ποσότητες μνήμης RAM για την εκτέλεση όλων στη μνήμη. Έτσι, το σύστημα Spark επιβαρύνει περισσότερο κόστος.

Αλλά ναι, ένα σημαντικό πράγμα που πρέπει να θυμάστε είναι ότι η τεχνολογία του Spark μειώνει τον αριθμό των απαιτούμενων συστημάτων. Χρειάζεται πολύ λιγότερα συστήματα που κοστίζουν περισσότερο. Έτσι, θα υπάρξει ένα σημείο στο οποίο το Spark μειώνει το κόστος ανά μονάδα υπολογισμού ακόμη και με την πρόσθετη απαίτηση RAM.

Επεξεργασία δεδομένων

Υπάρχουν δύο τύποι επεξεργασίας δεδομένων: Batch Processing & Stream Processing.

Batch Processing vs Stream Processing

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

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

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

Τώρα επιστρέφοντας στο Apache Spark εναντίον Hadoop, το YARN είναι βασικά ένα πλαίσιο επεξεργασίας παρτίδας. Όταν υποβάλλουμε μια εργασία στο YARN, διαβάζει δεδομένα από το σύμπλεγμα, εκτελεί λειτουργία και γράφει τα αποτελέσματα πίσω στο σύμπλεγμα. Στη συνέχεια διαβάζει ξανά τα ενημερωμένα δεδομένα, εκτελεί την επόμενη λειτουργία και γράφει τα αποτελέσματα πίσω στο σύμπλεγμα και ούτω καθεξής.

Το Spark εκτελεί παρόμοιες λειτουργίες, αλλά χρησιμοποιεί επεξεργασία στη μνήμη και βελτιστοποιεί τα βήματα. Το GraphX ​​επιτρέπει στους χρήστες να βλέπουν τα ίδια δεδομένα με γραφήματα και συλλογές. Οι χρήστες μπορούν επίσης να μετασχηματίσουν και να ενώσουν γραφήματα με ανθεκτικά κατανεμημένα σύνολα δεδομένων (RDD).

Ανοχή σε σφάλματα

Τα Hadoop και Spark παρέχουν και τα δύο ανοχή σφαλμάτων, αλλά και οι δύο έχουν διαφορετική προσέγγιση. Για HDFS και YARN και τα δύο, οι κύριοι δαίμονες (δηλ. NameNode & ResourceManager αντίστοιχα) ελέγχουν τον καρδιακό παλμό των σκλάβων δαιμόνων (δηλαδή DataNode & NodeManager αντίστοιχα). Εάν αποτύχει κάποιος δαίμονας σκλάβων, οι κύριοι δαίμονες επαναπρογραμματίζουν όλες τις εκκρεμείς και εν εξελίξει λειτουργίες σε έναν άλλο. Αυτή η μέθοδος είναι αποτελεσματική, αλλά μπορεί να αυξήσει σημαντικά τους χρόνους ολοκλήρωσης για λειτουργίες με μία μόνο αποτυχία. Καθώς το Hadoop χρησιμοποιεί βασικό υλικό, ένας άλλος τρόπος με τον οποίο το HDFS διασφαλίζει την ανοχή σφαλμάτων είναι η αναπαραγωγή δεδομένων.

Όπως συζητήσαμε παραπάνω, τα RDDs αποτελούν δομικά στοιχεία του Apache Spark. Τα RDD παρέχουν ανοχή σφαλμάτων στο Spark. Μπορούν να αναφέρονται σε οποιοδήποτε σύνολο δεδομένων που υπάρχει σε εξωτερικό σύστημα αποθήκευσης, όπως HDFS, HBase, κοινόχρηστο σύστημα αρχείων. Μπορούν να λειτουργούν παράλληλα.

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

μάθημα προγραμματισμού sas για αρχάριους

Ασφάλεια

Το Hadoop υποστηρίζει το Kerberos για έλεγχο ταυτότητας, αλλά είναι δύσκολο να το χειριστείτε. Ωστόσο, υποστηρίζει επίσης τρίτους προμηθευτές όπως το LDAP (Lightweight Directory Access Protocol) για έλεγχο ταυτότητας. Προσφέρουν επίσης κρυπτογράφηση. Το HDFS υποστηρίζει παραδοσιακά δικαιώματα αρχείων, καθώς και λίστες ελέγχου πρόσβασης (ACL). Η Hadoop παρέχει Εξουσιοδότηση επιπέδου υπηρεσίας, η οποία εγγυάται ότι οι πελάτες έχουν τα σωστά δικαιώματα για υποβολή εργασίας.

Το Spark υποστηρίζει προς το παρόν τον έλεγχο ταυτότητας μέσω ενός κοινόχρηστου μυστικού. Το Spark μπορεί να ενσωματωθεί με HDFS και μπορεί να χρησιμοποιήσει HDFS ACL και δικαιώματα σε επίπεδο αρχείου. Το Spark μπορεί επίσης να τρέξει στο YARN, αξιοποιώντας την ικανότητα του Kerberos.

Θήκες χρήσης όπου το Hadoop ταιριάζει καλύτερα:

  • Ανάλυση δεδομένων αρχείων. Το YARN επιτρέπει την παράλληλη επεξεργασία τεράστιων ποσοτήτων δεδομένων. Τα μέρη των δεδομένων υποβάλλονται σε επεξεργασία παράλληλα και χωριστά σε διαφορετικά DataNodes & συγκεντρώνουν αποτέλεσμα από κάθε NodeManager.
  • Εάν δεν απαιτούνται άμεσα αποτελέσματα. Το Hadoop MapReduce είναι μια καλή και οικονομική λύση για επεξεργασία παρτίδας.

Θήκες χρήσης όπου το Spark ταιριάζει καλύτερα:

Ανάλυση μεγάλων δεδομένων σε πραγματικό χρόνο:

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

Ο Spark ισχυρίζεται ότι επεξεργάζεται δεδομένα 100 φορές πιο γρήγορα από το MapReduce, ενώ 10 φορές πιο γρήγορα με τους δίσκους.

Επεξεργασία γραφήματος:

Οι περισσότεροι αλγόριθμοι επεξεργασίας γραφημάτων όπως η κατάταξη σελίδας εκτελούν πολλαπλές επαναλήψεις στα ίδια δεδομένα και αυτό απαιτεί έναν μηχανισμό μετάδοσης μηνυμάτων. Πρέπει να προγραμματίσουμε το MapReduce ρητά για να χειριστούμε τόσο πολλές επαναλήψεις στα ίδια δεδομένα. Κατά προσέγγιση, λειτουργεί ως εξής: Διαβάστε δεδομένα από το δίσκο και μετά από μια συγκεκριμένη επανάληψη, γράψτε αποτελέσματα στο HDFS και μετά διαβάστε δεδομένα από το HDFS για την επόμενη επανάληψη. Αυτό είναι πολύ αναποτελεσματικό, δεδομένου ότι περιλαμβάνει ανάγνωση και εγγραφή δεδομένων στο δίσκο που περιλαμβάνει βαριές λειτουργίες εισόδου / εξόδου και αναπαραγωγή δεδομένων σε όλο το σύμπλεγμα για ανοχή σφαλμάτων. Επίσης, κάθε επανάληψη του MapReduce έχει πολύ υψηλό λανθάνοντα χρόνο και η επόμενη επανάληψη μπορεί να ξεκινήσει μόνο μετά την ολοκλήρωση της προηγούμενης εργασίας.

Επίσης, η μετάδοση μηνυμάτων απαιτεί βαθμολογίες γειτονικών κόμβων για την αξιολόγηση της βαθμολογίας ενός συγκεκριμένου κόμβου. Αυτοί οι υπολογισμοί χρειάζονται μηνύματα από τους γείτονές του (ή δεδομένα σε πολλά στάδια της εργασίας), έναν μηχανισμό που δεν διαθέτει το MapReduce. Διαφορετικά εργαλεία επεξεργασίας γραφημάτων όπως το Pregel και το GraphLab σχεδιάστηκαν για να αντιμετωπίσουν την ανάγκη για μια αποτελεσματική πλατφόρμα για αλγόριθμους επεξεργασίας γραφημάτων. Αυτά τα εργαλεία είναι γρήγορα και επεκτάσιμα, αλλά δεν είναι αποτελεσματικά για τη δημιουργία και την μετα-επεξεργασία αυτών των πολύπλοκων αλγορίθμων πολλαπλών σταδίων.

Η εισαγωγή του Apache Spark έλυσε αυτά τα προβλήματα σε μεγάλο βαθμό. Το Spark περιέχει μια βιβλιοθήκη υπολογισμού γραφημάτων που ονομάζεται GraphX ​​η οποία απλοποιεί τη ζωή μας. Ο υπολογισμός στη μνήμη μαζί με την ενσωματωμένη υποστήριξη γραφημάτων βελτιώνει την απόδοση του αλγορίθμου κατά ένα ή δύο βαθμούς σε σχέση με τα παραδοσιακά προγράμματα MapReduce. Ο Spark χρησιμοποιεί έναν συνδυασμό Netty και Akka για τη διανομή μηνυμάτων σε όλους τους εκτελεστές. Ας δούμε μερικά στατιστικά στοιχεία που απεικονίζουν την απόδοση του αλγορίθμου PageRank χρησιμοποιώντας Hadoop και Spark.

Επαναληπτικοί αλγόριθμοι μηχανικής εκμάθησης:

Σχεδόν όλοι οι αλγόριθμοι μηχανικής μάθησης λειτουργούν επαναληπτικά. Όπως έχουμε δει νωρίτερα, οι επαναληπτικοί αλγόριθμοι περιλαμβάνουν σημεία συμφόρησης εισόδου / εξόδου στις εφαρμογές του MapReduce. Το MapReduce χρησιμοποιεί χονδροειδείς εργασίες (παραλληλισμός σε επίπεδο εργασιών) που είναι πολύ βαρύ για επαναληπτικούς αλγόριθμους. Spark με τη βοήθεια του Mesos - έναν πυρήνα κατανεμημένου συστήματος, αποθηκεύει προσωρινά το ενδιάμεσο σύνολο δεδομένων μετά από κάθε επανάληψη και εκτελεί πολλαπλές επαναλήψεις σε αυτό το σετ δεδομένων που αποθηκεύεται στην προσωρινή μνήμη που μειώνει το I / O και βοηθά στην ταχύτερη εκτέλεση του αλγόριθμου με τρόπο ανεκτικό σε σφάλματα.

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

  • Γρήγορη επεξεργασία δεδομένων. Όπως γνωρίζουμε, το Spark επιτρέπει την επεξεργασία στη μνήμη. Ως αποτέλεσμα, το Spark είναι έως και 100 φορές ταχύτερο για δεδομένα στη μνήμη RAM και έως και 10 φορές για δεδομένα στο χώρο αποθήκευσης.
  • Επαναληπτική επεξεργασία. Τα RDD του Spark επιτρέπουν την εκτέλεση πολλών λειτουργιών χαρτών στη μνήμη, χωρίς να απαιτείται εγγραφή προσωρινών συνόλων δεδομένων σε δίσκο.
  • Σχεδόν επεξεργασία σε πραγματικό χρόνο. Το Spark είναι ένα εξαιρετικό εργαλείο για την παροχή άμεσων επιχειρηματικών πληροφοριών. Αυτός είναι ο λόγος για τον οποίο το Spark χρησιμοποιείται στο σύστημα ροής πιστωτικών καρτών.

'Apache Spark: Ένας δολοφόνος ή Σωτήρας του Apache Hadoop;'

Η απάντηση σε αυτό - το Hadoop MapReduce και το Apache Spark δεν ανταγωνίζονται μεταξύ τους. Στην πραγματικότητα, αλληλοσυμπληρώνονται αρκετά καλά. Το Hadoop φέρνει τεράστια σύνολα δεδομένων υπό έλεγχο από συστήματα εμπορευμάτων. Το Spark παρέχει επεξεργασία σε μνήμη σε πραγματικό χρόνο για εκείνα τα σύνολα δεδομένων που το απαιτούν. Όταν συνδυάζουμε, την ικανότητα του Apache Spark, δηλαδή την υψηλή ταχύτητα επεξεργασίας, τα προηγμένα αναλυτικά στοιχεία και την υποστήριξη πολλαπλών ενοποιήσεων με τη λειτουργία χαμηλού κόστους του Hadoop σε υλικό εμπορευμάτων, δίνει τα καλύτερα αποτελέσματα. Το Hadoop συγχαίρει τις δυνατότητες του Apache Spark. Το Spark δεν μπορεί να αντικαταστήσει εντελώς το Hadoop, αλλά τα καλά νέα είναι ότι η ζήτηση για Spark είναι αυτή τη στιγμή σε υψηλό επίπεδο! Αυτή είναι η κατάλληλη στιγμή για να μάθετε τον Spark και να αξιοποιήσετε στο έπακρο τις ευκαιρίες καριέρας που έρχονται στο δρόμο σας. Ξεκινήστε τώρα!

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας το νωρίτερο.

Εάν επιθυμείτε να μάθετε το Spark και να δημιουργήσετε μια καριέρα στον τομέα του Spark για να εκτελέσετε επεξεργασία δεδομένων μεγάλης κλίμακας χρησιμοποιώντας RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​και Scala με περιπτώσεις χρήσης της πραγματικής ζωής, ρίξτε μια ματιά στο διαδραστικό μας, live-online εδώ, που έρχεται με υποστήριξη 24 * 7 για να σας καθοδηγήσει καθ 'όλη τη διάρκεια της μαθησιακής σας περιόδου.