Apache Bigtop και επιλογή διανομής Hadoop σήμερα

Apache Bigtop και επιλογή διανομής Hadoop σήμερα

Μάλλον δεν είναι μυστικό ότι η περασμένη χρονιά ήταν μια χρονιά μεγάλων αλλαγών για τον Apache Hadoop. Πέρυσι συγχωνεύτηκαν η Cloudera και η Hortonworks (ουσιαστικά η εξαγορά της τελευταίας) και η Mapr, λόγω σοβαρών οικονομικών προβλημάτων, πουλήθηκε στη Hewlett Packard. Και αν μερικά χρόνια νωρίτερα, στην περίπτωση των εγκαταστάσεων επί τόπου, έπρεπε συχνά να γίνει η επιλογή μεταξύ Cloudera και Hortonworks, σήμερα, δυστυχώς, δεν έχουμε αυτή την επιλογή. Μια άλλη έκπληξη ήταν το γεγονός ότι η Cloudera ανακοίνωσε τον Φεβρουάριο του τρέχοντος έτους ότι θα σταματήσει να κυκλοφορεί δυαδικές συναρμολογήσεις της διανομής της στο δημόσιο αποθετήριο και είναι πλέον διαθέσιμες μόνο μέσω συνδρομής επί πληρωμή. Φυσικά, εξακολουθεί να είναι δυνατή η λήψη των πιο πρόσφατων εκδόσεων CDH και HDP που κυκλοφόρησαν πριν από το τέλος του 2019 και η υποστήριξη τους αναμένεται για ένα έως δύο χρόνια. Τι να κάνουμε όμως μετά; Για όσους πλήρωσαν προηγουμένως για μια συνδρομή, τίποτα δεν έχει αλλάξει. Και για όσους δεν θέλουν να μεταβούν στην πληρωμένη έκδοση της διανομής, αλλά ταυτόχρονα θέλουν να μπορούν να λαμβάνουν τις πιο πρόσφατες εκδόσεις των στοιχείων του συμπλέγματος, καθώς και ενημερώσεις κώδικα και άλλες ενημερώσεις, έχουμε ετοιμάσει αυτό το άρθρο. Σε αυτό θα εξετάσουμε πιθανές επιλογές για να βγούμε από αυτήν την κατάσταση.

Το άρθρο είναι περισσότερο μια κριτική. Δεν θα περιέχει σύγκριση διανομών και λεπτομερή ανάλυσή τους και δεν θα υπάρχουν συνταγές για την εγκατάσταση και τη διαμόρφωσή τους. Τι θα συμβεί? Θα μιλήσουμε εν συντομία για μια τέτοια διανομή όπως η Arenadata Hadoop, η οποία δικαιωματικά αξίζει την προσοχή μας λόγω της διαθεσιμότητάς της, η οποία είναι πολύ σπάνια σήμερα. Και μετά θα μιλήσουμε για το Vanilla Hadoop, κυρίως για το πώς μπορεί να «μαγειρευτεί» χρησιμοποιώντας το Apache Bigtop. Ετοιμος? Τότε καλώς ήρθατε στη γάτα.

Arenadata Hadoop

Apache Bigtop και επιλογή διανομής Hadoop σήμερα

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

Περισσότερες πληροφορίες μπορείτε να βρείτε στο επίσημο Σε απευθείας σύνδεση έργο. Οι πιο πρόσφατες εκδόσεις της διανομής βασίζονται στο Hadoop 3.1.2 για την έκδοση 3 και στο 2.8.5 για την έκδοση 2.

Μπορείτε να βρείτε πληροφορίες σχετικά με τον οδικό χάρτη εδώ.

Apache Bigtop και επιλογή διανομής Hadoop σήμερα
Διεπαφή Διαχείρισης συμπλέγματος Arenadata

Το βασικό προϊόν της Arenadata είναι Arenadata Cluster Manager (ADCM), το οποίο χρησιμοποιείται για την εγκατάσταση, τη διαμόρφωση και την παρακολούθηση διαφόρων λύσεων λογισμικού της εταιρείας. Το ADCM διανέμεται δωρεάν και η λειτουργικότητά του επεκτείνεται με την προσθήκη δεσμίδων, τα οποία είναι ένα σύνολο από ansible-playbooks. Τα πακέτα χωρίζονται σε δύο τύπους: επιχείρηση και κοινότητα. Τα τελευταία είναι διαθέσιμα για δωρεάν λήψη από τον ιστότοπο Arenadata. Είναι επίσης δυνατό να αναπτύξετε το δικό σας πακέτο και να το συνδέσετε στο ADCM.

Για την ανάπτυξη και τη διαχείριση του Hadoop 3, προσφέρεται μια κοινοτική έκδοση του πακέτου σε συνδυασμό με το ADCM, αλλά για το Hadoop 2 υπάρχει μόνο Απάτσι Αμπάρι ως εναλλακτική. Όσον αφορά τα αποθετήρια με πακέτα, είναι ανοιχτά σε δημόσια πρόσβαση, μπορούν να ληφθούν και να εγκατασταθούν με τον συνήθη τρόπο για όλα τα στοιχεία του συμπλέγματος. Συνολικά, η διανομή φαίνεται πολύ ενδιαφέρουσα. Είμαι σίγουρος ότι θα υπάρξουν εκείνοι που είναι συνηθισμένοι σε λύσεις όπως το Cloudera Manager και το Ambari, και που θα τους αρέσει το ίδιο το ADCM. Για κάποιους, θα είναι επίσης ένα τεράστιο συν ότι η διανομή περιλαμβάνονται στο μητρώο λογισμικού για υποκατάσταση εισαγωγής.

Αν μιλάμε για τα μειονεκτήματα, θα είναι τα ίδια όπως για όλες τις άλλες διανομές Hadoop. Και συγκεκριμένα:

  • Το λεγόμενο “vendor lock-in”. Χρησιμοποιώντας τα παραδείγματα των Cloudera και Hortonworks, έχουμε ήδη συνειδητοποιήσει ότι υπάρχει πάντα ο κίνδυνος αλλαγής της εταιρικής πολιτικής.
  • Σημαντική υστέρηση έναντι του Apache ανάντη.

Vanilla Hadoop

Apache Bigtop και επιλογή διανομής Hadoop σήμερα

Όπως γνωρίζετε, το Hadoop δεν είναι ένα μονολιθικό προϊόν, αλλά, στην πραγματικότητα, ένας ολόκληρος γαλαξίας υπηρεσιών γύρω από το κατανεμημένο σύστημα αρχείων HDFS. Λίγα άτομα θα έχουν αρκετό από ένα σύμπλεγμα αρχείων. Μερικοί χρειάζονται Hive, άλλοι Presto, και μετά είναι το HBase και το Phoenix· το Spark χρησιμοποιείται όλο και περισσότερο. Για ενορχήστρωση και φόρτωση δεδομένων, μερικές φορές βρίσκονται οι Oozie, Sqoop και Flume. Και αν προκύψει θέμα ασφάλειας, τότε έρχεται αμέσως στο μυαλό ο Kerberos σε συνδυασμό με τον Ranger.

Οι δυαδικές εκδόσεις των στοιχείων Hadoop είναι διαθέσιμες στον ιστότοπο καθενός από τα έργα οικοσυστήματος με τη μορφή tarballs. Μπορείτε να τα κατεβάσετε και να ξεκινήσετε την εγκατάσταση, αλλά με μια προϋπόθεση: εκτός από την ανεξάρτητη συναρμολόγηση πακέτων από "ακατέργαστα" δυαδικά αρχεία, που πιθανότατα θέλετε να κάνετε, δεν θα έχετε καμία εμπιστοσύνη στη συμβατότητα των ληφθέντων εκδόσεων στοιχείων με κάθε άλλα. Η προτιμώμενη επιλογή είναι να δημιουργήσετε χρησιμοποιώντας το Apache Bigtop. Το Bigtop θα σας επιτρέψει να δημιουργήσετε από αποθετήρια Apache maven, να εκτελέσετε δοκιμές και να δημιουργήσετε πακέτα. Αλλά, αυτό που είναι πολύ σημαντικό για εμάς, το Bigtop θα συναρμολογήσει εκείνες τις εκδόσεις εξαρτημάτων που θα είναι συμβατά μεταξύ τους. Θα μιλήσουμε για αυτό πιο αναλυτικά παρακάτω.

Apache Bigtop

Apache Bigtop και επιλογή διανομής Hadoop σήμερα

Το Apache Bigtop είναι ένα εργαλείο για την κατασκευή, τη συσκευασία και τη δοκιμή πολλών
έργα ανοιχτού κώδικα, όπως το Hadoop και το Greenplum. Το Bigtop έχει πολλά
εκδόσεις. Κατά τη στιγμή της σύνταξης, η τελευταία σταθερή έκδοση ήταν η έκδοση 1.4,
και στο master ήταν 1.5. Διαφορετικές εκδόσεις εκδόσεων χρησιμοποιούν διαφορετικές εκδόσεις
συστατικά. Για παράδειγμα, για 1.4 τα στοιχεία πυρήνα Hadoop έχουν έκδοση 2.8.5 και σε κύρια
2.10.0. Η σύνθεση των υποστηριζόμενων εξαρτημάτων αλλάζει επίσης. Κάτι ξεπερασμένο και
το μη ανανεώσιμο φεύγει, και στη θέση του έρχεται κάτι νέο, πιο σε ζήτηση και
δεν είναι απαραίτητα κάτι από την ίδια την οικογένεια των Απάτσι.

Επιπλέον, το Bigtop έχει πολλά πιρούνια.

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

Ως teaser, όσοι κάποτε ενδιαφέρθηκαν για έργα του σύμπαντος του Linux όπως το Gentoo και το LFS μπορεί να θεωρήσουν νοσταλγικά ευχάριστο να δουλέψουν με αυτό το πράγμα και να θυμηθούν εκείνες τις «επικές» στιγμές που εμείς οι ίδιοι αναζητούσαμε (ή ακόμα και γράφαμε) ebuild και ανακατασκεύαζε τακτικά το Mozilla με νέες ενημερώσεις κώδικα.

Το μεγάλο πλεονέκτημα του Bigtop είναι το άνοιγμα και η ευελιξία των εργαλείων στα οποία βασίζεται. Βασίζεται στους Gradle και Apache Maven. Το Gradle είναι αρκετά γνωστό ως το εργαλείο που χρησιμοποιεί η Google για την κατασκευή Android. Είναι ευέλικτο και, όπως λένε, «δοκιμασμένο στη μάχη». Το Maven είναι ένα τυπικό εργαλείο για την κατασκευή έργων στον ίδιο τον Apache και δεδομένου ότι τα περισσότερα από τα προϊόντα του κυκλοφορούν μέσω του Maven, δεν θα μπορούσε να γίνει χωρίς αυτό ούτε εδώ. Αξίζει να δώσετε προσοχή στο POM (μοντέλο αντικειμένου έργου) - το "θεμελιώδες" αρχείο xml που περιγράφει όλα όσα είναι απαραίτητα για να εργαστεί ο Maven με το έργο σας, γύρω από το οποίο χτίζονται όλες οι εργασίες. Ακριβώς στο
μέρη του Maven και υπάρχουν μερικά εμπόδια που συνήθως συναντούν οι χρήστες του Bigtop για πρώτη φορά.

Πρακτική

Λοιπόν από πού πρέπει να ξεκινήσετε; Μεταβείτε στη σελίδα λήψης και κατεβάστε την πιο πρόσφατη σταθερή έκδοση ως αρχείο. Μπορείτε επίσης να βρείτε δυαδικά αντικείμενα που συλλέγονται από το Bigtop εκεί. Παρεμπιπτόντως, μεταξύ των κοινών διαχειριστών πακέτων, υποστηρίζονται το YUM και το APT.

Εναλλακτικά, μπορείτε να κάνετε λήψη της πιο πρόσφατης σταθερής έκδοσης απευθείας από
github:

$ git clone --branch branch-1.4 https://github.com/apache/bigtop.git

Κλωνοποίηση στο «bigtop»…

remote: Enumerating objects: 46, done.
remote: Counting objects: 100% (46/46), done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 40217 (delta 14), reused 10 (delta 1), pack-reused 40171
Получение объектов: 100% (40217/40217), 43.54 MiB | 1.05 MiB/s, готово.
Определение изменений: 100% (20503/20503), готово.
Updating files: 100% (1998/1998), готово.

Ο κατάλογος ./bigtop που προκύπτει μοιάζει με αυτό:

./bigtop-bigpetstore — εφαρμογές επίδειξης, συνθετικά παραδείγματα
./bigtop-ci - Εργαλεία CI, jenkins
./bigtop-data-generators — παραγωγή δεδομένων, συνθετικά, για δοκιμές καπνού κ.λπ.
./bigtop-deploy - εργαλεία ανάπτυξης
./bigtop-packages — ρυθμίσεις παραμέτρων, σενάρια, ενημερώσεις κώδικα για συναρμολόγηση, το κύριο μέρος του εργαλείου
./bigtop-test-framework — πλαίσιο δοκιμών
./bigtop-tests — οι ίδιες οι δοκιμές, το φορτίο και ο καπνός
./bigtop_toolchain — περιβάλλον συναρμολόγησης, προετοιμασία του περιβάλλοντος για να λειτουργήσει το εργαλείο
./build — δημιουργία καταλόγου εργασίας
./dl — κατάλογος για πηγές λήψης
./docker — δημιουργία εικόνων docker, δοκιμές
./gradle - gradle config
./output – τον ​​κατάλογο όπου πηγαίνουν τα τεχνουργήματα κατασκευής
./provisioner — παροχή

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

Ο υποκατάλογος παρουσιάζει επίσης μεγάλο ενδιαφέρον ./bigtop/bigtop-packages, που σχετίζεται άμεσα με τη διαδικασία συναρμολόγησης εξαρτημάτων και συσκευασιών με αυτά.

Λοιπόν, κατεβάσαμε το αρχείο, το αποσυσκευάσαμε ή φτιάξαμε έναν κλώνο από το github, μπορούμε να ξεκινήσουμε τη δημιουργία;

Όχι, ας προετοιμάσουμε πρώτα το περιβάλλον.

Προετοιμασία του Περιβάλλοντος

Και εδώ χρειαζόμαστε μια μικρή υποχώρηση. Για να δημιουργήσετε σχεδόν οποιοδήποτε περισσότερο ή λιγότερο περίπλοκο προϊόν, χρειάζεστε ένα συγκεκριμένο περιβάλλον - στην περίπτωσή μας, αυτό είναι το JDK, οι ίδιες κοινόχρηστες βιβλιοθήκες, αρχεία κεφαλίδων κ.λπ., εργαλεία, για παράδειγμα, ant, ivy2 και πολλά άλλα. Μία από τις επιλογές για να αποκτήσετε το περιβάλλον που χρειάζεστε για το Bigtop είναι να εγκαταστήσετε τα απαραίτητα στοιχεία στον κεντρικό υπολογιστή κατασκευής. Μπορεί να κάνω λάθος στη χρονολογία, αλλά φαίνεται ότι με την έκδοση 1.0 υπήρχε επίσης μια επιλογή δημιουργίας προρυθμισμένων και προσβάσιμων εικόνων Docker, τις οποίες μπορείτε να βρείτε εδώ.

Όσο για την προετοιμασία του περιβάλλοντος, υπάρχει ένας βοηθός για αυτό - Μαριονέτα.

Μπορείτε να χρησιμοποιήσετε τις ακόλουθες εντολές, που εκτελούνται από τον ριζικό κατάλογο
εργαλείο, ./bigtop:

./gradlew toolchain
./gradlew toolchain-devtools
./gradlew toolchain-puppetmodules

Ή απευθείας μέσω μαριονέτας:

puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::installer"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::deployment-tools"
puppet apply --modulepath=<path_to_bigtop> -e "include bigtop_toolchain::development-tools"

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

συνέλευση

Τι μπορούμε να προσπαθήσουμε να συλλέξουμε; Η απάντηση σε αυτή την ερώτηση θα δοθεί από την έξοδο της εντολής

./gradlew tasks

Στην ενότητα Package tasks υπάρχει ένας αριθμός προϊόντων που είναι τελικά τεχνουργήματα του Bigtop.
Μπορούν να αναγνωριστούν με το επίθημα -rpm ή -pkg-ind (στην περίπτωση του κτιρίου
στο docker). Στην περίπτωσή μας, το πιο ενδιαφέρον είναι το Hadoop.

Ας προσπαθήσουμε να δημιουργήσουμε στο περιβάλλον του διακομιστή κατασκευής μας:

./gradlew hadoop-rpm

Το ίδιο το Bigtop θα κατεβάσει τις απαραίτητες πηγές που απαιτούνται για ένα συγκεκριμένο στοιχείο και θα ξεκινήσει τη συναρμολόγηση. Έτσι, η λειτουργία του εργαλείου εξαρτάται από τα αποθετήρια Maven και άλλες πηγές, δηλαδή απαιτεί πρόσβαση στο Διαδίκτυο.

Κατά τη λειτουργία, παράγεται τυπική έξοδος. Μερικές φορές αυτό και τα μηνύματα σφάλματος μπορούν να σας βοηθήσουν να καταλάβετε τι πήγε στραβά. Και μερικές φορές χρειάζεται να λάβετε πρόσθετες πληροφορίες. Σε αυτή την περίπτωση αξίζει να προσθέσουμε επιχειρήματα --info ή --debug, και μπορεί επίσης να είναι χρήσιμο –stacktrace. Υπάρχει ένας βολικός τρόπος για να δημιουργήσετε ένα σύνολο δεδομένων για μετέπειτα πρόσβαση σε λίστες αλληλογραφίας, το κλειδί --scan.

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

Συχνά τα σφάλματα είναι συνέπεια της αδυναμίας απόκτησης οποιωνδήποτε εξαρτημάτων που είναι απαραίτητα για τη συναρμολόγηση. Συνήθως, μπορείτε να διορθώσετε το πρόβλημα δημιουργώντας μια ενημέρωση κώδικα για να διορθώσετε κάτι στις πηγές, για παράδειγμα, διευθύνσεις στο pom.xml στον ριζικό κατάλογο των πηγών. Αυτό γίνεται δημιουργώντας και τοποθετώντας το στον κατάλληλο κατάλογο ./bigtop/bigtop-packages/src/common/oozie/ patch, για παράδειγμα, στη φόρμα patch2-fix.diff.

--- a/pom.xml
+++ b/pom.xml
@@ -136,7 +136,7 @@
<repositories>
<repository>
<id>central</id>
- <url>http://repo1.maven.org/maven2</url>
+ <url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>

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

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

./gradlew hadoop-clean
> Task :hadoop_vardefines
> Task :hadoop-clean
BUILD SUCCESSFUL in 5s
2 actionable tasks: 2 executed

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

./gradlew -POS=centos-7 -Pprefix=1.2.1 hadoop-pkg-ind
> Task :hadoop-pkg-ind
Building 1.2.1 hadoop-pkg on centos-7 in Docker...
+++ dirname ./bigtop-ci/build.sh
++ cd ./bigtop-ci/..
++ pwd
+ BIGTOP_HOME=/tmp/bigtop
+ '[' 6 -eq 0 ']'
+ [[ 6 -gt 0 ]]
+ key=--prefix
+ case $key in
+ PREFIX=1.2.1
+ shift
+ shift
+ [[ 4 -gt 0 ]]
+ key=--os
+ case $key in
+ OS=centos-7
+ shift
+ shift
+ [[ 2 -gt 0 ]]
+ key=--target
+ case $key in
+ TARGET=hadoop-pkg
+ shift
+ shift
+ [[ 0 -gt 0 ]]
+ '[' -z x ']'
+ '[' -z x ']'
+ '[' '' == true ']'
+ IMAGE_NAME=bigtop/slaves:1.2.1-centos-7
++ uname -m
+ ARCH=x86_64
+ '[' x86_64 '!=' x86_64 ']'
++ docker run -d bigtop/slaves:1.2.1-centos-7 /sbin/init
+
CONTAINER_ID=0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8
+ trap 'docker rm -f
0ce5ac5ca955b822a3e6c5eb3f477f0a152cd27d5487680f77e33fbe66b5bed8' EXIT
....
много вывода
....
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-namenode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-secondarynamenode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-zkfc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-journalnode-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-datanode-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-httpfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-resourcemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-nodemanager-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-proxyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-yarn-timelineserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-mapreduce-historyserver-2.8.5-
1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-client-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-conf-pseudo-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-doc-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-libhdfs-devel-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-hdfs-fuse-2.8.5-1.el7.x86_64.rpm
Wrote: /bigtop/build/hadoop/rpm/RPMS/x86_64/hadoop-debuginfo-2.8.5-1.el7.x86_64.rpm
+ umask 022
+ cd /bigtop/build/hadoop/rpm//BUILD
+ cd hadoop-2.8.5-src
+ /usr/bin/rm -rf /bigtop/build/hadoop/rpm/BUILDROOT/hadoop-2.8.5-1.el7.x86_64
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.uQ2FCn
+ exit 0
+ umask 022
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.CwDb22
+ cd /bigtop/build/hadoop/rpm//BUILD
+ rm -rf hadoop-2.8.5-src
+ exit 0
[ant:touch] Creating /bigtop/build/hadoop/.rpm
:hadoop-rpm (Thread[Task worker for ':',5,main]) completed. Took 38 mins 1.151 secs.
:hadoop-pkg (Thread[Task worker for ':',5,main]) started.
> Task :hadoop-pkg
Task ':hadoop-pkg' is not up-to-date because:
Task has not declared any outputs despite executing actions.
:hadoop-pkg (Thread[Task worker for ':',5,main]) completed. Took 0.0 secs.
BUILD SUCCESSFUL in 40m 37s
6 actionable tasks: 6 executed
+ RESULT=0
+ mkdir -p output
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/build .
+ docker cp
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb:/bigtop/output .
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
+ '[' 0 -ne 0 ']'
+ docker rm -f ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
Error: No such container:
ac46014fd9501bdc86b6c67d08789fbdc6ee46a2645550ff6b6712f7d02ffebb
BUILD SUCCESSFUL in 41m 24s
1 actionable task: 1 executed

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

./gradlew -POS=ubuntu-16.04 -Pprefix=1.2.1 hadoop-pkg-ind

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

./gradlew yum

Μπορείτε επίσης να θυμάστε σχετικά με τις δοκιμές καπνού και την ανάπτυξη στο Docker.

Δημιουργήστε ένα σύμπλεγμα τριών κόμβων:

./gradlew -Pnum_instances=3 docker-provisioner

Εκτελέστε δοκιμές καπνού σε ένα σύμπλεγμα τριών κόμβων:

./gradlew -Pnum_instances=3 -Prun_smoke_tests docker-provisioner

Διαγραφή συμπλέγματος:

./gradlew docker-provisioner-destroy

Λάβετε εντολές για σύνδεση μέσα σε κοντέινερ docker:

./gradlew docker-provisioner-ssh

Εμφάνιση κατάστασης:

./gradlew docker-provisioner-status

Μπορείτε να διαβάσετε περισσότερα σχετικά με τις εργασίες ανάπτυξης στην τεκμηρίωση.

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

Εκτός από τα υπάρχοντα στοιχεία στο Bigtop, μπορείτε να προσθέσετε οτιδήποτε άλλο, ακόμα και τη δική σας ανάπτυξη λογισμικού. Όλα αυτά είναι απόλυτα αυτοματοποιημένα και ταιριάζουν στην ιδέα CI/CD.

Συμπέρασμα

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

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

Είναι σημαντικό να σημειωθεί ότι το ίδιο το έργο Bigtop χρειάζεται ανάπτυξη και δεν φαίνεται να αναπτύσσεται ενεργά σήμερα. Η προοπτική να εμφανιστεί το Hadoop 3 σε αυτό είναι επίσης ασαφής. Παρεμπιπτόντως, εάν έχετε πραγματική ανάγκη να φτιάξετε το Hadoop 3, μπορείτε να δείτε πιρούνι από την Arenadata, στην οποία, εκτός από στάνταρ
Υπάρχει μια σειρά από πρόσθετα εξαρτήματα (Ranger, Knox, NiFi).

Όσο για τη Rostelecom, για εμάς το Bigtop είναι μία από τις επιλογές που εξετάζονται σήμερα. Είτε το επιλέξουμε είτε όχι, ο χρόνος θα δείξει.

Παράρτημα

Για να συμπεριλάβετε ένα νέο στοιχείο στη διάταξη, πρέπει να προσθέσετε την περιγραφή του στα bigtop.bom και ./bigtop-packages. Μπορείτε να προσπαθήσετε να το κάνετε αυτό κατ' αναλογία με τα υπάρχοντα στοιχεία. Προσπάθησε να το καταλάβεις. Δεν είναι τόσο δύσκολο όσο φαίνεται με την πρώτη ματιά.

Τι νομίζετε; Θα χαρούμε να δούμε τη γνώμη σας στα σχόλια και σας ευχαριστούμε για την προσοχή σας!

Το άρθρο προετοιμάστηκε από την ομάδα διαχείρισης δεδομένων της Rostelecom

Πηγή: www.habr.com

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