Βίντεο: MSc. in Hydraulic Engineering-Democritus University of Thrace-3" Parshall Flume 8 2024
Μερικά από τα δεδομένα που καταλήγουν στο σύστημα κατανομής αρχείων Hadoop (HDFS) ενδέχεται να προσγειωθούν εκεί μέσω λειτουργιών φόρτωσης βάσης δεδομένων ή άλλων τύπων διαδικασιών παρτίδας. αν θέλετε να καταγράψετε τα δεδομένα που ρέουν σε ροές δεδομένων υψηλής απόδοσης, όπως δεδομένα καταγραφής εφαρμογών; Apache Flume είναι ο τρέχων κανονικός τρόπος για να το κάνετε αυτό εύκολα, αποτελεσματικά και με ασφάλεια.
Το Apache Flume , ένα άλλο έργο κορυφαίου επιπέδου από το Apache Software Foundation, είναι ένα κατανεμημένο σύστημα για τη συγκέντρωση και μεταφορά μεγάλων ποσοτήτων δεδομένων ροής από διαφορετικές πηγές σε ένα κεντρικό κατάστημα δεδομένων.
Με άλλο τρόπο, το Flume είναι σχεδιασμένο για συνεχή λήψη δεδομένων σε HDFS. Τα δεδομένα μπορούν να είναι οποιουδήποτε είδους δεδομένα, αλλά το Flume είναι ιδιαίτερα κατάλληλο για τον χειρισμό δεδομένων καταγραφής, όπως τα δεδομένα καταγραφής από διακομιστές ιστού. Οι μονάδες των δεδομένων που οι διαδικασίες Flume ονομάζονται συμβάντα . ένα παράδειγμα ενός συμβάντος είναι ένα αρχείο καταγραφής.
Για να κατανοήσετε τον τρόπο λειτουργίας του Flume σε ένα σύμπλεγμα Hadoop, πρέπει να ξέρετε ότι το Flume λειτουργεί ως ένας ή περισσότεροι πράκτορες και ότι κάθε πράκτορας έχει τρία εξαρτήματα που μπορούν να συνδεθούν: πηγές, κανάλια και νεροχύτες:
-
Πηγές να ανακτήσετε τα δεδομένα και να τα στείλετε στα κανάλια.
-
Κανάλια κατέχουν ουρές δεδομένων και χρησιμεύουν ως αγωγοί μεταξύ πηγών και νεροχύτη, κάτι που είναι χρήσιμο όταν η εισερχόμενη παροχή υπερβαίνει την εξερχόμενη παροχή.
-
Βυθίζει τα δεδομένα επεξεργασίας που λήφθηκαν από τα κανάλια και τα έδωσαν σε έναν προορισμό, όπως το HDFS.
Ένας πράκτορας πρέπει να έχει τουλάχιστον ένα από κάθε στοιχείο που πρέπει να εκτελεστεί και κάθε πράκτορας να περιέχεται στο δικό του παράδειγμα του Java Virtual Machine (JVM).
Ένα συμβάν που γράφεται σε ένα κανάλι από μια πηγή δεν αφαιρείται από αυτό το κανάλι μέχρι να απομακρυνθεί ένας νεροχύτης από μια συναλλαγή. Σε περίπτωση αποτυχίας δικτύου, τα κανάλια διατηρούν τα συμβάντα τους σε ουρά μέχρι να τα καταγράψουν οι νεροχύτες στο σύμπλεγμα. Ένα κανάλι εντός της μνήμης μπορεί να επεξεργάζεται τα συμβάντα γρήγορα, αλλά είναι πτητικό και δεν μπορεί να ανακτηθεί, ενώ ένα κανάλι που βασίζεται σε αρχεία προσφέρει επιμονή και μπορεί να ανακτηθεί σε περίπτωση αποτυχίας.
Κάθε παράγοντας μπορεί να έχει πολλές πηγές, κανάλια και νεροχύτες και παρόλο που μια πηγή μπορεί να γράψει σε πολλά κανάλια, ένας νεροχύτης μπορεί να πάρει δεδομένα από ένα μόνο κανάλι.
Ένας πράκτορας είναι απλώς ένα JVM που τρέχει Flume και οι νεροχύτες για κάθε κόμβο παράγοντα στο cluster Hadoop στέλνουν δεδομένα σε κόμβους συλλογής , οι οποίοι συγκεντρώνουν τα δεδομένα από πολλούς πράκτορες πριν εγγράφοντάς το σε HDFS, όπου μπορεί να αναλυθεί με άλλα εργαλεία Hadoop. Οι πράκτορες μπορούν να συνδεθούν μεταξύ τους έτσι ώστε ο νεροχύτης από έναν πράκτορα να στέλνει δεδομένα στην πηγή από άλλο πράκτορα.Το Avro, το πλαίσιο απομακρυσμένης κλήσης και σειριοποίησης του Apache, είναι ο συνηθισμένος τρόπος αποστολής δεδομένων μέσω δικτύου με το Flume, επειδή χρησιμεύει ως χρήσιμο εργαλείο για την αποδοτική σειριοποίηση ή μετατροπή των δεδομένων σε συμπαγή δυαδική μορφή.
Στο πλαίσιο του Flume, η συμβατότητα είναι σημαντική: Ένα συμβάν Avro απαιτεί μια πηγή Avro, για παράδειγμα, και ένα νεροχύτη πρέπει να παραδώσει συμβάντα που είναι κατάλληλα για τον προορισμό.
Αυτό που κάνει αυτή τη μεγάλη αλυσίδα πηγών, καναλιών και νεροχυτών να λειτουργεί είναι η διαμόρφωση του παράγοντα Flume, η οποία αποθηκεύεται σε ένα τοπικό αρχείο κειμένου που είναι δομημένο σαν ένα αρχείο ιδιοτήτων Java. Μπορείτε να διαμορφώσετε πολλούς πράκτορες στο ίδιο αρχείο. Κοιτάξτε ένα δείγμα αρχείου, το οποίο ονομάζεται ουίσκι-πράκτορας. conf - έχει ρυθμιστεί να διαμορφώνει έναν πράκτορα που ονομάζεται shaman:
# Προσδιορίστε τα συστατικά του shaman agent: shaman. πηγές = netcat_s1 shaman. νεροχύτες = hdfs_w1 σαμάν. κανάλια = in-mem_c1 # Διαμορφώστε την πηγή: shaman. πηγές. netcat_s1. πληκτρολογήστε = netcat shaman. πηγές. netcat_s1. bind = τοπικός shaman. πηγές. netcat_s1. θύρα = 44444 # Περιγράψτε το νεροχύτη: shaman. νεροχύτες. hdfs_w1. type = hdfs shaman. νεροχύτες. hdfs_w1. hdfs. path = hdfs: // shaman. νεροχύτες. hdfs_w1. hdfs. writeFormat = Κείμενο σαμάν. νεροχύτες. hdfs_w1. hdfs. fileType = DataStream # Διαμορφώστε ένα κανάλι που ρυθμίζει τα γεγονότα στη μνήμη: shaman. κανάλια. in-mem_c1. πληκτρολογήστε = shaman μνήμης. κανάλια. in-mem_c1. χωρητικότητα = 20000 shaman. κανάλια. in-mem_c1. transactionCapacity = 100 # Συνδέστε την πηγή και το νεροχύτη στο κανάλι: shaman. πηγές. netcat_s1. κανάλια = in-mem_c1 shaman. νεροχύτες. hdfs_w1. channels = in-mem_c1
Το αρχείο διαμόρφωσης περιλαμβάνει ιδιότητες για κάθε πηγή, κανάλι και νεροχύτη στον πράκτορα και καθορίζει τον τρόπο με τον οποίο είναι συνδεδεμένοι. Σε αυτό το παράδειγμα, ο shaman πράκτορας έχει μια πηγή που ακούει τα δεδομένα (μηνύματα στο netcat) στη θύρα 44444, ένα κανάλι που αποθηκεύει δεδομένα γεγονότων στη μνήμη και ένα νεροχύτη που καταγράφει δεδομένα συμβάντων στην κονσόλα.
Αυτό το αρχείο ρυθμίσεων θα μπορούσε να χρησιμοποιηθεί για τον ορισμό διαφόρων παραγόντων. εδώ, ρυθμίζετε μόνο ένα για να κρατάτε τα πράγματα απλά.
Για να ξεκινήσετε τον παράγοντα, χρησιμοποιήστε ένα script κελύφους που ονομάζεται flume-ng, το οποίο βρίσκεται στον κατάλογο bin της κατανομής Flume. Από τη γραμμή εντολών, εκδώστε την εντολή agent, καθορίζοντας τη διαδρομή στο αρχείο διαμόρφωσης και το όνομα του παράγοντα.
Η ακόλουθη εντολή δείγματος ξεκινά τον πράκτορα Flume:
flume-ng agent -f / -n shaman
Το αρχείο καταγραφής του πράκτορα Flume πρέπει να έχει καταχωρήσεις που επαληθεύουν ότι η πηγή, το κανάλι και ο νεροχύτης ξεκίνησαν με επιτυχία.
Για να δοκιμάσετε περαιτέρω τη διαμόρφωση, μπορείτε να μεταφέρετε το telnet στη θύρα 44444 από άλλο τερματικό και να στείλετε το Flume ένα συμβάν εισάγοντας μια αυθαίρετη συμβολοσειρά κειμένου. Εάν όλα πάνε καλά, το αρχικό τερματικό Flume θα εκπέμψει το συμβάν σε ένα μήνυμα καταγραφής που θα πρέπει να μπορείτε να δείτε στο αρχείο καταγραφής του πράκτορα.