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

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

Ο Jacques Nadeau είναι ο CTO και συνιδρυτής του Dremio.

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

Κοιτάζοντας συγκεκριμένα το επίπεδο δεδομένων, τα συστήματα NoSQL όπως τα MongoDB, Elasticsearch και Cassandra έχουν ωθήσει το φάκελο όσον αφορά την ευελιξία, την επεκτασιμότητα και την απόδοση για λειτουργικές εφαρμογές, το καθένα με διαφορετικό μοντέλο δεδομένων και προσέγγιση στο σχήμα. Στην πορεία πολλές ομάδες ανάπτυξης μετακόμισαν σε ένα μοντέλο μικροϋπηρεσιών, διαδίδοντας δεδομένα εφαρμογών σε πολλά διαφορετικά υποκείμενα συστήματα.

Όσον αφορά τα αναλυτικά στοιχεία, παλαιές και νέες πηγές δεδομένων έχουν βρει το δρόμο τους σε έναν συνδυασμό παραδοσιακών αποθηκών δεδομένων και λίμνων δεδομένων, μερικές στο Hadoop, άλλες στο Amazon S3. Και η άνοδος της πλατφόρμας ροής δεδομένων Kafka δημιουργεί έναν εντελώς διαφορετικό τρόπο σκέψης σχετικά με την κίνηση δεδομένων και την ανάλυση των δεδομένων σε κίνηση.

Με δεδομένα σε τόσες πολλές διαφορετικές τεχνολογίες και υποκείμενες μορφές, η ανάλυση των σύγχρονων δεδομένων είναι δύσκολη. Τα BI και τα εργαλεία ανάλυσης όπως τα Tableau, Power BI, R, Python και μοντέλα μηχανικής μάθησης σχεδιάστηκαν για έναν κόσμο στον οποίο τα δεδομένα ζουν σε μια μοναδική, σχετική βάση δεδομένων υψηλής απόδοσης. Επιπλέον, οι χρήστες αυτών των εργαλείων - επιχειρηματικοί αναλυτές, επιστήμονες δεδομένων και μοντέλα μηχανικής μάθησης - θέλουν τη δυνατότητα πρόσβασης, εξερεύνησης και ανάλυσης δεδομένων από μόνα τους, χωρίς καμία εξάρτηση από την πληροφορική.

Παρουσιάζοντας τον ιστό δεδομένων του Dremio

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

  • Σταδιοποίηση δεδομένων. Τα δεδομένα μετακινούνται από διάφορες επιχειρησιακές βάσεις δεδομένων σε μια ενιαία περιοχή σταδιοποίησης, όπως ένα σύμπλεγμα Hadoop ή μια υπηρεσία αποθήκευσης cloud (π.χ. Amazon S3).
  • Αποθήκη δεδομένων. Ενώ είναι δυνατή η εκτέλεση ερωτημάτων SQL απευθείας στο Hadoop και στο cloud storage, αυτά τα συστήματα απλά δεν έχουν σχεδιαστεί για να προσφέρουν διαδραστική απόδοση. Επομένως, ένα υποσύνολο των δεδομένων συνήθως φορτώνεται σε σχετική αποθήκη δεδομένων ή βάση δεδομένων MPP.
  • Κύβοι, πίνακες συγκέντρωσης και αποσπάσματα BI. Προκειμένου να παρέχεται διαδραστική απόδοση σε μεγάλα σύνολα δεδομένων, τα δεδομένα πρέπει να προ-συγκεντρωθούν ή / και να ευρετηριαστούν με την κατασκευή κύβων σε ένα σύστημα OLAP ή να υλοποιηθούν πίνακες συγκέντρωσης στην αποθήκη δεδομένων.

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

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

Χτισμένο σε Apache Arrow, Apache Parquet και Apache Calcite

Το Dremio χρησιμοποιεί αποθήκευση και εκτέλεση στήλης υψηλής απόδοσης, που τροφοδοτείται από το Apache Arrow (στήλη στη μνήμη) και το Apache Parquet (στήλη στο δίσκο). Το Dremio χρησιμοποιεί επίσης το Apache Calcite για ανάλυση και βελτιστοποίηση ερωτημάτων SQL, βασισμένος στις ίδιες βιβλιοθήκες με πολλούς άλλους κινητήρες που βασίζονται σε SQL, όπως το Apache Hive.

Το Apache Arrow είναι ένα έργο ανοιχτού κώδικα που επιτρέπει την επεξεργασία και ανταλλαγή δεδομένων στη στήλη στη μνήμη. Το Arrow δημιουργήθηκε από τον Dremio και περιλαμβάνει committers από διάφορες εταιρείες, όπως Cloudera, Databricks, Hortonworks, Intel, MapR και Two Sigma.

Το Dremio είναι η πρώτη μηχανή εκτέλεσης που κατασκευάστηκε από το μηδέν στο Apache Arrow. Εσωτερικά, τα δεδομένα στη μνήμη διατηρούνται εκτός σωρού με τη μορφή Arrow και σύντομα θα υπάρχει ένα API που θα επιστρέφει τα αποτελέσματα ερωτήματος ως buffer μνήμης Arrow.

Μια ποικιλία άλλων έργων έχουν επίσης αγκαλιάσει το Arrow. Τα Python (Pandas) και R είναι μεταξύ αυτών των έργων, επιτρέποντας στους επιστήμονες δεδομένων να εργάζονται πιο αποτελεσματικά με τα δεδομένα. Για παράδειγμα, ο Wes McKinney, δημιουργός της δημοφιλούς βιβλιοθήκης Pandas, έδειξε πρόσφατα πώς το Arrow επιτρέπει στους χρήστες της Python να διαβάζουν δεδομένα σε Pandas με πάνω από 10 GB / s.

Πώς το Dremio επιτρέπει δεδομένα αυτοεξυπηρέτησης

Εκτός από τη δυνατότητα να αλληλεπιδρούν αλληλεπιδραστικά με τα σύνολα δεδομένων τους, οι μηχανικοί δεδομένων, οι επιχειρηματικοί αναλυτές και οι επιστήμονες δεδομένων χρειάζονται επίσης έναν τρόπο για την επιμέλεια των δεδομένων έτσι ώστε να είναι κατάλληλα για τις ανάγκες ενός συγκεκριμένου έργου. Πρόκειται για μια θεμελιώδη αλλαγή από το μοντέλο IT-centric, όπου οι καταναλωτές δεδομένων υποβάλλουν αίτημα για ένα σύνολο δεδομένων και περιμένουν να ικανοποιήσει το αίτημά τους IT εβδομάδες ή μήνες αργότερα. Το Dremio επιτρέπει ένα μοντέλο αυτοεξυπηρέτησης, όπου οι καταναλωτές δεδομένων χρησιμοποιούν τις δυνατότητες επιμέλειας δεδομένων του Dremio για να ανακαλύπτουν, να επιδιορθώνουν, να επιταχύνουν και να μοιράζονται δεδομένα από κοινού χωρίς να βασίζονται σε πληροφορική.

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

  • Ανακαλύπτω. Το Dremio περιλαμβάνει έναν ενοποιημένο κατάλογο δεδομένων όπου οι χρήστες μπορούν να ανακαλύψουν και να εξερευνήσουν φυσικά και εικονικά σύνολα δεδομένων. Ο κατάλογος δεδομένων ενημερώνεται αυτόματα όταν προστίθενται νέες πηγές δεδομένων και καθώς εξελίσσονται πηγές δεδομένων και εικονικά σύνολα δεδομένων. Όλα τα μεταδεδομένα ευρετηριάζονται σε ευρετήριο υψηλής απόδοσης, με δυνατότητα αναζήτησης και εκτίθενται σε χρήστες σε όλη τη διεπαφή του Dremio.
  • Βοηθός ιερέα. Το Dremio επιτρέπει στους χρήστες να επεξεργάζονται δεδομένα δημιουργώντας εικονικά σύνολα δεδομένων. Υποστηρίζεται μια ποικιλία μετασχηματισμών σημείου και κλικ και οι προχωρημένοι χρήστες μπορούν να χρησιμοποιήσουν τη σύνταξη SQL για να καθορίσουν πιο περίπλοκους μετασχηματισμούς. Καθώς τα ερωτήματα εκτελούνται στο σύστημα, το Dremio μαθαίνει για τα δεδομένα, επιτρέποντάς του να προτείνει διάφορους μετασχηματισμούς, όπως συνδέσεις και μετατροπές τύπου δεδομένων.
  • Το Dremio είναι ικανό να επιταχύνει τα σύνολα δεδομένων έως και 1000x σε σχέση με την απόδοση του συστήματος προέλευσης. Οι χρήστες μπορούν να ψηφίσουν για σύνολα δεδομένων που πιστεύουν ότι πρέπει να είναι ταχύτερα και η ευρετική του Dremio θα εξετάσει αυτές τις ψήφους για να καθορίσει ποια σύνολα δεδομένων θα επιταχύνουν. Προαιρετικά, οι διαχειριστές συστήματος μπορούν να καθορίσουν χειροκίνητα ποια σύνολα δεδομένων θα επιταχύνουν.
  • Το Dremio επιτρέπει στους χρήστες να μοιράζονται με ασφάλεια δεδομένα με άλλους χρήστες και ομάδες. Σε αυτό το μοντέλο μια ομάδα χρηστών μπορεί να συνεργαστεί σε ένα εικονικό σύνολο δεδομένων που θα χρησιμοποιηθεί για μια συγκεκριμένη αναλυτική εργασία. Εναλλακτικά, οι χρήστες μπορούν να ανεβάσουν τα δικά τους δεδομένα, όπως υπολογιστικά φύλλα Excel, για να εγγραφούν σε άλλα σύνολα δεδομένων από τον εταιρικό κατάλογο. Οι δημιουργοί εικονικών συνόλων δεδομένων μπορούν να καθορίσουν ποιοι χρήστες μπορούν να υποβάλουν ερώτημα ή να επεξεργαστούν τα εικονικά σύνολα δεδομένων τους. Είναι σαν τα Έγγραφα Google για τα δεδομένα σας.

Πώς λειτουργεί η επιτάχυνση δεδομένων Dremio

Το Dremio χρησιμοποιεί εξαιρετικά βελτιστοποιημένες φυσικές αναπαραστάσεις των δεδομένων πηγής που ονομάζονται Data Reflections. Το Reflection Store μπορεί να ζήσει σε HDFS, MapR-FS, cloud storage όπως S3 ή απευθείας συνδεδεμένη αποθήκευση (DAS). Το μέγεθος του Reflection Store μπορεί να υπερβεί το μέγεθος της φυσικής μνήμης. Αυτή η αρχιτεκτονική επιτρέπει στο Dremio να επιταχύνει περισσότερα δεδομένα με χαμηλότερο κόστος, με αποτέλεσμα πολύ υψηλότερη αναλογία κρυφής μνήμης σε σύγκριση με τις παραδοσιακές αρχιτεκτονικές μόνο για μνήμη. Οι Αντανακλάσεις δεδομένων χρησιμοποιούνται αυτόματα από το εργαλείο βελτιστοποίησης βάσει κόστους στο χρόνο ερωτήματος.

Οι αντανακλάσεις δεδομένων είναι αόρατες για τους τελικούς χρήστες. Σε αντίθεση με τους κύβους OLAP, τους πίνακες συγκέντρωσης και τα αποσπάσματα BI, ο χρήστης δεν συνδέεται ρητά σε μια Αντανάκλαση δεδομένων. Αντ 'αυτού, οι χρήστες εκδίδουν ερωτήματα έναντι του λογικού μοντέλου και το πρόγραμμα βελτιστοποίησης του Dremio επιταχύνει αυτόματα το ερώτημα αξιοποιώντας τις Αντανακλάσεις δεδομένων που είναι κατάλληλες για το ερώτημα με βάση την ανάλυση κόστους του βελτιστοποιητή.

Όταν το εργαλείο βελτιστοποίησης δεν μπορεί να επιταχύνει το ερώτημα, το Dremio χρησιμοποιεί τον κινητήρα υψηλής απόδοσης κατανεμημένης εκτέλεσης, αξιοποιώντας τη στήλη επεξεργασίας στη μνήμη (μέσω του Apache Arrow) και τα προηγμένα push-down στις υποκείμενες πηγές δεδομένων (όταν ασχολείται με πηγές RDBMS ή NoSQL).

Πώς χειρίζεται το Dremio ερωτήματα SQL

Οι εφαρμογές πελατών εκδίδουν ερωτήματα SQL στο Dremio μέσω ODBC, JDBC ή REST. Ένα ερώτημα μπορεί να περιλαμβάνει ένα ή περισσότερα σύνολα δεδομένων, τα οποία ενδεχομένως βρίσκονται σε διαφορετικές πηγές δεδομένων. Για παράδειγμα, ένα ερώτημα μπορεί να είναι μια ένωση μεταξύ ενός πίνακα Hive, του Elasticsearch και πολλών πινάκων της Oracle.

Το Dremio χρησιμοποιεί δύο βασικές τεχνικές για να μειώσει τον απαιτούμενο αριθμό επεξεργασίας για ένα ερώτημα:

  • Μετακίνηση προς τα κάτω στην υποκείμενη πηγή δεδομένων. Ο βελτιστοποιητής θα εξετάσει τις δυνατότητες της υποκείμενης πηγής δεδομένων και το σχετικό κόστος. Στη συνέχεια, θα δημιουργήσει ένα σχέδιο που εκτελεί στάδια του ερωτήματος είτε στην πηγή είτε στο κατανεμημένο περιβάλλον εκτέλεσης του Dremio για την επίτευξη του πιο αποτελεσματικού δυνατού συνολικού σχεδίου.
  • Επιτάχυνση μέσω αντανακλάσεων δεδομένων. Το εργαλείο βελτιστοποίησης θα χρησιμοποιεί Αντανακλάσεις δεδομένων για τμήματα του ερωτήματος όταν αυτό παράγει το πιο αποτελεσματικό συνολικό σχέδιο. Σε πολλές περιπτώσεις, ολόκληρο το ερώτημα μπορεί να εξυπηρετηθεί από το Data Reflections, καθώς μπορεί να είναι παραγγελίες μεγέθους πιο αποτελεσματικές από την επεξεργασία ερωτημάτων στην υποκείμενη πηγή δεδομένων.

Επεξεργασία ερωτημάτων

Το Dremio είναι σε θέση να προωθήσει την επεξεργασία σε σχεσιακές και μη σχετικές πηγές δεδομένων. Οι μη σχετικές πηγές δεδομένων συνήθως δεν υποστηρίζουν SQL και έχουν περιορισμένες δυνατότητες εκτέλεσης. Ένα σύστημα αρχείων, για παράδειγμα, δεν μπορεί να εφαρμόσει κατηγορίες ή συγκεντρώσεις. Το MongoDB, από την άλλη πλευρά, μπορεί να εφαρμόσει κατηγορίες και συγκεντρώσεις, αλλά δεν υποστηρίζει όλες τις συνδέσεις. Το πρόγραμμα βελτιστοποίησης Dremio κατανοεί τις δυνατότητες κάθε πηγής δεδομένων. Όταν είναι πιο αποτελεσματικό, το Dremio θα προωθήσει όσο το δυνατόν περισσότερο ένα ερώτημα στην υποκείμενη πηγή και θα εκτελέσει τα υπόλοιπα στη δική του κατανεμημένη μηχανή εκτέλεσης.

Εκφόρτωση επιχειρησιακών βάσεων δεδομένων

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

Φάσεις εκτέλεσης ερωτήματος

Η ζωή ενός ερωτήματος περιλαμβάνει τις ακόλουθες φάσεις:

  1. Ο πελάτης υποβάλλει ερώτημα στον συντονιστή μέσω ODBC / JDBC / REST
  2. Σχεδίαση
    1. Ο συντονιστής αναλύει το ερώτημα στο καθολικό σχεσιακό μοντέλο του Dremio
    2. Ο συντονιστής εξετάζει τα διαθέσιμα στατιστικά στοιχεία για τις πηγές δεδομένων για την ανάπτυξη σχεδίου ερωτημάτων, καθώς και τις λειτουργικές ικανότητες της πηγής
  3. Ο συντονιστής ξαναγράφει το σχέδιο ερωτήματος για χρήση
    1. τις διαθέσιμες Αντανακλάσεις Δεδομένων, λαμβάνοντας υπόψη την παραγγελία, τον διαχωρισμό και τη διανομή των Αντανακλάσεων Δεδομένων και
    2. τις διαθέσιμες δυνατότητες της πηγής δεδομένων
  4. Εκτέλεση
  1. Οι εκτελεστές διαβάζουν δεδομένα σε buffer Arrow από πηγές παράλληλα
    1. Οι εκτελεστές εκτελούν το πρόγραμμα επανεγγραφής ερωτημάτων.
    2. Ένας εκτελεστής συγχωνεύει τα αποτελέσματα από έναν ή περισσότερους εκτελεστές και μεταδίδει τα τελικά αποτελέσματα στον συντονιστή
  1. Ο πελάτης λαμβάνει τα αποτελέσματα από τον συντονιστή

Λάβετε υπόψη ότι τα δεδομένα ενδέχεται να προέρχονται από Αντανακλάσεις δεδομένων ή από τις υποκείμενες πηγές δεδομένων. Κατά την ανάγνωση από μια πηγή δεδομένων, ο εκτελεστής υποβάλλει τα εγγενή ερωτήματα (π.χ. MongoDB MQL, Elasticsearch Query DSL, Microsoft Transact-SQL), όπως καθορίζεται από το εργαλείο βελτιστοποίησης στη φάση σχεδιασμού.

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

Παράδειγμα push-down ερωτήματος

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

Μία από τις πιο δημοφιλείς σύγχρονες πηγές δεδομένων είναι η Elasticsearch. Υπάρχουν πολλά να σας αρέσει το Elasticsearch, αλλά από την άποψη των αναλυτικών στοιχείων δεν υποστηρίζει SQL (συμπεριλαμβανομένων των συνδέσεων SQL). Αυτό σημαίνει ότι εργαλεία όπως το Tableau και το Excel δεν μπορούν να χρησιμοποιηθούν για την ανάλυση δεδομένων από εφαρμογές που έχουν δημιουργηθεί σε αυτόν τον χώρο αποθήκευσης δεδομένων. Υπάρχει ένα έργο οπτικοποίησης που ονομάζεται Kibana και είναι δημοφιλές για την Elasticsearch, αλλά το Kibana έχει σχεδιαστεί για προγραμματιστές. Δεν είναι πραγματικά για επιχειρηματικούς χρήστες.

Το Dremio διευκολύνει την ανάλυση δεδομένων στο Elasticsearch με οποιοδήποτε εργαλείο βασισμένο σε SQL, συμπεριλαμβανομένου του Tableau. Ας πάρουμε για παράδειγμα το ακόλουθο ερώτημα SQL για επιχειρηματικά δεδομένα Yelp, τα οποία αποθηκεύονται στο JSON:

ΕΠΙΛΕΞΤΕ πολιτεία, πόλη, όνομα, αριθμός_εξέτασης

ΑΠΟ ΕΛΑΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΗ

ΟΠΟΥ

κατάσταση NOT IN ("TX", "UT", "NM", "NJ") ΚΑΙ

αριθμός_επισκόπησης> 100

ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ review_count DESC, πολιτεία, πόλη

ΟΡΙΟ 10

Το Dremio μετατρέπει το ερώτημα σε μια έκφραση που μπορεί να επεξεργαστεί η Elasticsearch: