Λογότυπο Zephyrnet

Εκτελέστε ερωτήματα Trino 2.7 φορές πιο γρήγορα με το Amazon EMR 6.15.0 | Υπηρεσίες Ιστού της Amazon

Ημερομηνία:

Τερετίζω είναι μια μηχανή αναζήτησης SQL ανοιχτού κώδικα που έχει σχεδιαστεί για διαδραστικό αναλυτικό φόρτο εργασίας. Στο AWS, μπορείτε να εκτελέσετε το Trino EMR Αμαζονίου, όπου έχετε την ευελιξία να εκτελέσετε την προτιμώμενη έκδοση του ανοιχτού κώδικα Trino Amazon Elastic Compute Cloud (Amazon EC2) περιπτώσεις που διαχειρίζεστε ή ενεργοποιείτε Αμαζόν Αθηνά για μια εμπειρία χωρίς διακομιστή. Όταν χρησιμοποιείτε το Trino στο Amazon EMR ή στο Athena, λαμβάνετε τις πιο πρόσφατες καινοτομίες της κοινότητας ανοιχτού κώδικα μαζί με ιδιόκτητες βελτιστοποιήσεις που έχουν αναπτυχθεί από την AWS.

Ξεκινώντας από το Amazon EMR 6.8.0 και την έκδοση 2 του μηχανισμού Athena, η AWS έχει αναπτύξει βελτιστοποιήσεις σχεδίου ερωτημάτων και συμπεριφοράς κινητήρα που βελτιώνουν την απόδοση ερωτημάτων στο Trino. Σε αυτήν την ανάρτηση, συγκρίνουμε το Amazon EMR 6.15.0 με το Trino 426 ανοιχτού κώδικα και δείχνουμε ότι τα ερωτήματα TPC-DS έτρεχαν έως και 2.7 φορές πιο γρήγορα στο Amazon EMR 6.15.0 Trino 426 σε σύγκριση με ανοιχτού κώδικα Trino 426. Αργότερα, εξηγούμε μερικές από τις βελτιστοποιήσεις απόδοσης που αναπτύχθηκαν από το AWS που συμβάλλουν σε αυτά τα αποτελέσματα.

Ρύθμιση σημείου αναφοράς

Στη δοκιμή μας, χρησιμοποιήσαμε το σύνολο δεδομένων 3 TB που είναι αποθηκευμένο στο Amazon S3 σε μορφή συμπιεσμένου Parquet και τα μεταδεδομένα για βάσεις δεδομένων και πίνακες αποθηκεύονται στο Κόλλα AWS Κατάλογος Δεδομένων. Αυτό το σημείο αναφοράς χρησιμοποιεί μη τροποποιημένα σχήματα δεδομένων TPC-DS και σχέσεις πίνακα. Οι πίνακες δεδομένων είναι χωρισμένοι στη στήλη ημερομηνίας και περιείχαν 200-2100 κατατμήσεις. Δεν υπήρχαν στατιστικά στοιχεία πίνακα και στήλης για κανέναν από τους πίνακες. Χρησιμοποιήσαμε ερωτήματα TPC-DS από το ανοιχτού κώδικα Trino Αποθήκη Github χωρίς τροποποίηση. Τα ερωτήματα συγκριτικής αξιολόγησης εκτελέστηκαν διαδοχικά σε δύο διαφορετικά συμπλέγματα Amazon EMR 6.15.0: το ένα με το Amazon EMR Trino 426 και το άλλο με το Trino 426 ανοιχτού κώδικα. Και τα δύο συμπλέγματα χρησιμοποιούσαν 1 r5.4xlarge συντονιστή και 20 r5.4xlarge περιπτώσεις εργασίας.

Παρατηρήθηκαν αποτελέσματα

Τα σημεία αναφοράς μας δείχνουν σταθερά καλύτερες επιδόσεις με το Trino στο Amazon EMR 6.15.0 σε σύγκριση με το Trino ανοιχτού κώδικα. Ο συνολικός χρόνος εκτέλεσης ερωτημάτων του Trino στο Amazon EMR ήταν 2.7 φορές ταχύτερος σε σύγκριση με τον ανοιχτό κώδικα. Το παρακάτω γράφημα δείχνει βελτιώσεις απόδοσης που μετρώνται από το συνολικό χρόνο εκτέλεσης του ερωτήματος (σε δευτερόλεπτα) για τα ερωτήματα αναφοράς.

Πολλά από τα ερωτήματα TPC-DS έδειξαν κέρδη απόδοσης πέντε φορές πιο γρήγορα σε σύγκριση με το Trino ανοιχτού κώδικα. Ορισμένα ερωτήματα έδειξαν ακόμη μεγαλύτερη απόδοση, όπως το ερώτημα 72 που βελτιώθηκε κατά 160 φορές. Το παρακάτω γράφημα δείχνει τα 10 κορυφαία ερωτήματα TPC-DS με τη μεγαλύτερη βελτίωση στο χρόνο εκτέλεσης. Για συνοπτική αναπαράσταση και για να αποφευχθεί η ασάφεια των βελτιώσεων απόδοσης στο γράφημα, εξαιρέσαμε το q72.

Βελτιώσεις απόδοσης

Τώρα που καταλαβαίνουμε τα κέρδη απόδοσης με το Trino στο Amazon EMR, ας εμβαθύνουμε σε μερικές από τις βασικές καινοτομίες που αναπτύχθηκαν από την AWS engineering που συμβάλλουν σε αυτές τις βελτιώσεις.

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

Ωστόσο, τα στατιστικά του πίνακα συχνά δεν είναι διαθέσιμα, δεν είναι ενημερωμένα ή είναι πολύ ακριβά για τη συλλογή τους σε μεγάλα τραπέζια. Όταν τα στατιστικά στοιχεία δεν είναι διαθέσιμα, το Amazon EMR και η Athena χρησιμοποιούν μεταδεδομένα αρχείων S3 για τη βελτιστοποίηση των σχεδίων ερωτημάτων. Τα μεταδεδομένα αρχείου S3 χρησιμοποιούνται για την εξαγωγή μικρών υποερωτημάτων και πινάκων στο ερώτημα κατά τον προσδιορισμό της σειράς σύνδεσης ή του τύπου ένωσης. Για παράδειγμα, εξετάστε το ακόλουθο ερώτημα:

SELECT ss_promo_sk FROM store_sales ss, store_returns sr, call_center cc WHERE 
ss.ss_cdemo_sk = sr.sr_cdemo_sk AND ss.ss_customer_sk = cc.cc_call_center_sk 
AND cc_sq_ft > 0

Η συντακτική σειρά ένωσης είναι store_sales ενώνει store_returns ενώνει call_center. Με τους κανόνες βελτιστοποίησης τύπου ένωσης και επιλογής παραγγελίας του Amazon EMR, η βέλτιστη σειρά ένωσης καθορίζεται ακόμη και αν αυτοί οι πίνακες δεν έχουν στατιστικά στοιχεία. Για το προηγούμενο ερώτημα εάν call_center θεωρείται μικρός πίνακας μετά την εκτίμηση του κατά προσέγγιση μεγέθους μέσω των μεταδεδομένων του αρχείου S3, θα ενταχθούν οι κανόνες βελτιστοποίησης σύνδεσης του EMR store_sales με call_center πρώτα και μετατρέψτε την ένωση σε σύνδεση εκπομπής, επιταχύνοντας το ερώτημα και μειώνοντας την κατανάλωση μνήμης. Η αναδιάταξη του Join ελαχιστοποιεί το ενδιάμεσο μέγεθος του αποτελέσματος, το οποίο συμβάλλει στην περαιτέρω μείωση του συνολικού χρόνου εκτέλεσης του ερωτήματος.

Με το Amazon EMR 6.10.0 και νεότερες εκδόσεις, οι βελτιστοποιήσεις σύνδεσης που βασίζονται σε μεταδεδομένα αρχείων S3 είναι ενεργοποιημένες από προεπιλογή. Εάν χρησιμοποιείτε Amazon EMR 6.8.0 ή 6.9.0, μπορείτε να ενεργοποιήσετε αυτές τις βελτιστοποιήσεις ορίζοντας τις ιδιότητες περιόδου σύνδεσης από πελάτες Trino ή προσθέτοντας τις ακόλουθες ιδιότητες στην ταξινόμηση trino-config κατά τη δημιουργία του συμπλέγματός σας. Αναφέρομαι σε Διαμόρφωση εφαρμογών για λεπτομέρειες σχετικά με τον τρόπο παράκαμψης των προεπιλεγμένων ρυθμίσεων για μια εφαρμογή.

Διαμόρφωση για επιλογή τύπου Join:

session property: rule_based_join_type_selection=true
config property: rule-based-join-type-selection=true

Διαμόρφωση για αναδιάταξη Join:

session property: rule_based_join_reorder=true
config property: rule-based-join-reorder=true

Συμπέρασμα

Με το Amazon EMR 6.8.0 και μεταγενέστερη έκδοση, μπορείτε να εκτελέσετε ερωτήματα στο Trino πολύ πιο γρήγορα από το Trino ανοιχτού κώδικα. Όπως φαίνεται σε αυτήν την ανάρτηση ιστολογίου, το σημείο αναφοράς TPC-DS μας έδειξε βελτίωση 2.7 φορές στο συνολικό χρόνο εκτέλεσης ερωτημάτων με το Trino στο Amazon EMR 6.15.0. Οι βελτιστοποιήσεις που συζητούνται σε αυτήν την ανάρτηση, και πολλές άλλες, είναι επίσης διαθέσιμες κατά την εκτέλεση ερωτημάτων Trino στο Athena όπου παρατηρούνται παρόμοιες βελτιώσεις απόδοσης. Για να μάθετε περισσότερα, ανατρέξτε στο Εκτελέστε ερωτήματα 3 φορές πιο γρήγορα με έως και 70% εξοικονόμηση κόστους στον πιο πρόσφατο κινητήρα Amazon Athena.

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


Σχετικά με τους Συγγραφείς

Bhargavi Sagi είναι Μηχανικός Ανάπτυξης Λογισμικού στο Amazon Athena. Εντάχθηκε στην AWS το 2020 και εργάζεται σε διάφορους τομείς του Amazon EMR και του κινητήρα Athena V3, συμπεριλαμβανομένης της αναβάθμισης κινητήρα, της αξιοπιστίας του κινητήρα και της απόδοσης του κινητήρα.

Sushil Kumar Shivashankar είναι ο Διευθυντής Μηχανικών για την ομάδα EMR Trino και Athena Query Engine. Από το 2014 εστιάζει στον χώρο ανάλυσης μεγάλων δεδομένων.

spot_img

Τελευταία Νοημοσύνη

spot_img