Κοινή χρήση τεχνολογίας

Η δευτερογενής πρακτική ανάπτυξης και εφαρμογής της AsiaInfo Technology βασίζεται στο Apache SeaTunnel

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Η πρακτική κοινή χρήση της AsiaInfo Technology στο Apache SeaTunnel

Αυτοπαρουσίαση

Γεια σας συμφοιτητές, έχω την τιμή να μοιράζομαι και να επικοινωνώ μαζί σας μέσω της κοινότητας Apache SeaTunnel. Είμαι ο Pan Zhihong από την AsiaInfo Technology. Είμαι κυρίως υπεύθυνος για την ανάπτυξη των εσωτερικών προϊόντων του κέντρου δεδομένων της εταιρείας.

αρχείο

Το θέμα αυτής της κοινής χρήσης είναι η πρακτική ενσωμάτωσης του Apache SeaTunnel στην Τεχνολογία AsiaInfo Συγκεκριμένα, θα μιλήσουμε για το πώς το κέντρο δεδομένων μας ενσωματώνει το SeaTunnel.

Κοινή χρήση επισκόπησης περιεχομένου

Σε αυτήν την κοινή χρήση, θα επικεντρωθώ στις ακόλουθες πτυχές:

  • Γιατί να επιλέξετε το SeaTunnel
  • Πώς να ενσωματώσετε το SeaTunnel
  • Προβλήματα που προέκυψαν κατά την ενσωμάτωση του SeaTunnel
  • Δευτερεύουσα ανάπτυξη του SeaTunnel
  • Προσδοκίες για το SeaTunnel

Γιατί να επιλέξετε το SeaTunnel

Πρώτα απ 'όλα, επιτρέψτε μου να εισαγάγω ότι είμαι κυρίως υπεύθυνος για την επαναληπτική ανάπτυξη του προϊόντος κέντρου δεδομένων DATAOS της AsiaInfo. Το DATAOS είναι ένα σχετικά τυπικό προϊόν κέντρου δεδομένων, που καλύπτει λειτουργικές ενότητες όπως η ενοποίηση δεδομένων, η ανάπτυξη δεδομένων, η διακυβέρνηση δεδομένων και το άνοιγμα δεδομένων. Το κύριο πράγμα που σχετίζεται με το SeaTunnel είναι η ενότητα ενοποίησης δεδομένων, η οποία είναι κυρίως υπεύθυνη για την ενοποίηση δεδομένων.

Πριν από την εισαγωγή του SeaTunnel, η λειτουργική αρχιτεκτονική της ενότητας ενοποίησης δεδομένων μας ήταν η εξής:

αρχείο

  • παρτίδα αγοράς: Χωρίζεται σε συλλογή πινάκων βιβλιοθήκης και συλλογή αρχείων.
    • Συλλογή πινάκων βιβλιοθήκης: υλοποιείται κυρίως με χρήση DataX.
    • Συλλογή αρχείων: μηχανισμός DP που αναπτύχθηκε μόνος του.
    • Συλλογή ETLt: αυτοαναπτύχθηκε μηχανή συλλογής ETLt. Το DataX προτιμά το ELT (εξαγωγή, φόρτωση, μετατροπή), το οποίο είναι κατάλληλο για σύνθετη μετατροπή μετά την εξαγωγή και αποθήκευση δεδομένων, ωστόσο, σε ορισμένα σενάρια, απαιτείται EL small T (εξαγωγή, φόρτωση, απλή μετατροπή) και το DataX δεν είναι κατάλληλο. Ως εκ τούτου, αναπτύξαμε μια μηχανή βασισμένη στο Spark SQL.
  • Λιουκάι: Η συλλογή αρχείων καταγραφής βασίζεται κυρίως στο Filebeat και η συλλογή CDC βασίζεται κυρίως στο Flink CDC.

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

αρχείο

Παρακάτω είναι μια λεπτομερής περιγραφή κάθε στρώματος:

Το πρώτο επίπεδο: ρεσεψιόν ενοποίησης δεδομένων

Η ρεσεψιόν ενοποίησης δεδομένων είναι κυρίως υπεύθυνη για τη διαχείριση των εργασιών ενοποίησης δεδομένων. Συγκεκριμένα, περιλαμβάνει ανάπτυξη εργασιών, ανάπτυξη προγραμματισμού και παρακολούθηση λειτουργίας. Αυτές οι εργασίες συνδυάζουν διάφορους ολοκληρωμένους χειριστές μέσω του DAG (Directed Acyclic Graph) για την υλοποίηση πολύπλοκων διαδικασιών επεξεργασίας δεδομένων. Η διεπαφή front-end παρέχει μια διαισθητική διεπαφή διαχείρισης εργασιών, επιτρέποντας στους χρήστες να διαμορφώνουν και να παρακολουθούν εύκολα τις εργασίες ενοποίησης δεδομένων.

Δεύτερο επίπεδο: Πλατφόρμα προγραμματισμού

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

Το τρίτο επίπεδο: υπηρεσία ενοποίησης δεδομένων

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

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

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

Διαδικασία εκτέλεσης εργασιών

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

  1. Προγραμματισμός εργασιών: Σύμφωνα με την προκαθορισμένη στρατηγική προγραμματισμού και τις εξαρτήσεις, η πλατφόρμα προγραμματισμού αναλαμβάνει τις αντίστοιχες εργασίες.
  2. Εκτέλεση εργασιών: Κατά την εκτέλεση της εργασίας, κάθε χειριστής εκτελείται με τη σειρά σύμφωνα με τη διαμόρφωση DAG της εργασίας.
  3. Συντονισμός πολλαπλών κινητήρων: Για εργασίες που περιέχουν πολλαπλούς κινητήρες (όπως εργασίες DataX και Spark hybrid), είναι απαραίτητος ο συντονισμός της λειτουργίας κάθε κινητήρα κατά τη διάρκεια της διαδικασίας εκτέλεσης για να διασφαλιστεί η ομαλή εκτέλεση της εργασίας.
Κατανομή των πόρων

Ταυτόχρονα, για να επιτρέψουμε στο DataX, μια αυτόνομη εργασία, να εκτελείται καλύτερα με κατανεμημένο τρόπο και να επιτύχουμε επαναχρησιμοποίηση πόρων, έχουμε βελτιστοποιήσει την κατανομή πόρων για την εργασία DataX:

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

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

  • πράκτορας μηχανών εκτέλεσης : Στην υπηρεσία ενοποίησης δεδομένων, ο πράκτορας διαχειρίζεται διάφορες μηχανές εκτέλεσης, όπως DataX, Spark, Flink CDC κ.λπ. Ο πράκτορας είναι υπεύθυνος για την έναρξη, τη διακοπή και την παρακολούθηση της κατάστασης των εργασιών.
  • ενοποιημένη διεπαφή: Παρέχει μια ενοποιημένη διεπαφή διαχείρισης εργασιών, έτσι ώστε οι εργασίες διαφορετικών κινητήρων να μπορούν να διαχειρίζονται μέσω της ίδιας διεπαφής, απλοποιώντας τις εργασίες λειτουργίας, συντήρησης και διαχείρισης.

αρχείο

Ορισμένα προβλήματα με την παλιά αρχιτεκτονική ενοποίησης δεδομένων

Έχουμε ενσωματώσει ορισμένα έργα ανοιχτού κώδικα, όπως DataX, Spark, Flink CDC, Filebeat κ.λπ., για να σχηματίσουμε μια ισχυρή πλατφόρμα υπηρεσιών ενοποίησης δεδομένων. Αντιμετωπίζουμε όμως και κάποια προβλήματα:

  • Περιορισμοί λειτουργίας ενός μηχανήματος: Το DataX υποστηρίζει μόνο λειτουργία ενός μηχανήματος, κάτι που απαιτεί από εμάς να εφαρμόσουμε κατανεμημένες λειτουργίες προγραμματισμού στη βάση του, γεγονός που αυξάνει την πολυπλοκότητα του συστήματος.
  • Η στοίβα τεχνολογίας είναι πολύ διαφορετική: Έχουν εισαχθεί πολλές στοίβες τεχνολογίας (όπως το Spark και το Flink) Παρόλο που είναι πλούσιες σε λειτουργίες, οδηγούν επίσης σε υψηλό κόστος έρευνας και ανάπτυξης Κάθε φορά που αναπτύσσουν νέες λειτουργίες, πρέπει να αντιμετωπίζουν ζητήματα συμβατότητας και ολοκλήρωσης πολλαπλές στοίβες τεχνολογίας.
Αρχιτεκτονική εξέλιξη

Προκειμένου να βελτιστοποιήσουμε την αρχιτεκτονική και να μειώσουμε την πολυπλοκότητα, εξελίξαμε την υπάρχουσα αρχιτεκτονική:

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

Μέσω της βελτιστοποίησης και της εξέλιξης της αρχιτεκτονικής, έχουμε λύσει με επιτυχία τα προβλήματα των περιορισμών λειτουργίας ενός μηχανήματος DataX και του υψηλού κόστους Ε&Α που προκαλούνται από πολλαπλές στοίβες τεχνολογίας.

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

Γιατί να επιλέξετε το SeaTunnel;

Η επαφή μας με το SeaTunnel μπορεί να εντοπιστεί στην περίοδο Waterdrop και έχουμε πραγματοποιήσει πολλές πρακτικές εφαρμογής για το Waterdrop.

αρχείο

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

Εδώ είναι μερικοί από τους κύριους λόγους για τους οποίους επιλέξαμε το SeaTunnel:

  1. Εξαιρετικό αρχιτεκτονικό σχέδιο
    • Το SeaTunnel έχει μια κατανεμημένη αρχιτεκτονική που λειτουργεί καλά για τις ανάγκες μας.
    • Ο σχεδιασμός API του είναι τυποποιημένος και υιοθετεί τη λειτουργία SPI (Service Provider Interface) για να διευκολύνει την επέκταση και την ενσωμάτωση.
  2. Ενεργή υποστήριξη της κοινότητας
    • Το SeaTunnel είναι ένα έργο Apache ανώτατου επιπέδου με καλή ατμόσφαιρα κοινότητας Οι ενεργές ομάδες προγραμματιστών και χρηστών παρέχουν ισχυρή υποστήριξη για την επίλυση προβλημάτων και την επέκταση λειτουργιών.
    • Το υπόβαθρο των εγχώριων έργων ανοιχτού κώδικα κάνει την επικοινωνία και τη συνεργασία μας πιο ομαλή.
  3. Πλούσια λειτουργικότητα και υποστήριξη πηγών δεδομένων
    • Το SeaTunnel υποστηρίζει πολλαπλές πηγές δεδομένων και διαθέτει πλούσιες λειτουργίες για να καλύψει τις διαφορετικές ανάγκες επεξεργασίας δεδομένων μας.
    • Υποστηρίζει CDC (Change Data Capture), επιτρέποντας τον συγχρονισμό και την επεξεργασία δεδομένων σε πραγματικό χρόνο.
    • Υποστηρίζει τη λειτουργία μετάδοσης δεδομένων ένα προς πολλά, βελτιώνοντας την ευελιξία της μετάδοσης δεδομένων.
  4. Εφαρμογή στοίβας τεχνολογίας
    • Το SeaTunnel είναι συμβατό με Java και υποστηρίζει Flink και Spark, επιτρέποντάς μας να το ενσωματώνουμε και να το εφαρμόζουμε απρόσκοπτα στην υπάρχουσα στοίβα τεχνολογίας.
    • Χρησιμοποιώντας το Debezium για τη σύλληψη δεδομένων CDC, η τεχνολογία είναι ώριμη και σταθερή.
  5. Υποστήριξη πολλαπλών κινητήρων
    • Το SeaTunnel υποστηρίζει μια ποικιλία υπολογιστικών μηχανών, συμπεριλαμβανομένων των Zeta, Flink και Spark, και μπορεί να επιλέξει τον καταλληλότερο κινητήρα για υπολογισμό σύμφωνα με συγκεκριμένες ανάγκες.
    • Αυτό είναι πολύ σημαντικό γιατί μας επιτρέπει να επιλέγουμε τη βέλτιστη λειτουργία υπολογισμού σε διαφορετικά σενάρια, βελτιώνοντας την ευελιξία και την αποτελεσματικότητα του συστήματος.
  6. Εξαιρετική απόδοση
    • Το SeaTunnel έχει σχεδιάσει μηχανισμούς βελτιστοποίησης απόδοσης, όπως δέσμευση δύο φάσεων, ανάκτηση ανοχής σφαλμάτων και κοινή χρήση νημάτων για να διασφαλίσει αποτελεσματική και σταθερή επεξεργασία δεδομένων.
Τα προβλήματα επιλύθηκαν μετά την εισαγωγή του SeaTunnel

Το SeaTunnel επιλύει τα δύο κύρια προβλήματα που αναφέραμε προηγουμένως:

  1. Κατανεμημένος προγραμματισμός
    • Το DataX μπορεί να εκτελεστεί μόνο σε ένα μόνο μηχάνημα και πρέπει να εφαρμόσουμε πρόσθετες λειτουργίες κατανεμημένου προγραμματισμού. Το SeaTunnel υποστηρίζει εγγενώς την κατανεμημένη αρχιτεκτονική Είτε χρησιμοποιεί Zeta, Flink ή Spark ως υπολογιστική μηχανή, μπορεί εύκολα να εφαρμόσει την κατανεμημένη επεξεργασία δεδομένων, απλοποιώντας σημαντικά την εργασία μας.
  2. Ενσωμάτωση στοίβας τεχνολογίας
    • Έχουμε χρησιμοποιήσει στο παρελθόν μια ποικιλία στοίβων τεχνολογίας, συμπεριλαμβανομένων των DataX, Spark, Flink CDC κ.λπ., γεγονός που έκανε το κόστος Ε&Α υψηλό και το σύστημα περίπλοκο. Ενσωματώνοντας ομοιόμορφα αυτές τις στοίβες τεχνολογίας, το SeaTunnel παρέχει μια ολοκληρωμένη πλατφόρμα που μπορεί να υποστηρίξει τόσο τις διαδικασίες ELT όσο και ETL, απλοποιώντας σημαντικά την αρχιτεκτονική του συστήματος και μειώνοντας το κόστος ανάπτυξης και συντήρησης.

Πώς να ενσωματώσετε το SeaTunnel

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

Ακολουθεί η νέα μας αρχιτεκτονική μετά την ενσωμάτωση του SeaTunnel.

αρχείο

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

Αντικατάσταση στοίβας τεχνολογίας

Σταδιακά αντικαταστήσαμε τη στοίβα παλιάς τεχνολογίας με το SeaTunnel. Τα συγκεκριμένα βήματα είναι τα εξής:

  1. Αντικατάσταση εργασιών επεξεργασίας παρτίδας: Αρχικά αντικαταστήσαμε το τμήμα της παλιάς αρχιτεκτονικής που χρησιμοποιούσε το DataX και το Spark για τη μαζική επεξεργασία ETL.
  2. Αντικατάσταση της εργασίας επεξεργασίας ροής: Στη συνέχεια, θα αντικαταστήσουμε σταδιακά το εξάρτημα χρησιμοποιώντας το Flink CDC για επεξεργασία ροής. Ακολουθώντας αυτήν την προσέγγιση βήμα προς βήμα, μπορούμε να διασφαλίσουμε ότι το σύστημα παραμένει σταθερό καθ' όλη τη διάρκεια της σταδιακής μετάβασης.
Componentized SeaTunnel Connector

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

πράκτορας εκτέλεσης εργασιών

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

Υβριδική ανάπτυξη πολλαπλών κινητήρων

Υποστηρίζουμε την ανάπτυξη υβριδικών πολλαπλών κινητήρων και μπορούμε να εκτελέσουμε ενορχήστρωση DAG με πολλούς κινητήρες σε μια εργασία προγραμματισμού στην πρώτη σελίδα. Με αυτόν τον τρόπο, μπορούμε να χρησιμοποιήσουμε διαφορετικούς κινητήρες (όπως η μηχανή SQL και η μηχανή DP) σε μία εργασία προγραμματισμού ταυτόχρονα για την ανάπτυξη εργασιών, βελτιώνοντας την ευελιξία και την επεκτασιμότητα του συστήματος.

Προβλήματα που προέκυψαν κατά την ενσωμάτωση του SeaTunnel

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

Ερώτηση 1: Διαχείριση σφαλμάτων

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

Ερώτηση 2: Αποκοπή εργασιών

Οι παλιές μας εργασίες συλλογής υλοποιήθηκαν χρησιμοποιώντας το DataX Κατά την αντικατάστασή τους με το SeaTunnel, πρέπει να λάβουμε υπόψη τα ζητήματα αποκοπής εργασιών.

Το λύνουμε με τις παρακάτω λύσεις:

  • Σχεδιασμός εξαρτημάτων : Οι εργασίες συλλογής δεδομένων μας στο μεσαίο γραφείο έχουν σχεδιαστεί με τρόπο που βασίζεται σε στοιχεία και υπάρχει ένα επίπεδο μετατροπής μεταξύ των στοιχείων του μπροστινού τμήματος και του μηχανισμού εκτέλεσης του back-end. Το frontend διαμορφώνει τη φόρμα και το backend δημιουργεί το αρχείο JSON που χρειάζεται να εκτελέσει το DataX μέσω του επιπέδου μετατροπής.
  • Παρόμοια δημιουργία αρχείων JSON : Η διαμόρφωση του SeaTunnel είναι παρόμοια με αυτή του DataX Το frontend διαμορφώνεται επίσης μέσω μιας φόρμας και το αρχείο JSON που χρειάζεται να εκτελέσει το SeaTunnel δημιουργείται στο backend. Με αυτόν τον τρόπο, μπορούμε να μεταφέρουμε απρόσκοπτα παλιές εργασίες στη νέα πλατφόρμα SeaTunnel, διασφαλίζοντας την ομαλή μετάβαση των εργασιών.
  • Μετατροπή σεναρίου SQL : Γράψτε σενάρια SQL για να καθαρίσετε και να μετατρέψετε παλιές εργασίες DataX ώστε να μπορούν να προσαρμοστούν στο SeaTunnel. Αυτή η μέθοδος είναι πιο ευέλικτη και προσαρμόσιμη, επειδή το SeaTunnel θα ενημερώνεται συχνά και η απευθείας εγγραφή σκληρού κώδικα για συμβατότητα δεν αποτελεί μακροπρόθεσμη λύση. Μέσω της μετατροπής σεναρίου, οι εργασίες μπορούν να μετεγκατασταθούν πιο αποτελεσματικά για προσαρμογή στις ενημερώσεις του SeaTunnel.
Ερώτηση 3: Διαχείριση έκδοσης

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

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

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

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

Δευτερεύουσα ανάπτυξη και πρακτική SeaTunnel

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

αρχείο

Ανακαίνιση Συνδετήρα Κυψέλης

  • Το αρχικό SeaTunnel Hive Connector βασίζεται στο Meta URL για τη λήψη μεταδεδομένων. Ωστόσο, σε πραγματικές εφαρμογές, πολλοί τρίτοι χρήστες δεν μπορούν να παρέχουν μετα-URL λόγω ζητημάτων ασφαλείας. Για να αντιμετωπίσουμε αυτήν την κατάσταση, πραγματοποιήσαμε τις ακόλουθες αλλαγές:
    • Χρησιμοποιήστε τη διεπαφή JDBC του Hive Server 2 για να λάβετε τις πληροφορίες μεταδεδομένων του πίνακα, αποφεύγοντας έτσι την εξάρτηση από τη διεύθυνση URL Meta.
  • Με αυτόν τον τρόπο, μπορούμε να παρέχουμε στους χρήστες τη δυνατότητα να διαβάζουν και να γράφουν τα δεδομένα του Hive πιο ευέλικτα, διασφαλίζοντας παράλληλα την ασφάλεια των δεδομένων.

Υποστήριξη βάσης δεδομένων Hangao

  • Η βάση δεδομένων Hangao χρησιμοποιείται ευρέως στα έργα μας, επομένως έχουμε προσθέσει υποστήριξη ανάγνωσης και γραφής πηγών δεδομένων για τη βάση δεδομένων Hangao. Ταυτόχρονα, έχουμε αναπτύξει στοιχεία μετατροπής για να καλύψουμε ορισμένες ειδικές ανάγκες της βάσης δεδομένων Hangao:
  • Υποστηρίζει πολύπλοκες λειτουργίες μετατροπής, όπως γραμμή σε στήλη και στήλη σε σειρά.
  • Έγραψε μια ποικιλία από UDF (συναρτήσεις που καθορίζονται από το χρήστη) για απευαισθητοποίηση δεδομένων και άλλες λειτουργίες.

Τροποποίηση του συνδέσμου αρχείου

  • Η εφαρμογή σύνδεσης συστήματος αρχείων παίζει σημαντικό ρόλο στη χρήση μας, επομένως έχουμε κάνει αρκετές αλλαγές σε αυτήν:
  • Υποδοχή HDFS: Προστέθηκε η λειτουργία αναδρομής καταλόγου και σάρωσης κανονικής έκφρασης αρχείων, ενώ υποστηρίζεται η ανάγνωση και η εγγραφή πολλαπλών μορφών αρχείων (όπως RC, Sequence, XML, JSON).
  • Υποδοχές FTP και SFTP: Διορθώθηκε το σφάλμα διαρροής I/O και βελτιστοποιήθηκε ο μηχανισμός προσωρινής αποθήκευσης σύνδεσης για να διασφαλιστεί η ανεξαρτησία μεταξύ διαφορετικών λογαριασμών με την ίδια IP.
Βελτιστοποίηση του μηχανισμού υποβολής δύο σταδίων

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

Περιγραφή Προβλήματος : Όταν χρησιμοποιείτε FTP και SFTP για την εγγραφή αρχείων, ένα μήνυμα σφάλματος υποδεικνύει ότι δεν υπάρχει άδεια εγγραφής. Η έρευνα διαπίστωσε ότι προκειμένου να διασφαλιστεί η συνέπεια των δεδομένων, το SeaTunnel θα γράψει πρώτα το αρχείο στον προσωρινό κατάλογο και στη συνέχεια θα το μετακινήσει.

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

λύση : Όταν δημιουργείτε έναν προσωρινό κατάλογο, ορίστε μεγαλύτερα δικαιώματα (όπως το 777) για να διασφαλίσετε ότι όλοι οι λογαριασμοί έχουν άδεια εγγραφής. Ταυτόχρονα, λύνει το πρόβλημα της αποτυχίας μετονομασίας εντολών λόγω συστημάτων διασταύρωσης αρχείων κατά τη μετακίνηση αρχείων Με τη δημιουργία ενός προσωρινού καταλόγου κάτω από το ίδιο σύστημα αρχείων, αποφεύγονται οι λειτουργίες του συστήματος μεταξύ αρχείων.

Διοίκηση δευτερογενούς ανάπτυξης

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

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

Στη διαδικασία ενσωμάτωσης του SeaTunnel, εστιάζουμε κυρίως στα ακόλουθα σημεία:

  • Βελτιστοποίηση κατανομής πόρων: Η χρήση της κατανεμημένης αρχιτεκτονικής του SeaTunnel απλοποιεί το πρόβλημα κατανομής πόρων και δεν απαιτεί πλέον πρόσθετες κατανεμημένες λειτουργίες προγραμματισμού.
  • Ενσωμάτωση στοίβας τεχνολογίας: Ενσωματώστε τις λειτουργίες διαφορετικών στοίβων τεχνολογίας όπως DataX, Spark και FlinkCDC στο SeaTunnel και ενσωματώστε τις ομοιόμορφα για να επιτύχετε την ενοποίηση των ETL και ELT.

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

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

Εμπειρία στη συμμετοχή στην κοινότητα ανοιχτού κώδικα

Στη διαδικασία συμμετοχής στο SeaTunnel, έχω τις ακόλουθες εμπειρίες:

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

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

Προσδοκίες για το SeaTunnel

Τέλος, θα ήθελα να μοιραστώ μερικές προσδοκίες για το SeaTunnel:

αρχείο

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

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

Αυτό το άρθρο είναι γραμμένο από Beluga Open Source Technology Διατίθεται υποστήριξη εκδόσεων!