Open Source DataHub: Πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων του LinkedIn

Open Source DataHub: Πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων του LinkedIn

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

Σε αυτό το άρθρο θα μιλήσουμε για το πώς δημοσιεύσαμε μια πηγή δεδομένων με ανοιχτή άδεια DataHub στην πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων μας, ξεκινώντας από τις πρώτες μέρες του έργου Πού Πώς. Το LinkedIn διατηρεί τη δική του έκδοση του DataHub ξεχωριστά από την έκδοση ανοιχτού κώδικα. Θα ξεκινήσουμε εξηγώντας γιατί χρειαζόμαστε δύο ξεχωριστά περιβάλλοντα ανάπτυξης, στη συνέχεια θα συζητήσουμε πρώιμες προσεγγίσεις για τη χρήση του ανοιχτού κώδικα WhereHows και θα συγκρίνουμε την εσωτερική μας (παραγωγή) έκδοση του DataHub με την έκδοση στο GitHub. Θα μοιραστούμε επίσης λεπτομέρειες σχετικά με τη νέα μας αυτοματοποιημένη λύση για προώθηση και λήψη ενημερώσεων ανοιχτού κώδικα για να διατηρούνται συγχρονισμένα και τα δύο αποθετήρια. Τέλος, θα δώσουμε οδηγίες για το πώς να ξεκινήσετε να χρησιμοποιείτε το DataHub ανοιχτού κώδικα και θα συζητήσουμε εν συντομία την αρχιτεκτονική του.

Open Source DataHub: Πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων του LinkedIn

Το WhereHows είναι πλέον DataHub!

Η ομάδα μεταδεδομένων του LinkedIn που παρουσιάστηκε προηγουμένως DataHub (διάδοχος του WhereHows), η πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων του LinkedIn και κοινά σχέδια για το άνοιγμά της. Λίγο μετά την ανακοίνωση αυτή, κυκλοφορήσαμε μια άλφα έκδοση του DataHub και τη μοιραστήκαμε με την κοινότητα. Έκτοτε, συνεισφέρουμε συνεχώς στο αποθετήριο και συνεργαζόμαστε με ενδιαφερόμενους χρήστες για να προσθέσουμε τις πιο απαιτούμενες λειτουργίες και να λύσουμε προβλήματα. Τώρα είμαστε στην ευχάριστη θέση να ανακοινώσουμε την επίσημη κυκλοφορία DataHub στο GitHub.

Προσεγγίσεις ανοιχτού κώδικα

Το WhereHows, η αρχική πύλη του LinkedIn για την εύρεση δεδομένων και από πού προέρχονται, ξεκίνησε ως εσωτερικό έργο. το άνοιξε η ομάδα μεταδεδομένων πηγαίος κώδικας το 2016. Από τότε, η ομάδα διατηρούσε πάντα δύο διαφορετικές βάσεις κώδικα—μία για ανοιχτό κώδικα και μία για εσωτερική χρήση του LinkedIn—καθώς δεν ήταν όλες οι δυνατότητες προϊόντος που αναπτύχθηκαν για περιπτώσεις χρήσης του LinkedIn γενικά εφαρμόσιμες στο ευρύτερο κοινό. Επιπλέον, το WhereHows έχει κάποιες εσωτερικές εξαρτήσεις (υποδομή, βιβλιοθήκες κ.λπ.) που δεν είναι ανοιχτού κώδικα. Στα χρόνια που ακολούθησαν, το WhereHows πέρασε από πολλές επαναλήψεις και κύκλους ανάπτυξης, καθιστώντας τη συγχρονισμό των δύο βάσεων κώδικα μια μεγάλη πρόκληση. Η ομάδα μεταδεδομένων έχει δοκιμάσει διαφορετικές προσεγγίσεις όλα αυτά τα χρόνια για να προσπαθήσει να διατηρήσει συγχρονισμένη την εσωτερική ανάπτυξη και την ανάπτυξη ανοιχτού κώδικα.

Πρώτη δοκιμή: "Πρώτα ανοιχτού κώδικα"

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

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

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

Δεύτερη προσπάθεια: «Πρώτα το εσωτερικό»

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

Την τρίτη φορά λειτούργησε!

Οι δύο αποτυχημένες προσπάθειες που αναφέρθηκαν παραπάνω είχαν ως αποτέλεσμα το αποθετήριο WhereHows GitHub να παραμένει ξεπερασμένο για μεγάλο χρονικό διάστημα. Η ομάδα συνέχισε να βελτιώνει τις δυνατότητες και την αρχιτεκτονική του προϊόντος, έτσι ώστε η εσωτερική έκδοση του WhereHows για το LinkedIn να γίνει πιο προηγμένη από την έκδοση ανοιχτού κώδικα. Είχε ακόμη και ένα νέο όνομα - DataHub. Με βάση προηγούμενες αποτυχημένες προσπάθειες, η ομάδα αποφάσισε να αναπτύξει μια επεκτάσιμη, μακροπρόθεσμη λύση.

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

Ωστόσο, μια ώριμη εφαρμογή back-end όπως το DataHub θα απαιτήσει σημαντικό χρόνο για να φτάσει σε αυτήν την κατάσταση. Αυτό επίσης αποκλείει τη δυνατότητα ανοιχτής πηγής μιας πλήρως λειτουργικής υλοποίησης πριν από την πλήρη αφαίρεση όλων των εσωτερικών εξαρτήσεων. Γι' αυτό έχουμε αναπτύξει εργαλεία που μας βοηθούν να κάνουμε συνεισφορές ανοιχτού κώδικα πιο γρήγορα και με πολύ λιγότερο πόνο. Αυτή η λύση ωφελεί τόσο την ομάδα μεταδεδομένων (προγραμματιστής DataHub) όσο και την κοινότητα ανοιχτού κώδικα. Στις επόμενες ενότητες θα συζητηθεί αυτή η νέα προσέγγιση.

Αυτοματισμός δημοσίευσης ανοιχτού κώδικα

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

  1. Συγχρονισμός κώδικα LinkedIn προς/από ανοιχτού κώδικα, παρόμοια rsync.
  2. Δημιουργία κεφαλίδας άδειας χρήσης, παρόμοια με Αρουραίος Απάτσι.
  3. Δημιουργήστε αυτόματα αρχεία καταγραφής δεσμεύσεων ανοιχτού κώδικα από εσωτερικά αρχεία καταγραφής δεσμεύσεων.
  4. Αποτρέψτε τις εσωτερικές αλλαγές που παραβιάζουν τις εκδόσεις ανοιχτού κώδικα δοκιμή εξάρτησης.

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

Συγχρονισμός πηγαίου κώδικα

Σε αντίθεση με την έκδοση ανοιχτού κώδικα του DataHub, η οποία είναι ένα ενιαίο αποθετήριο GitHub, η έκδοση LinkedIn του DataHub είναι ένας συνδυασμός πολλαπλών αποθετηρίων (που ονομάζεται εσωτερικά πολλαπλών προϊόντων). Η διεπαφή DataHub, η βιβλιοθήκη μοντέλων μεταδεδομένων, η υπηρεσία υποστήριξης αποθήκης μεταδεδομένων και οι εργασίες ροής βρίσκονται σε ξεχωριστά αποθετήρια στο LinkedIn. Ωστόσο, για να διευκολύνουμε τους χρήστες ανοιχτού κώδικα, έχουμε ένα ενιαίο χώρο αποθήκευσης για την έκδοση ανοιχτού κώδικα του DataHub.

Open Source DataHub: Πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων του LinkedIn

Εικόνα 1: Συγχρονισμός μεταξύ αποθετηρίων LinkedIn DataHub και ένα ενιαίο αποθετήριο DataHub ανοιχτή πηγή

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

{
  "datahub-dao": [
    "${datahub-frontend}/datahub-dao"
  ],
  "gms/impl": [
    "${dataset-gms}/impl",
    "${user-gms}/impl"
  ],
  "metadata-dao": [
    "${metadata-models}/metadata-dao"
  ],
  "metadata-builders": [
    "${metadata-models}/metadata-builders"
  ]
}

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

{
  "${metadata-models}/metadata-builders/src/main/java/com/linkedin/Foo.java":
"metadata-builders/src/main/java/com/linkedin/Foo.java",
  "${metadata-models}/metadata-builders/src/main/java/com/linkedin/Bar.java":
"metadata-builders/src/main/java/com/linkedin/Bar.java",
  "${metadata-models}/metadata-builders/build.gradle": null,
}

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

  • Στην περίπτωση λειτουργικών μονάδων πολλαπλών πηγών για μια λειτουργική μονάδα προορισμού σε ανοιχτό κώδικα, ενδέχεται να προκύψουν συγκρούσεις, π.χ. FQCN, που υπάρχει σε περισσότερες από μία λειτουργικές μονάδες πηγής. Ως στρατηγική επίλυσης συγκρούσεων, τα εργαλεία μας από προεπιλογή έχουν την επιλογή «ο τελευταίος κερδίζει».
  • "null" σημαίνει ότι το αρχείο προέλευσης δεν αποτελεί μέρος του αποθετηρίου ανοιχτού κώδικα.
  • Μετά από κάθε υποβολή ή εξαγωγή ανοιχτού κώδικα, αυτή η αντιστοίχιση ενημερώνεται αυτόματα και δημιουργείται ένα στιγμιότυπο. Αυτό είναι απαραίτητο για τον εντοπισμό προσθηκών και διαγραφών από τον πηγαίο κώδικα από την τελευταία ενέργεια.

Δημιουργία αρχείων καταγραφής δεσμεύσεων

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

metadata-models 29.0.0 -> 30.0.0
    Added aspect model foo
    Fixed issue bar

dataset-gms 2.3.0 -> 2.3.4
    Added rest.li API to serve foo aspect

MP_VERSION=dataset-gms:2.3.4
MP_VERSION=metadata-models:30.0.0

Δοκιμή εξάρτησης

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

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

Διαφορές μεταξύ ανοιχτού κώδικα DataHub και έκδοσης παραγωγής μας

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

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

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

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

Ένα άλλο παράδειγμα διαφοράς είναι η ύπαρξη ενός μόνο GMS (Generalized Metadata Store) σε μια εφαρμογή ανοιχτού κώδικα και όχι πολλαπλών GMS. Το GMA (Generalized Metadata Architecture) είναι το όνομα της αρχιτεκτονικής back-end για το DataHub και το GMS είναι ο χώρος αποθήκευσης μεταδεδομένων στο πλαίσιο του GMA. Το GMA είναι μια πολύ ευέλικτη αρχιτεκτονική που σας επιτρέπει να διανέμετε κάθε δομή δεδομένων (π.χ. σύνολα δεδομένων, χρήστες κ.λπ.) στο δικό της χώρο αποθήκευσης μεταδεδομένων ή να αποθηκεύετε πολλαπλές κατασκευές δεδομένων σε έναν ενιαίο χώρο αποθήκευσης μεταδεδομένων, εφόσον το μητρώο περιέχει την αντιστοίχιση της δομής δεδομένων στο Το GMS ενημερώνεται. Για ευκολία στη χρήση, επιλέξαμε μια μοναδική παρουσία GMS που αποθηκεύει όλες τις διαφορετικές δομές δεδομένων στο DataHub ανοιχτού κώδικα.

Μια πλήρης λίστα διαφορών μεταξύ των δύο υλοποιήσεων δίνεται στον παρακάτω πίνακα.

Χαρακτηριστικά Προϊόντος
LinkedIn DataHub
Open Source DataHub

Υποστηριζόμενες κατασκευές δεδομένων
1) Σύνολα δεδομένων 2) Χρήστες 3) Μετρήσεις 4) Χαρακτηριστικά ML 5) Γραφήματα 6) Πίνακες ελέγχου
1) Σύνολο δεδομένων 2) Χρήστες

Υποστηριζόμενες πηγές μεταδεδομένων για σύνολα δεδομένων
1) Ambry 2) Βάση καναπέ 3) Dalids 4) Espresso 5) HDFS 6) Hive 7) Kafka 8) MongoDB 9) MySQL 10) Oracle 11) Pinot 12) Presto 12) Θάλασσες 13) Teradata 13) Διάνυσμα 14) Βενετία
Κυψέλη Kafka RDBMS

Pub-sub
LinkedIn Kafka
Συμπέρασμα Κάφκα

Επεξεργασία ροής
Υπεύθυνη για τη διαχείριση
Ενσωματωμένο (αυτόνομο)

Dependency Injection & Dynamic Configuration
LinkedIn Offspring
Άνοιξη

Εργαλεία κατασκευής
Ligradle (εσωτερικό περιτύλιγμα Gradle του LinkedIn)
Gradlew

CI / CD
CRT (εσωτερικό CI/CD του LinkedIn)
TravisCI και Docker hub

Καταστήματα μεταδεδομένων
Κατανεμημένο πολλαπλό GMS: 1) GMS συνόλου δεδομένων 2) GMS χρήστη 3) μετρικό GMS 4) GMS λειτουργιών 5) GMS χάρτη/ταμπλό
Ενιαίο GMS για: 1) Σύνολα δεδομένων 2) Χρήστες

Μικροϋπηρεσίες σε δοχεία Docker

Λιμενεργάτης απλοποιεί την ανάπτυξη και διανομή εφαρμογών με μεταφορά σε εμπορευματοκιβώτια. Κάθε τμήμα της υπηρεσίας στο DataHub είναι ανοιχτού κώδικα, συμπεριλαμβανομένων στοιχείων υποδομής όπως το Kafka, Ελαστική αναζήτηση, neo4j и MySQL, έχει τη δική του εικόνα Docker. Για την ενορχήστρωση των Docker containers χρησιμοποιήσαμε Docker Compose.

Open Source DataHub: Πλατφόρμα αναζήτησης και ανακάλυψης μεταδεδομένων του LinkedIn

Εικόνα 2: Αρχιτεκτονική DataHub *ανοιχτή πηγή**

Μπορείτε να δείτε την αρχιτεκτονική υψηλού επιπέδου του DataHub στην παραπάνω εικόνα. Εκτός από τα στοιχεία υποδομής, διαθέτει τέσσερα διαφορετικά κοντέινερ Docker:

datahub-gms: υπηρεσία αποθήκευσης μεταδεδομένων

datahub-frontend: εφαρμογή Δοκιμάστε να παίξετε, που εξυπηρετεί τη διεπαφή DataHub.

datahub-mce-consumer: εφαρμογή Ρεύματα Κάφκα, το οποίο χρησιμοποιεί τη ροή συμβάντος αλλαγής μεταδεδομένων (MCE) και ενημερώνει το χώρο αποθήκευσης μεταδεδομένων.

datahub-mae-consumer: εφαρμογή Ρεύματα Κάφκα, το οποίο χρησιμοποιεί μια ροή συμβάντων ελέγχου μεταδεδομένων (MAE) και δημιουργεί ένα ευρετήριο αναζήτησης και μια βάση δεδομένων γραφήματος.

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

Το CI/CD στο DataHub είναι ανοιχτού κώδικα

Το αποθετήριο ανοιχτού κώδικα DataHub χρησιμοποιεί TravisCI για συνεχή ένταξη και Docker hub για συνεχή ανάπτυξη. Και τα δύο έχουν καλή ενσωμάτωση GitHub και είναι εύκολο να ρυθμιστούν. Για τις περισσότερες υποδομές ανοιχτού κώδικα που έχουν αναπτυχθεί από την κοινότητα ή ιδιωτικές εταιρείες (π.χ. Διασταύρωση), Οι εικόνες Docker δημιουργούνται και αναπτύσσονται στο Docker Hub για ευκολία χρήσης από την κοινότητα. Οποιαδήποτε εικόνα Docker βρίσκεται στο Docker Hub μπορεί εύκολα να χρησιμοποιηθεί με μια απλή εντολή λιμνοδεξαμενής-τραβήγματος.

Με κάθε δέσμευση στο αποθετήριο ανοιχτού κώδικα DataHub, όλες οι εικόνες Docker δημιουργούνται αυτόματα και αναπτύσσονται στο Docker Hub με την "πιο πρόσφατη" ετικέτα. Εάν το Docker Hub έχει ρυθμιστεί με κάποια ονομάζοντας κλάδους κανονικών εκφράσεων, όλες οι ετικέτες στο αποθετήριο ανοιχτού κώδικα κυκλοφορούν επίσης με τα αντίστοιχα ονόματα ετικετών στο Docker Hub.

Χρησιμοποιώντας το DataHub

Ρύθμιση του DataHub είναι πολύ απλό και αποτελείται από τρία απλά βήματα:

  1. Κλωνοποιήστε το αποθετήριο ανοιχτού κώδικα και εκτελέστε όλα τα κοντέινερ Docker με docker-compose χρησιμοποιώντας το παρεχόμενο σενάριο docker-compose για γρήγορη εκκίνηση.
  2. Κάντε λήψη των δειγμάτων δεδομένων που παρέχονται στο αποθετήριο χρησιμοποιώντας το εργαλείο γραμμής εντολών που παρέχεται επίσης.
  3. Περιηγηθείτε στο DataHub στο πρόγραμμα περιήγησής σας.

Ενεργά παρακολούθηση Gitter chat έχει επίσης ρυθμιστεί για γρήγορες ερωτήσεις. Οι χρήστες μπορούν επίσης να δημιουργήσουν προβλήματα απευθείας στο αποθετήριο GitHub. Το πιο σημαντικό, καλωσορίζουμε και εκτιμούμε όλα τα σχόλια και τις προτάσεις!

Σχέδια για το μέλλον

Επί του παρόντος, κάθε υποδομή ή μικρουπηρεσία για το DataHub ανοιχτού κώδικα είναι κατασκευασμένο ως κοντέινερ Docker και ολόκληρο το σύστημα ενορχηστρώνεται χρησιμοποιώντας docker-compose. Δεδομένης της δημοτικότητας και της ευρέως διαδεδομένης Kubernetes, θα θέλαμε επίσης να παρέχουμε μια λύση βασισμένη στο Kubernetes στο εγγύς μέλλον.

Σχεδιάζουμε επίσης να παρέχουμε μια λύση με το κλειδί στο χέρι για την ανάπτυξη του DataHub σε μια δημόσια υπηρεσία cloud, όπως π.χ Γαλανός, AWS ή Google Cloud. Δεδομένης της πρόσφατης ανακοίνωσης της μετεγκατάστασης του LinkedIn στο Azure, αυτό θα ευθυγραμμιστεί με τις εσωτερικές προτεραιότητες της ομάδας μεταδεδομένων.

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

Πηγή: www.habr.com

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