Προγραμματισμός

Ενεργοποιήστε τη μεγάλη επεξεργασία δεδομένων με το Apache Ignite

Το Apache Ignite είναι μια πλατφόρμα υπολογιστών στη μνήμη που μπορεί να εισαχθεί απρόσκοπτα μεταξύ του επιπέδου εφαρμογής ενός χρήστη και του επιπέδου δεδομένων. Το Apache Ignite φορτώνει δεδομένα από το υπάρχον στρώμα αποθήκευσης που βασίζεται σε δίσκο σε RAM, βελτιώνοντας την απόδοση έως και έξι παραγγελίες μεγέθους (1 εκατομμύριο φορές).

Η χωρητικότητα δεδομένων στη μνήμη μπορεί εύκολα να κλιμακωθεί για να χειριστεί petabytes δεδομένων απλά προσθέτοντας περισσότερους κόμβους στο σύμπλεγμα. Επιπλέον, υποστηρίζονται τόσο οι συναλλαγές ACID όσο και τα ερωτήματα SQL. Το Ignite παρέχει απόδοση, κλίμακα και ολοκληρωμένες δυνατότητες πολύ πάνω από αυτό που μπορούν να προσφέρουν οι παραδοσιακές βάσεις δεδομένων στη μνήμη, τα πλέγματα δεδομένων στη μνήμη και άλλες βασικές λύσεις σημείων στη μνήμη.

Το Apache Ignite δεν απαιτεί από τους χρήστες να αντιγράψουν και να αντικαταστήσουν τις υπάρχουσες βάσεις δεδομένων τους. Λειτουργεί με καταστήματα δεδομένων RDBMS, NoSQL και Hadoop. Το Apache Ignite επιτρέπει συναλλαγές υψηλής απόδοσης, ροή σε πραγματικό χρόνο και γρήγορη ανάλυση σε ένα ενιαίο, ολοκληρωμένο επίπεδο πρόσβασης και επεξεργασίας δεδομένων. Χρησιμοποιεί μια κατανεμημένη, μαζικά παράλληλη αρχιτεκτονική σε προσιτό, βασικό υλικό για να τροφοδοτεί υπάρχουσες ή νέες εφαρμογές. Το Apache Ignite μπορεί να εκτελεστεί σε εγκαταστάσεις, σε πλατφόρμες cloud όπως AWS και Microsoft Azure ή σε υβριδικό περιβάλλον.

Το ενοποιημένο API Apache Ignite υποστηρίζει SQL, C ++, .Net, Java, Scala, Groovy, PHP και Node.js. Το ενοποιημένο API συνδέει εφαρμογές σε κλίμακα cloud με πολλαπλές αποθήκες δεδομένων που περιέχουν δομημένα, ημιδομημένα και μη δομημένα δεδομένα. Προσφέρει ένα περιβάλλον δεδομένων υψηλής απόδοσης που επιτρέπει στις εταιρείες να επεξεργάζονται πλήρεις συναλλαγές ACID και να παράγουν πολύτιμες πληροφορίες από πραγματικό χρόνο, διαδραστικά και μαζικά ερωτήματα.

Οι χρήστες μπορούν να διατηρήσουν το υπάρχον RDBMS στη θέση τους και να αναπτύξουν το Apache Ignite ως επίπεδο μεταξύ αυτού και του επιπέδου εφαρμογής. Το Apache Ignite ενσωματώνεται αυτόματα με Oracle, MySQL, Postgres, DB2, Microsoft SQL Server και άλλα RDBMSes. Το σύστημα δημιουργεί αυτόματα το μοντέλο τομέα εφαρμογής με βάση τον ορισμό σχήματος της υποκείμενης βάσης δεδομένων και, στη συνέχεια, φορτώνει τα δεδομένα. Οι βάσεις δεδομένων στη μνήμη παρέχουν συνήθως μόνο μια διεπαφή SQL, ενώ το Ignite υποστηρίζει μια ευρύτερη ομάδα παραδειγμάτων πρόσβασης και επεξεργασίας επιπλέον του ANSI SQL. Το Apache Ignite υποστηρίζει καταστήματα κλειδιών / τιμών, πρόσβαση SQL, MapReduce, επεξεργασία HPC / MPP, επεξεργασία ροής / CEP, ομαδοποίηση και επιτάχυνση Hadoop σε μια ενιαία ενσωματωμένη πλατφόρμα υπολογιστών στη μνήμη.

Η GridGain Systems δωρίζει τον αρχικό κωδικό για το Apache Ignite στο Apache Software Foundation το δεύτερο εξάμηνο του 2014. Το Apache Ignite προωθήθηκε γρήγορα από ένα έργο επώασης σε ένα έργο Apache υψηλού επιπέδου το 2015. Το δεύτερο τρίμηνο του 2016, το Apache Ignite ήταν πραγματοποιήθηκε λήψη σχεδόν 200.000 φορές. Χρησιμοποιείται από οργανισμούς σε όλο τον κόσμο.

Αρχιτεκτονική

Το Apache Ignite είναι ένα κατανεμημένο ενδιάμεσο λογισμικό που βασίζεται σε JVM και βασίζεται σε μια ομοιογενή εφαρμογή τοπολογίας συμπλέγματος που δεν απαιτεί ξεχωριστούς κόμβους διακομιστή και πελάτη. Όλοι οι κόμβοι σε ένα σύμπλεγμα Ignite είναι ίσοι και μπορούν να παίξουν οποιοδήποτε λογικό ρόλο ανά απαίτηση εφαρμογής χρόνου εκτέλεσης.

Ένας σχεδιασμός διεπαφής παρόχου υπηρεσιών (SPI) βρίσκεται στον πυρήνα του Apache Ignite. Ο σχεδιασμός που βασίζεται στο SPI καθιστά κάθε εσωτερικό στοιχείο του Ignite πλήρως προσαρμόσιμο και συνδέσιμο. Αυτό επιτρέπει τεράστια διαμόρφωση του συστήματος, με προσαρμοστικότητα σε οποιαδήποτε υπάρχουσα ή μελλοντική υποδομή διακομιστή.

Το Apache Ignite παρέχει επίσης άμεση υποστήριξη για την παράλληλη κατανομή κατανεμημένων υπολογισμών με βάση την επεξεργασία fork-join, MapReduce ή MPP. Το Ignite χρησιμοποιεί εκτεταμένους κατανεμημένους παράλληλους υπολογισμούς και εκτίθενται πλήρως σε επίπεδο API για λειτουργίες που καθορίζονται από το χρήστη.

Βασικά χαρακτηριστικά

Πλέγμα δεδομένων στη μνήμη. Το Apache Ignite περιλαμβάνει ένα πλέγμα δεδομένων στη μνήμη που χειρίζεται τη διανεμημένη διαχείριση δεδομένων στη μνήμη, συμπεριλαμβανομένων των συναλλαγών ACID, failover, προηγμένης εξισορρόπησης φορτίου και εκτεταμένης υποστήριξης SQL. Το πλέγμα δεδομένων Ignite είναι ένα κατανεμημένο, βασισμένο σε αντικείμενα, συναλλαγή ACID, αποθήκευση κλειδιού-τιμής στη μνήμη. Σε αντίθεση με τα παραδοσιακά συστήματα διαχείρισης βάσεων δεδομένων, τα οποία χρησιμοποιούν τον δίσκο ως τον κύριο μηχανισμό αποθήκευσης, το Ignite αποθηκεύει δεδομένα στη μνήμη. Χρησιμοποιώντας μνήμη και όχι δίσκο, το Apache Ignite είναι έως και 1 εκατομμύριο φορές ταχύτερο από τις παραδοσιακές βάσεις δεδομένων.

Υποστήριξη SQL. Το Apache Ignite υποστηρίζει ερωτήματα συμβατές με ANSI SQL-99 ελεύθερης μορφής χωρίς ουσιαστικά περιορισμούς. Το Ignite μπορεί να χρησιμοποιήσει οποιαδήποτε συνάρτηση SQL, συγκέντρωση ή ομαδοποίηση και υποστηρίζει κατανεμημένες, μη χρωματισμένες συνδέσεις SQL και συνδέσεις cross-cache. Το Ignite υποστηρίζει επίσης την έννοια των ερωτημάτων πεδίου για την ελαχιστοποίηση των γενικών δικτύων και σειριοποίησης.

Πλέγμα υπολογισμού στη μνήμη. Το Apache Ignite περιλαμβάνει ένα πλέγμα υπολογιστών που επιτρέπει την παράλληλη, στη μνήμη επεξεργασία εντάσεων CPU ή άλλων εντάσεων πόρων, όπως παραδοσιακή επεξεργασία HPC, MPP, fork-join και MapReduce. Παρέχεται επίσης υποστήριξη για τυπική ασύγχρονη επεξεργασία Java ExecutorService.

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

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

Η υποστήριξη ροής επιτρέπει στους χρήστες να αναζητούν κυλιόμενα παράθυρα εισερχόμενων δεδομένων. Αυτό επιτρέπει στους χρήστες να απαντούν σε ερωτήσεις όπως "Ποια είναι τα 10 πιο δημοφιλή προϊόντα την τελευταία ώρα;" ή "Ποια είναι η μέση τιμή σε μια συγκεκριμένη κατηγορία προϊόντων τις τελευταίες 12 ώρες;"

Μια άλλη κοινή περίπτωση χρήσης επεξεργασίας ροής είναι η διοχέτευση ροής εργασίας κατανεμημένων συμβάντων. Καθώς τα συμβάντα εισέρχονται στο σύστημα με υψηλούς ρυθμούς, η επεξεργασία συμβάντων χωρίζεται σε πολλαπλά στάδια, καθένα από τα οποία πρέπει να δρομολογηθεί σωστά μέσα σε ένα σύμπλεγμα για επεξεργασία. Αυτές οι προσαρμόσιμες ροές εργασιών συμβάντων υποστηρίζουν σύνθετες εφαρμογές επεξεργασίας συμβάντων (CEP).

Επιτάχυνση Hadoop στη μνήμη. Το Apache Ignite Accelerator για Hadoop επιτρέπει γρήγορη επεξεργασία δεδομένων σε υπάρχοντα περιβάλλοντα Hadoop μέσω των εργαλείων και της τεχνολογίας που ήδη χρησιμοποιεί ένας οργανισμός.

Η επιτάχυνση Hadoop στη μνήμη Ignite βασίζεται στο πρώτο σύστημα αρχείων διπλής λειτουργίας, υψηλής απόδοσης στη μνήμη που είναι 100 τοις εκατό συμβατό με το Hadoop HDFS και μια εφαρμογή MapReduce βελτιστοποιημένη στη μνήμη. Παρέχοντας έως και 100 φορές ταχύτερη απόδοση, το HDFS στη μνήμη και το MapReduce στη μνήμη παρέχουν εύχρηστες επεκτάσεις σε HDFS που βασίζονται σε δίσκο και το παραδοσιακό MapReduce. Αυτή η δυνατότητα plug-and-play απαιτεί ελάχιστη έως καθόλου ενσωμάτωση. Λειτουργεί με οποιαδήποτε ανοιχτή πηγή ή εμπορική έκδοση του Hadoop 1.x ή Hadoop 2.x, συμπεριλαμβανομένων των Cloudera, Hortonworks, MapR, Apache, Intel και AWS. Το αποτέλεσμα είναι έως και 100 φορές ταχύτερη απόδοση για εργασίες MapReduce και Hive.

Κατανεμημένο σύστημα αρχείων στη μνήμη. Ένα μοναδικό χαρακτηριστικό του Apache Ignite είναι το Ignite File System (IGFS), το οποίο είναι μια διεπαφή συστήματος αρχείων σε δεδομένα στη μνήμη. Το IGFS παρέχει παρόμοια λειτουργικότητα με το Hadoop HDFS. Περιλαμβάνει τη δυνατότητα δημιουργίας ενός πλήρως λειτουργικού συστήματος αρχείων στη μνήμη. Το IGFS βρίσκεται στον πυρήνα του Apache Ignite In-Memory Accelerator για Hadoop.

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

Ενοποιημένο API. Το ενοποιημένο API Apache Ignite υποστηρίζει μια μεγάλη ποικιλία κοινών πρωτοκόλλων για το επίπεδο εφαρμογής για πρόσβαση στα δεδομένα. Τα υποστηριζόμενα πρωτόκολλα περιλαμβάνουν SQL, Java, C ++, .Net, PHP, MapReduce, Scala, Groovy και Node.js. Το Ignite υποστηρίζει διάφορα πρωτόκολλα για σύνδεση πελάτη σε συμπλέγματα Ignite, συμπεριλαμβανομένων των Ignite Native Clients, REST / HTTP, SSL / TLS και Memcached.SQL.

Προηγμένη ομαδοποίηση. Το Apache Ignite παρέχει μία από τις πιο εξελιγμένες τεχνολογίες συμπλέγματος σε JVMs. Οι κόμβοι Ignite μπορούν να ανακαλύψουν αυτόματα ο ένας τον άλλον, κάτι που βοηθά στην κλιμάκωση του συμπλέγματος όταν χρειάζεται χωρίς να χρειάζεται να επανεκκινήσετε ολόκληρο το σύμπλεγμα. Οι προγραμματιστές μπορούν επίσης να επωφεληθούν από την υβριδική υποστήριξη cloud του Ignite, η οποία επιτρέπει στους χρήστες να δημιουργούν συνδέσεις μεταξύ ιδιωτικών σύννεφων και δημόσιων σύννεφων, όπως AWS ή Microsoft Azure.

Επιπρόσθετα χαρακτηριστικά. Το Apache Ignite παρέχει λειτουργίες ανταλλαγής μηνυμάτων υψηλής απόδοσης, σε όλο το φάσμα. Επιτρέπει στους χρήστες να ανταλλάσσουν δεδομένα μέσω μοντέλων δημοσίευσης-εγγραφής και άμεσης επικοινωνίας από σημείο σε σημείο.

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

Το Ignite επιτρέπει τη χρήση των περισσότερων δομών δεδομένων από το πλαίσιο java.util.concurrent με κατανεμημένο τρόπο. Για παράδειγμα, θα μπορούσατε να προσθέσετε μια ουρά διπλού άκρου (java.util.concurrent.BlockingDeque) σε έναν κόμβο και να την δημοσιεύσετε από έναν άλλο κόμβο. Ή θα μπορούσατε να έχετε μια κατανεμημένη γεννήτρια πρωτεύοντος κλειδιού, η οποία θα εγγυάται τη μοναδικότητα σε όλους τους κόμβους.

Οι δομές κατανεμημένων δεδομένων Ignite περιλαμβάνουν υποστήριξη για αυτά τα τυπικά API Java: Ταυτόχρονος χάρτης, κατανεμημένες ουρές και σύνολα, AtomicLong, AtomicSequence, AtomicReference και CountDownLatch.

Βασικές ενσωματώσεις

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

Το Apache Spark και το Apache Ignite αντιμετωπίζουν κάπως διαφορετικές περιπτώσεις χρήσης και σπάνια ανταγωνίζονται για την ίδια εργασία. Ο παρακάτω πίνακας περιγράφει μερικές από τις βασικές διαφορές.

 
 Apache SparkApache Ignite
Διατήρηση δεδομένωνΦορτώνει δεδομένα για επεξεργασία από εξωτερικό χώρο αποθήκευσης, συνήθως βάσει δίσκου και απορρίπτει τα δεδομένα όταν ολοκληρωθεί η επεξεργασία. Χωρίς αποθήκευση δεδομένων.Παρέχει ένα κατανεμημένο χώρο αποθήκευσης κλειδιών-τιμών στη μνήμη (κατανεμημένο cache ή πλέγμα δεδομένων) με συναλλαγές ACID και δυνατότητες ερωτήματος SQL. Διατηρεί δεδομένα στη μνήμη και μπορεί να γράψει σε μια υποκείμενη βάση δεδομένων.
OLAP / OLTPΓια μη συναλλακτικά δεδομένα μόνο για ανάγνωση, έτσι χρησιμοποιείται για OLAP. Τα ανθεκτικά στο Spark σύνολα δεδομένων (RDD) δεν υποστηρίζουν τη μετάλλαξη.Υποστηρίζει μη συναλλακτικά (OLAP) ωφέλιμα φορτία, καθώς και πλήρως συμβατές με ACID συναλλαγές (OLTP).
Τύποι δεδομένωνΒασίζεται σε RDD. Λειτουργεί μόνο σε ωφέλιμα φορτία βάσει δεδομένων.Υποστηρίζει πλήρως καθαρά υπολογιστικά ωφέλιμα φορτία (HPC / MPP) που μπορεί να είναι «χωρίς δεδομένα».

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

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

Το Spark υποστηρίζει μια αρκετά πλούσια σύνταξη SQL, αλλά δεν υποστηρίζει την ευρετηρίαση δεδομένων, επομένως πρέπει να κάνει πλήρη σάρωση όλη την ώρα. Τα ερωτήματα Spark ενδέχεται να διαρκέσουν λεπτά ακόμη και σε σχετικά μικρά σύνολα δεδομένων. Το Ignite υποστηρίζει ευρετήρια SQL, με αποτέλεσμα πολύ πιο γρήγορα ερωτήματα, οπότε η χρήση του Spark με Ignite μπορεί να επιταχύνει το Spark SQL περισσότερο από 1.000 φορές. Το σύνολο αποτελεσμάτων που επέστρεψε το Ignite Shared RDDs συμμορφώνεται επίσης με το Spark Dataframe API, οπότε μπορεί να αναλυθεί περαιτέρω χρησιμοποιώντας τυπικά πλαίσια δεδομένων Spark. Τόσο το Spark όσο και το Ignite ενσωματώνονται εγγενώς με το Apache YARN και το Apache Mesos, οπότε είναι πιο εύκολο να τα χρησιμοποιήσετε μαζί.

Όταν εργάζεστε με αρχεία αντί για RDD, εξακολουθεί να είναι δυνατή η κοινή χρήση κατάστασης μεταξύ των εργασιών Spark και των εφαρμογών χρησιμοποιώντας το Σύστημα αρχείων Ignite In-Memory (IGFS). Το IGFS εφαρμόζει το Hadoop FileSystem API και μπορεί να αναπτυχθεί ως εγγενές σύστημα αρχείων Hadoop, ακριβώς όπως το HDFS. Αναφλέξτε τις συνδέσεις εγγενώς σε οποιοδήποτε περιβάλλον Hadoop ή Spark. Το IGFS μπορεί να χρησιμοποιηθεί με μηδενικές αλλαγές κώδικα με τρόπο plug-and-play.

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

$config[zx-auto] not found$config[zx-overlay] not found