Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Πριν από λίγο καιρό, βρεθήκαμε αντιμέτωποι με το ζήτημα της επιλογής ενός εργαλείου ETL για εργασία με Big Data. Η προηγουμένως χρησιμοποιούμενη λύση Informatica BDM δεν μας ταίριαζε λόγω περιορισμένης λειτουργικότητας. Η χρήση του έχει περιοριστεί σε ένα πλαίσιο για την εκκίνηση εντολών spark-submit. Δεν υπήρχαν πολλά ανάλογα στην αγορά που ήταν, καταρχήν, ικανά να δουλέψουν με τον όγκο των δεδομένων που ασχολούμαστε καθημερινά. Στο τέλος επιλέξαμε το Ab Initio. Κατά τη διάρκεια των πιλοτικών επιδείξεων, το προϊόν έδειξε πολύ υψηλή ταχύτητα επεξεργασίας δεδομένων. Δεν υπάρχουν σχεδόν καθόλου πληροφορίες για το Ab Initio στα ρωσικά, οπότε αποφασίσαμε να μιλήσουμε για την εμπειρία μας στο Habré.

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

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

Σε αυτό το post θα μιλήσω για τις δυνατότητες του Ab Initio και θα δώσω συγκριτικά χαρακτηριστικά της δουλειάς του με το Hive και το GreenPlum.

  • Περιγραφή του πλαισίου MDW και εργασία για την προσαρμογή του για το GreenPlum
  • Ab Initio σύγκριση απόδοσης μεταξύ Hive και GreenPlum
  • Working Ab Initio με GreenPlum σε λειτουργία σχεδόν σε πραγματικό χρόνο


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

Οι επιχειρήσεις αναπτύσσουν τα οικοσυστήματα τους και αυτό το εργαλείο είναι πιο χρήσιμο από ποτέ. Με το Ab Initio, μπορείτε να συγκεντρώσετε γνώσεις για την τρέχουσα επιχείρησή σας και να χρησιμοποιήσετε αυτές τις γνώσεις για να επεκτείνετε παλιές και να ανοίξετε νέες επιχειρήσεις. Οι εναλλακτικές λύσεις στο Ab Initio περιλαμβάνουν περιβάλλοντα οπτικής ανάπτυξης Informatica BDM και μη οπτικά περιβάλλοντα ανάπτυξης Apache Spark.

Περιγραφή του Ab Initio

Το Ab Initio, όπως και άλλα εργαλεία ETL, είναι μια συλλογή προϊόντων.

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Το Ab Initio GDE (Graphical Development Environment) είναι ένα περιβάλλον για τον προγραμματιστή στο οποίο διαμορφώνει μετασχηματισμούς δεδομένων και τους συνδέει με ροές δεδομένων με τη μορφή βελών. Σε αυτή την περίπτωση, ένα τέτοιο σύνολο μετασχηματισμών ονομάζεται γράφημα:

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

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

Υπάρχουν αρκετές εκατοντάδες λειτουργικά εξαρτήματα, που είναι πολλά. Πολλά από αυτά είναι άκρως εξειδικευμένα. Οι δυνατότητες των κλασικών μετασχηματισμών στο Ab Initio είναι ευρύτερες από ό,τι σε άλλα εργαλεία ETL. Για παράδειγμα, το Join έχει πολλαπλές εξόδους. Εκτός από το αποτέλεσμα της σύνδεσης συνόλων δεδομένων, μπορείτε να λάβετε εγγραφές εξόδου συνόλων δεδομένων εισόδου των οποίων τα κλειδιά δεν ήταν δυνατό να συνδεθούν. Μπορείτε επίσης να λάβετε απορρίψεις, σφάλματα και ένα αρχείο καταγραφής της λειτουργίας μετασχηματισμού, το οποίο μπορεί να διαβαστεί στην ίδια στήλη με ένα αρχείο κειμένου και να υποβληθεί σε επεξεργασία με άλλους μετασχηματισμούς:

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Ή, για παράδειγμα, μπορείτε να υλοποιήσετε έναν δέκτη δεδομένων με τη μορφή πίνακα και να διαβάσετε δεδομένα από αυτόν στην ίδια στήλη.

Υπάρχουν πρωτότυπες μεταμορφώσεις. Για παράδειγμα, ο μετασχηματισμός Σάρωση έχει λειτουργικότητα παρόμοια με τις αναλυτικές συναρτήσεις. Υπάρχουν μετασχηματισμοί με αυτονόητα ονόματα: Δημιουργία δεδομένων, Ανάγνωση Excel, Κανονικοποίηση, Ταξινόμηση εντός Ομάδων, Εκτέλεση προγράμματος, Εκτέλεση SQL, Συμμετοχή με DB, κ.λπ. Τα γραφήματα μπορούν να χρησιμοποιούν παραμέτρους χρόνου εκτέλεσης, συμπεριλαμβανομένης της δυνατότητας μεταβίβασης παραμέτρων από ή προς το λειτουργικό σύστημα. Τα αρχεία με ένα έτοιμο σύνολο παραμέτρων που μεταβιβάζονται στο γράφημα ονομάζονται σύνολα παραμέτρων (psets).

Όπως ήταν αναμενόμενο, το Ab Initio GDE έχει το δικό του αποθετήριο που ονομάζεται EME (Enterprise Meta Environment). Οι προγραμματιστές έχουν την ευκαιρία να εργαστούν με τοπικές εκδόσεις κώδικα και να ελέγξουν τις εξελίξεις τους στο κεντρικό αποθετήριο.

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

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Είναι επίσης δυνατό να κάνετε κλικ σε οποιαδήποτε ροή και να δείτε λεπτομέρειες παρακολούθησης - σε πόσες παράλληλες λειτούργησε ο μετασχηματισμός, πόσες γραμμές και byte φορτώθηκαν σε ποιες από τις παραλληλισμούς:

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

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

Για κάθε μετασχηματισμό, μπορείτε να επιλέξετε τη λεγόμενη διάταξη (όπου θα εκτελεστεί): χωρίς παράλληλα ή σε παράλληλα νήματα, ο αριθμός των οποίων μπορεί να καθοριστεί. Ταυτόχρονα, τα προσωρινά αρχεία που δημιουργεί το Ab Initio όταν εκτελούνται οι μετασχηματισμοί μπορούν να τοποθετηθούν τόσο στο σύστημα αρχείων διακομιστή όσο και στο HDFS.

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

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

Το Ab Initio έχει επίσης καλά ανεπτυγμένη ενσωμάτωση με το λειτουργικό σύστημα μέσω του κελύφους. Συγκεκριμένα, η Sberbank χρησιμοποιεί linux ksh. Μπορείτε να ανταλλάξετε μεταβλητές με το κέλυφος και να τις χρησιμοποιήσετε ως παραμέτρους γραφήματος. Μπορείτε να καλέσετε την εκτέλεση γραφημάτων Ab Initio από το κέλυφος και να διαχειριστείτε το Ab Initio.

Εκτός από το Ab Initio GDE, πολλά άλλα προϊόντα περιλαμβάνονται στην παράδοση. Υπάρχει το δικό της Σύστημα Συνεργασίας με αξίωση να ονομάζεται λειτουργικό σύστημα. Υπάρχει ένα Control>Center όπου μπορείτε να προγραμματίσετε και να παρακολουθήσετε τις ροές λήψης. Υπάρχουν προϊόντα για ανάπτυξη σε πιο πρωτόγονο επίπεδο από αυτό που επιτρέπει το Ab Initio GDE.

Περιγραφή του πλαισίου MDW και εργασία για την προσαρμογή του για το GreenPlum

Μαζί με τα προϊόντα του, ο πωλητής παρέχει το προϊόν MDW (Metadata Driven Warehouse), το οποίο είναι ένας διαμορφωτής γραφήματος που έχει σχεδιαστεί για να βοηθά σε τυπικές εργασίες συμπλήρωσης αποθηκών δεδομένων ή θησαυροφυλακίων δεδομένων.

Περιέχει προσαρμοσμένους (συγκεκριμένα για το έργο) αναλυτές μεταδεδομένων και έτοιμες γεννήτριες κώδικα από το κουτί.

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum
Ως είσοδος, το MDW λαμβάνει ένα μοντέλο δεδομένων, ένα αρχείο διαμόρφωσης για τη ρύθμιση μιας σύνδεσης με μια βάση δεδομένων (Oracle, Teradata ή Hive) και ορισμένες άλλες ρυθμίσεις. Το τμήμα του συγκεκριμένου έργου, για παράδειγμα, αναπτύσσει το μοντέλο σε μια βάση δεδομένων. Το out-of-the-box τμήμα του προϊόντος δημιουργεί γραφήματα και αρχεία διαμόρφωσης για αυτά φορτώνοντας δεδομένα σε πίνακες μοντέλων. Σε αυτήν την περίπτωση, δημιουργούνται γραφήματα (και ψευδώνυμα) για διάφορους τρόπους προετοιμασίας και αυξητικής εργασίας για την ενημέρωση οντοτήτων.

Στις περιπτώσεις Hive και RDBMS, δημιουργούνται διαφορετικά γραφήματα για αρχικοποίηση και αυξητικές ενημερώσεις δεδομένων.

Στην περίπτωση του Hive, τα εισερχόμενα δεδομένα δέλτα συνδέονται μέσω Ab Initio Join με τα δεδομένα που υπήρχαν στον πίνακα πριν από την ενημέρωση. Οι φορτωτές δεδομένων στο MDW (τόσο στο Hive όσο και στο RDBMS) όχι μόνο εισάγουν νέα δεδομένα από το δέλτα, αλλά κλείνουν επίσης τις περιόδους συνάφειας των δεδομένων των οποίων τα κύρια κλειδιά έλαβαν το δέλτα. Επιπλέον, πρέπει να ξαναγράψετε το αμετάβλητο μέρος των δεδομένων. Αλλά αυτό πρέπει να γίνει επειδή το Hive δεν διαθέτει λειτουργίες διαγραφής ή ενημέρωσης.

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Στην περίπτωση του RDBMS, τα γραφήματα για σταδιακή ενημέρωση δεδομένων φαίνονται πιο βέλτιστα, επειδή τα RDBMS έχουν πραγματικές δυνατότητες ενημέρωσης.

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

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

Καταλήξαμε λοιπόν στο συμπέρασμα ότι στην περίπτωση του Hive, το MDW πρέπει να πάει για να ξαναγράψει ολόκληρο τον πίνακα επειδή το Hive δεν έχει λειτουργία ενημέρωσης. Και τίποτα καλύτερο από την πλήρη επανεγγραφή των δεδομένων όταν έχει εφευρεθεί η ενημέρωση. Στην περίπτωση του RDBMS, αντίθετα, οι δημιουργοί του προϊόντος θεώρησαν απαραίτητο να αναθέσουν τη σύνδεση και την ενημέρωση πινάκων στη χρήση της SQL.

Για ένα έργο στη Sberbank, δημιουργήσαμε μια νέα, επαναχρησιμοποιήσιμη εφαρμογή ενός φορτωτή βάσης δεδομένων για το GreenPlum. Αυτό έγινε με βάση την έκδοση που δημιουργεί το MDW για το Teradata. Ήταν η Teradata, και όχι η Oracle, που έφτασε πιο κοντά και καλύτερα για αυτό, γιατί... είναι επίσης ένα σύστημα MPP. Οι μέθοδοι εργασίας, καθώς και η σύνταξη, των Teradata και GreenPlum αποδείχτηκαν παρόμοιες.

Παραδείγματα κρίσιμων διαφορών για το MDW μεταξύ διαφορετικών RDBMS είναι τα ακόλουθα. Στο GreenPlum, σε αντίθεση με το Teradata, όταν δημιουργείτε πίνακες πρέπει να γράψετε μια ρήτρα

distributed by

Η Teradata γράφει:

delete <table> all

, και στο GreenPlum γράφουν

delete from <table>

Στην Oracle, για λόγους βελτιστοποίησης γράφουν

delete from t where rowid in (<соединение t с дельтой>)

, και γράφουν οι Teradata και GreenPlum

delete from t where exists (select * from delta where delta.pk=t.pk)

Σημειώνουμε επίσης ότι για να λειτουργήσει το Ab Initio με το GreenPlum, ήταν απαραίτητο να εγκαταστήσετε τον πελάτη GreenPlum σε όλους τους κόμβους του συμπλέγματος Ab Initio. Αυτό συμβαίνει επειδή συνδεθήκαμε στο GreenPlum ταυτόχρονα από όλους τους κόμβους στο σύμπλεγμα μας. Και για να είναι παράλληλη η ανάγνωση από το GreenPlum και κάθε παράλληλο νήμα Ab Initio να διαβάζει το δικό του τμήμα δεδομένων από το GreenPlum, έπρεπε να τοποθετήσουμε μια κατασκευή κατανοητή από τον Ab Initio στην ενότητα "where" των ερωτημάτων SQL.

where ABLOCAL()

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

ablocal_expr=«string_concat("mod(t.", string_filter_out("{$TABLE_KEY}","{}"), ",", (decimal(3))(number_of_partitions()),")=", (decimal(3))(this_partition()))»

, το οποίο μεταγλωττίζεται σε κάτι σαν

mod(sk,10)=3

, δηλ. πρέπει να ζητήσετε από το GreenPlum ένα ρητό φίλτρο για κάθε διαμέρισμα. Για άλλες βάσεις δεδομένων (Teradata, Oracle), το Ab Initio μπορεί να εκτελέσει αυτόν τον παραλληλισμό αυτόματα.

Ab Initio σύγκριση απόδοσης μεταξύ Hive και GreenPlum

Η Sberbank πραγματοποίησε ένα πείραμα για να συγκρίνει την απόδοση των γραφημάτων που δημιουργούνται από MDW σε σχέση με το Hive και σε σχέση με το GreenPlum. Ως μέρος του πειράματος, στην περίπτωση του Hive υπήρχαν 5 κόμβοι στο ίδιο σύμπλεγμα με το Ab Initio και στην περίπτωση του GreenPlum υπήρχαν 4 κόμβοι σε ένα ξεχωριστό σύμπλεγμα. Εκείνοι. Η Hive είχε κάποιο πλεονέκτημα υλικού έναντι της GreenPlum.

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

  • αρχικό φορτίο + αυξητικό φορτίο δεδομένων που δημιουργούνται τυχαία σε έναν πίνακα Hive
  • αρχικό φορτίο + αυξητικό φορτίο δεδομένων που δημιουργούνται τυχαία στον ίδιο πίνακα GreenPlum

Και στις δύο περιπτώσεις (Hive και GreenPlum) έτρεξαν μεταφορτώσεις σε 10 παράλληλα νήματα στο ίδιο σύμπλεγμα Ab Initio. Το Ab Initio αποθήκευσε ενδιάμεσα δεδομένα για υπολογισμούς σε HDFS (όσον αφορά το Ab Initio, χρησιμοποιήθηκε διάταξη MFS με χρήση HDFS). Μία γραμμή δεδομένων που δημιουργήθηκαν τυχαία καταλάμβανε 200 byte και στις δύο περιπτώσεις.

Το αποτέλεσμα ήταν ως εξής:

Κυψέλη:

Αρχική φόρτωση στο Hive

Εισήχθησαν σειρές
6 000 000
60 000 000
600 000 000

Διάρκεια αρχικοποίησης
λήψεις σε δευτερόλεπτα
41
203
1 601

Αυξητική φόρτωση στο Hive

Αριθμός διαθέσιμων σειρών σε
πίνακα στόχων στην αρχή του πειράματος
6 000 000
60 000 000
600 000 000

Αριθμός γραμμών δέλτα που εφαρμόστηκαν
πίνακα στόχων κατά τη διάρκεια του πειράματος
6 000 000
6 000 000
6 000 000

Αυξητική διάρκεια
λήψεις σε δευτερόλεπτα
88
299
2 541

GreenPlum:

Αρχική φόρτωση στο GreenPlum

Εισήχθησαν σειρές
6 000 000
60 000 000
600 000 000

Διάρκεια αρχικοποίησης
λήψεις σε δευτερόλεπτα
72
360
3 631

Αυξητική φόρτωση στο GreenPlum

Αριθμός διαθέσιμων σειρών σε
πίνακα στόχων στην αρχή του πειράματος
6 000 000
60 000 000
600 000 000

Αριθμός γραμμών δέλτα που εφαρμόστηκαν
πίνακα στόχων κατά τη διάρκεια του πειράματος
6 000 000
6 000 000
6 000 000

Αυξητική διάρκεια
λήψεις σε δευτερόλεπτα
159
199
321

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

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

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

Έτσι, το GreenPlum προσθέτει το δέλτα χρησιμοποιώντας τη μέθοδο διαγραφής+εισαγωγής, αλλά το Hive δεν έχει λειτουργίες διαγραφής ή ενημέρωσης, επομένως ολόκληρος ο πίνακας δεδομένων αναγκάστηκε να ξαναγραφτεί εντελώς κατά τη διάρκεια μιας σταδιακής ενημέρωσης. Η σύγκριση των κελιών που επισημαίνονται με έντονη γραφή είναι πιο αποκαλυπτική, καθώς αντιστοιχεί στην πιο κοινή επιλογή για τη χρήση λήψεων με ένταση πόρων. Βλέπουμε ότι η GreenPlum κέρδισε το Hive σε αυτό το τεστ κατά 8 φορές.

Working Ab Initio με GreenPlum σε λειτουργία σχεδόν σε πραγματικό χρόνο

Σε αυτό το πείραμα, θα δοκιμάσουμε την ικανότητα του Ab Initio να ενημερώνει τον πίνακα GreenPlum με τυχαία δημιουργούμενα κομμάτια δεδομένων σε σχεδόν πραγματικό χρόνο. Ας εξετάσουμε τον πίνακα GreenPlum dev42_1_db_usl.TESTING_SUBJ_org_finval, με τον οποίο θα εργαστούμε.

Θα χρησιμοποιήσουμε τρία γραφήματα Ab Initio για να δουλέψουμε με αυτό:

1) Graph Create_test_data.mp – δημιουργεί αρχεία δεδομένων σε HDFS με 10 σειρές σε 6 παράλληλα νήματα. Τα δεδομένα είναι τυχαία, η δομή τους είναι οργανωμένη για εισαγωγή στον πίνακά μας

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

2) Γράφημα mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset – Γράφημα που δημιουργήθηκε από MDW αρχικοποιώντας την εισαγωγή δεδομένων στον πίνακά μας σε 10 παράλληλα νήματα (χρησιμοποιούνται δεδομένα δοκιμής που δημιουργούνται από το γράφημα (1))

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

3) Γράφημα mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset – ένα γράφημα που δημιουργήθηκε από το MDW για σταδιακή ενημέρωση του πίνακα μας σε 10 παράλληλα νήματα χρησιμοποιώντας ένα τμήμα πρόσφατα ληφθέντων δεδομένων (δέλτα) που δημιουργείται από το γράφημα (1)

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum

Ας εκτελέσουμε το παρακάτω σενάριο σε λειτουργία NRT:

  • δημιουργούν 6 γραμμές δοκιμής
  • εκτελέστε μια αρχική φόρτιση, εισάγετε 6 δοκιμαστικές σειρές σε έναν κενό πίνακα
  • επαναλάβετε τη σταδιακή λήψη 5 φορές
    • δημιουργούν 6 γραμμές δοκιμής
    • εκτελέστε μια σταδιακή εισαγωγή 6 δοκιμαστικών σειρών στον πίνακα (σε αυτήν την περίπτωση, ο χρόνος λήξης valid_to_ts ορίζεται στα παλιά δεδομένα και εισάγονται πιο πρόσφατα δεδομένα με το ίδιο πρωτεύον κλειδί)

Αυτό το σενάριο μιμείται τον τρόπο πραγματικής λειτουργίας ενός συγκεκριμένου επιχειρηματικού συστήματος - ένα αρκετά μεγάλο μέρος νέων δεδομένων εμφανίζεται σε πραγματικό χρόνο και χύνεται αμέσως στο GreenPlum.

Τώρα ας δούμε το αρχείο καταγραφής του σεναρίου:

Ξεκινήστε το Create_test_data.input.pset στις 2020-06-04 11:49:11
Ολοκληρώστε το Create_test_data.input.pset στις 2020-06-04 11:49:37
Έναρξη mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:49:37
Ολοκλήρωση mdw_load.day_one.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:50:42
Ξεκινήστε το Create_test_data.input.pset στις 2020-06-04 11:50:42
Ολοκληρώστε το Create_test_data.input.pset στις 2020-06-04 11:51:06
Έναρξη mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:51:06
Ολοκλήρωση mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:53:41
Ξεκινήστε το Create_test_data.input.pset στις 2020-06-04 11:53:41
Ολοκληρώστε το Create_test_data.input.pset στις 2020-06-04 11:54:04
Έναρξη mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:54:04
Ολοκλήρωση mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:56:51
Ξεκινήστε το Create_test_data.input.pset στις 2020-06-04 11:56:51
Ολοκληρώστε το Create_test_data.input.pset στις 2020-06-04 11:57:14
Έναρξη mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:57:14
Ολοκλήρωση mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 11:59:55
Ξεκινήστε το Create_test_data.input.pset στις 2020-06-04 11:59:55
Ολοκληρώστε το Create_test_data.input.pset στις 2020-06-04 12:00:23
Έναρξη mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 12:00:23
Ολοκλήρωση mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 12:03:23
Ξεκινήστε το Create_test_data.input.pset στις 2020-06-04 12:03:23
Ολοκληρώστε το Create_test_data.input.pset στις 2020-06-04 12:03:49
Έναρξη mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 12:03:49
Ολοκλήρωση mdw_load.regular.current.dev42_1_db_usl_testing_subj_org_finval.pset στις 2020-06-04 12:06:46

Αποδεικνύεται αυτή η εικόνα:

Διάγραμμα
Ώρα έναρξης
Τελειώστε την ώρα
Μήκος

Create_test_data.input.pset
04.06.2020 11: 49: 11
04.06.2020 11: 49: 37
00:00:26

mdw_load.day_one.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 49: 37
04.06.2020 11: 50: 42
00:01:05

Create_test_data.input.pset
04.06.2020 11: 50: 42
04.06.2020 11: 51: 06
00:00:24

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 51: 06
04.06.2020 11: 53: 41
00:02:35

Create_test_data.input.pset
04.06.2020 11: 53: 41
04.06.2020 11: 54: 04
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 54: 04
04.06.2020 11: 56: 51
00:02:47

Create_test_data.input.pset
04.06.2020 11: 56: 51
04.06.2020 11: 57: 14
00:00:23

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 11: 57: 14
04.06.2020 11: 59: 55
00:02:41

Create_test_data.input.pset
04.06.2020 11: 59: 55
04.06.2020 12: 00: 23
00:00:28

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 00: 23
04.06.2020 12: 03: 23
00:03:00

Create_test_data.input.pset
04.06.2020 12: 03: 23
04.06.2020 12: 03: 49
00:00:26

mdw_load.regular.current.
dev42_1_db_usl_testing_subj_org_finval.pset
04.06.2020 12: 03: 49
04.06.2020 12: 06: 46
00:02:57

Βλέπουμε ότι επεξεργάζονται 6 αυξητικές γραμμές σε 000 λεπτά, κάτι που είναι αρκετά γρήγορο.
Τα δεδομένα στον πίνακα στόχο αποδείχθηκε ότι κατανέμονται ως εξής:

select valid_from_ts, valid_to_ts, count(1), min(sk), max(sk) from dev42_1_db_usl.TESTING_SUBJ_org_finval group by valid_from_ts, valid_to_ts order by 1,2;

Όταν έχεις ζυγαριά Sber. Χρήση Ab Initio με Hive και GreenPlum
Μπορείτε να δείτε την αντιστοιχία των δεδομένων που εισήχθησαν με τους χρόνους εκκίνησης των γραφημάτων.
Αυτό σημαίνει ότι μπορείτε να εκτελέσετε σταδιακή φόρτωση δεδομένων στο GreenPlum στο Ab Initio με πολύ υψηλή συχνότητα και να παρατηρήσετε υψηλή ταχύτητα εισαγωγής αυτών των δεδομένων στο GreenPlum. Φυσικά, δεν θα είναι δυνατή η εκκίνηση μία φορά το δευτερόλεπτο, καθώς το Ab Initio, όπως κάθε εργαλείο ETL, απαιτεί χρόνο για να "εκκινήσει" κατά την εκκίνηση.

Συμπέρασμα

Το Ab Initio χρησιμοποιείται επί του παρόντος στη Sberbank για τη δημιουργία ενός ενοποιημένου επιπέδου σημασιολογικών δεδομένων (ESS). Αυτό το έργο περιλαμβάνει τη δημιουργία μιας ενοποιημένης εκδοχής της κατάστασης διαφόρων τραπεζικών επιχειρηματικών οντοτήτων. Οι πληροφορίες προέρχονται από διάφορες πηγές, τα αντίγραφα των οποίων ετοιμάζονται στο Hadoop. Με βάση τις επιχειρηματικές ανάγκες, προετοιμάζεται ένα μοντέλο δεδομένων και περιγράφονται οι μετασχηματισμοί δεδομένων. Το Ab Initio φορτώνει πληροφορίες στο ESN και τα ληφθέντα δεδομένα δεν ενδιαφέρουν μόνο την ίδια την επιχείρηση, αλλά χρησιμεύουν επίσης ως πηγή για τη δημιουργία μαρκετών δεδομένων. Ταυτόχρονα, η λειτουργικότητα του προϊόντος σάς επιτρέπει να χρησιμοποιείτε διάφορα συστήματα ως δέκτη (Hive, Greenplum, Teradata, Oracle), γεγονός που καθιστά δυνατή την εύκολη προετοιμασία δεδομένων για μια επιχείρηση στις διάφορες μορφές που απαιτεί.

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

Ο συγγραφέας είναι ειδικός στην επαγγελματική κοινότητα της Sberbank SberProfi DWH/BigData. Η επαγγελματική κοινότητα του SberProfi DWH/BigData είναι υπεύθυνη για την ανάπτυξη ικανοτήτων σε τομείς όπως το οικοσύστημα Hadoop, Teradata, Oracle DB, GreenPlum, καθώς και τα εργαλεία BI Qlik, SAP BO, Tableau κ.λπ.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο