Apache Oozie Tutorial: What is, Workflow, Example – Hadoop
Τι είναι το OOZIE;
Το Apache Oozie είναι ένας προγραμματιστής ροής εργασιών για το Hadoop. Είναι ένα σύστημα που τρέχει τη ροή εργασίας των εξαρτημένων εργασιών. Εδώ, οι χρήστες επιτρέπεται να δημιουργούν Σκηνοθετημένα Ακυκλικά Γραφήματα ροών εργασίας, οι οποίες μπορούν να εκτελεστούν παράλληλα και διαδοχικά στο Hadoop.
Αποτελείται από δύο μέρη:
-
Μηχανή ροής εργασιών: Η ευθύνη μιας μηχανής ροής εργασιών είναι να αποθηκεύει και να εκτελεί ροές εργασίας που αποτελούνται από εργασίες Hadoop, π.χ. MapReduce, Pig, Hive.
- Κινητήρας συντονιστής: Εκτελεί εργασίες ροής εργασίας με βάση προκαθορισμένα χρονοδιαγράμματα και διαθεσιμότητα δεδομένων.
Το Oozie είναι επεκτάσιμο και μπορεί να διαχειριστεί την έγκαιρη εκτέλεση χιλιάδων ροών εργασιών (η καθεμία αποτελείται από δεκάδες εργασίες) σε ένα σύμπλεγμα Hadoop.
Ο Oozie είναι επίσης πολύ ευέλικτος. Κάποιος μπορεί εύκολα να ξεκινήσει, να σταματήσει, να αναστείλει και να ξανατρέξει εργασίες. Το Oozie διευκολύνει την επανάληψη των αποτυχημένων ροών εργασίας. Μπορεί κανείς εύκολα να καταλάβει πόσο δύσκολο μπορεί να είναι να καλυφθούν οι χαμένες ή αποτυχημένες εργασίες λόγω διακοπής λειτουργίας ή αποτυχίας. Είναι ακόμη δυνατό να παραλείψετε έναν συγκεκριμένο αποτυχημένο κόμβο.
Πώς λειτουργεί το OOZIE;
Το Oozie εκτελείται ως υπηρεσία στο σύμπλεγμα και οι πελάτες υποβάλλουν ορισμούς ροής εργασίας για άμεση ή μεταγενέστερη επεξεργασία.
Η ροή εργασίας του Oozie αποτελείται από κόμβους δράσης και κόμβους ελέγχου-ροής.
An κόμβος δράσης αντιπροσωπεύει μια εργασία ροής εργασίας, π.χ. μετακίνηση αρχείων σε HDFS, εκτέλεση MapReduce, Pig ή Κυψέλη εργασίες, εισαγωγή δεδομένων χρησιμοποιώντας Sqoop ή εκτέλεση σεναρίου φλοιού ενός προγράμματος γραμμένου σε Java.
A κόμβος ελέγχου-ροής ελέγχει την εκτέλεση της ροής εργασίας μεταξύ των ενεργειών επιτρέποντας δομές όπως η λογική υπό όρους όπου μπορούν να ακολουθηθούν διαφορετικοί κλάδοι ανάλογα με το αποτέλεσμα προηγούμενου κόμβου ενέργειας.
Έναρξη Κόμβου, Τελικός κόμβος, να Κόμβος σφάλματος εμπίπτουν σε αυτήν την κατηγορία κόμβων.
Κόμβος εκκίνησης, υποδηλώνει την έναρξη της εργασίας ροής εργασίας.
Τελικός κόμβος, σηματοδοτεί το τέλος της εργασίας.
Κόμβος σφάλματος δηλώνει την εμφάνιση σφάλματος και το αντίστοιχο μήνυμα σφάλματος προς εκτύπωση.
Στο τέλος της εκτέλεσης μιας ροής εργασίας, η επιστροφή κλήσης HTTP χρησιμοποιείται από το Oozie για να ενημερώσει τον πελάτη με την κατάσταση ροής εργασίας. Η είσοδος ή η έξοδος από έναν κόμβο δράσης μπορεί επίσης να ενεργοποιήσει την επανάκληση.
Παράδειγμα διαγράμματος ροής εργασίας
Συσκευασία και ανάπτυξη μιας εφαρμογής ροής εργασίας Oozie
Μια εφαρμογή ροής εργασίας αποτελείται από τον ορισμό της ροής εργασίας και όλους τους σχετικούς πόρους, όπως αρχεία MapReduce Jar, scripts Pig κ.λπ. Οι εφαρμογές πρέπει να ακολουθούν μια απλή δομή καταλόγου και να αναπτύσσονται σε ΚΑΕ ώστε ο Oozie να έχει πρόσβαση σε αυτά.
Ένα παράδειγμα δομής καταλόγου φαίνεται παρακάτω-
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Είναι απαραίτητο να διατηρήσετε το workflow.xml (ένα αρχείο ορισμού ροής εργασίας) στον κατάλογο ανώτατου επιπέδου (γονικός κατάλογος με όνομα ροής εργασίας). Ο κατάλογος Lib περιέχει αρχεία Jar που περιέχουν κλάσεις MapReduce. Η εφαρμογή ροής εργασίας που συμμορφώνεται με αυτήν τη διάταξη μπορεί να κατασκευαστεί με οποιοδήποτε εργαλείο κατασκευής, π.χ., Ant ή Maven.
Μια τέτοια έκδοση πρέπει να αντιγραφεί στο HDFS χρησιμοποιώντας μια εντολή, για παράδειγμα –
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Βήματα για την εκτέλεση μιας εργασίας ροής εργασίας Oozie
Σε αυτήν την ενότητα, θα δούμε πώς να εκτελέσετε μια εργασία ροής εργασίας. Για να το εκτελέσουμε, θα χρησιμοποιήσουμε το εργαλείο γραμμής εντολών Oozie (πρόγραμμα πελάτη που επικοινωνεί με τον διακομιστή Oozie).
1. Εξαγωγή μεταβλητής περιβάλλοντος OOZIE_URL που λέει στην εντολή oozie ποιο διακομιστή Oozie να χρησιμοποιήσει (εδώ χρησιμοποιούμε έναν που εκτελείται τοπικά):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Εκτελέστε την εργασία ροής εργασίας χρησιμοποιώντας-
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Η επιλογή -config αναφέρεται σε τοπικό Java το αρχείο ιδιοτήτων που περιέχει ορισμούς για τις παραμέτρους στο αρχείο XML ροής εργασίας, καθώς και το oozie.wf.application.path, το οποίο λέει στο Oozie τη θέση της εφαρμογής ροής εργασίας στο HDFS.
Παράδειγμα περιεχομένων του αρχείου ιδιοτήτων:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Αποκτήστε την κατάσταση της εργασίας ροής εργασίας-
Η κατάσταση της εργασίας ροής εργασίας μπορεί να φανεί χρησιμοποιώντας την υποεντολή 'job' με την επιλογή '-info' και προσδιορίζοντας το αναγνωριστικό εργασίας μετά το '-info'.
e.g., % oozie job -info <job id>
Η έξοδος δείχνει την κατάσταση που είναι μία από τις RUNNING, KILLED ή SUCCEEDED.
4. Τα αποτελέσματα της επιτυχούς εκτέλεσης ροής εργασίας μπορούν να προβληθούν χρησιμοποιώντας την εντολή Hadoop όπως-
% hadoop fs -cat <location of result>
Γιατί να χρησιμοποιήσετε το Oozie;
Ο κύριος σκοπός της χρήσης του Oozie είναι η διαχείριση διαφορετικών τύπων εργασιών που υποβάλλονται σε επεξεργασία στο σύστημα Hadoop.
Οι εξαρτήσεις μεταξύ των εργασιών καθορίζονται από έναν χρήστη με τη μορφή Κατευθυνόμενων Ακυκλικών Γραφημάτων. Το Oozie καταναλώνει αυτές τις πληροφορίες και φροντίζει για την εκτέλεσή τους με τη σωστή σειρά, όπως καθορίζεται σε μια ροή εργασίας. Με αυτόν τον τρόπο εξοικονομείται ο χρόνος του χρήστη για τη διαχείριση της πλήρους ροής εργασιών. Επιπλέον, το Oozie έχει μια διάταξη για τον καθορισμό της συχνότητας εκτέλεσης μιας συγκεκριμένης εργασίας.
Χαρακτηριστικά του Oozie
- Το Oozie διαθέτει API πελάτη και διεπαφή γραμμής εντολών που μπορεί να χρησιμοποιηθεί για την εκκίνηση, τον έλεγχο και την παρακολούθηση εργασιών από Java . To
- Χρησιμοποιώντας τα API του Web Service μπορεί κανείς να ελέγξει εργασίες από οπουδήποτε.
- Το Oozie έχει πρόβλεψη για την εκτέλεση εργασιών που έχουν προγραμματιστεί να εκτελούνται περιοδικά.
- Το Oozie έχει πρόβλεψη για αποστολή ειδοποιήσεων μέσω email μετά την ολοκλήρωση των εργασιών.