Apache Bigtop und die Wahl einer Hadoop-Distribution heute

Apache Bigtop und die Wahl einer Hadoop-Distribution heute

Es ist wahrscheinlich kein Geheimnis, dass das letzte Jahr für Apache Hadoop ein Jahr großer Veränderungen war. Letztes Jahr fusionierten Cloudera und Hortonworks (im Wesentlichen die Übernahme des letzteren) und Mapr wurde aufgrund schwerwiegender finanzieller Probleme an Hewlett Packard verkauft. Und musste man sich vor einigen Jahren bei On-Premise-Installationen oft zwischen Cloudera und Hortonworks entscheiden, so haben wir diese Wahl heute leider nicht mehr. Eine weitere Überraschung war die Tatsache, dass Cloudera im Februar dieses Jahres ankündigte, die Veröffentlichung binärer Assemblies seiner Distribution im öffentlichen Repository einzustellen und diese nun nur noch über ein kostenpflichtiges Abonnement verfügbar zu machen. Natürlich ist es weiterhin möglich, die neuesten Versionen von CDH und HDP herunterzuladen, die vor Ende 2019 veröffentlicht wurden, und der Support für diese wird voraussichtlich ein bis zwei Jahre dauern. Aber was ist als nächstes zu tun? Für diejenigen, die zuvor ein Abonnement bezahlt haben, hat sich nichts geändert. Und für diejenigen, die nicht auf die kostenpflichtige Version der Distribution umsteigen möchten, aber gleichzeitig die neuesten Versionen der Cluster-Komponenten sowie Patches und andere Updates erhalten möchten, haben wir diesen Artikel vorbereitet. Darin werden wir mögliche Optionen für einen Ausweg aus dieser Situation betrachten.

Der Artikel ist eher eine Rezension. Es wird keinen Vergleich der Distributionen und keine detaillierte Analyse derselben enthalten, und es wird keine Rezepte für deren Installation und Konfiguration geben. Was wird passieren? Wir werden kurz auf eine solche Distribution wie Arenadata Hadoop eingehen, die aufgrund ihrer heute sehr seltenen Verfügbarkeit zu Recht unsere Aufmerksamkeit verdient. Und dann sprechen wir über Vanilla Hadoop, hauptsächlich darüber, wie es mit Apache Bigtop „gekocht“ werden kann. Bereit? Dann willkommen bei cat.

Arenadata Hadoop

Apache Bigtop und die Wahl einer Hadoop-Distribution heute

Dabei handelt es sich um ein völlig neues und bisher wenig bekanntes Vertriebspaket der inländischen Entwicklung. Leider gibt es im Moment auf Habré nur dieser Artikel.

Weitere Informationen finden Sie im offiziellen Webseite Projekt. Die neuesten Versionen der Distribution basieren auf Hadoop 3.1.2 für Version 3 und 2.8.5 für Version 2.

Informationen zur Roadmap finden Sie hier hier.

Apache Bigtop und die Wahl einer Hadoop-Distribution heute
Arenadata Cluster Manager-Schnittstelle

Das Kernprodukt von Arenadata ist Arenadata Cluster Manager (ADCM), mit dem verschiedene Unternehmenssoftwarelösungen installiert, konfiguriert und überwacht werden. ADCM wird kostenlos verteilt und seine Funktionalität wird durch das Hinzufügen von Bundles erweitert, bei denen es sich um eine Reihe von Ansible-Playbooks handelt. Bundles werden in zwei Typen unterteilt: Enterprise und Community. Letztere stehen zum kostenlosen Download auf der Arenadata-Website zur Verfügung. Es ist auch möglich, ein eigenes Bundle zu entwickeln und es an ADCM anzubinden.

Für die Bereitstellung und Verwaltung von Hadoop 3 wird eine Community-Version des Bundles in Verbindung mit ADCM angeboten, für Hadoop 2 jedoch nur Apache Ambari als Alternative. Repositorys mit Paketen sind öffentlich zugänglich und können auf die übliche Weise für alle Komponenten des Clusters heruntergeladen und installiert werden. Insgesamt sieht die Verteilung sehr interessant aus. Ich bin mir sicher, dass es diejenigen geben wird, die an Lösungen wie Cloudera Manager und Ambari gewöhnt sind und denen ADCM selbst gefallen wird. Für einige wird es auch ein großes Plus sein, dass die Verteilung im Softwareregister enthalten zur Importsubstitution.

Wenn wir über die Nachteile sprechen, sind sie dieselben wie bei allen anderen Hadoop-Distributionen. Nämlich:

  • Der sogenannte „Vendor Lock-in“. Anhand der Beispiele Cloudera und Hortonworks haben wir bereits erkannt, dass immer das Risiko einer Änderung der Unternehmenspolitik besteht.
  • Erhebliche Verzögerung hinter Apache Upstream.

Vanille-Hadoop

Apache Bigtop und die Wahl einer Hadoop-Distribution heute

Wie Sie wissen, ist Hadoop kein monolithisches Produkt, sondern eine ganze Galaxie von Diensten rund um sein verteiltes Dateisystem HDFS. Nur wenige Menschen werden genug von einem Dateicluster haben. Einige benötigen Hive, andere Presto, und dann gibt es noch HBase und Phoenix; Spark wird zunehmend verwendet. Für die Orchestrierung und das Laden von Daten werden manchmal Oozie, Sqoop und Flume verwendet. Und wenn die Frage nach der Sicherheit aufkommt, dann kommt einem sofort Kerberos in Verbindung mit Ranger in den Sinn.

Binäre Versionen der Hadoop-Komponenten sind auf der Website jedes Ökosystemprojekts in Form von Tarballs verfügbar. Sie können sie herunterladen und mit der Installation beginnen, allerdings unter einer Bedingung: Zusätzlich zur unabhängigen Zusammenstellung von Paketen aus „rohen“ Binärdateien, was Sie höchstwahrscheinlich tun möchten, haben Sie kein Vertrauen in die Kompatibilität der heruntergeladenen Versionen der Komponenten mit den einzelnen Versionen andere. Die bevorzugte Option ist die Erstellung mit Apache Bigtop. Mit Bigtop können Sie aus Apache-Maven-Repositorys erstellen, Tests ausführen und Pakete erstellen. Aber was für uns sehr wichtig ist: Bigtop wird die Komponentenversionen zusammenbauen, die miteinander kompatibel sind. Wir werden weiter unten ausführlicher darüber sprechen.

Apache Bigtop

Apache Bigtop und die Wahl einer Hadoop-Distribution heute

Apache Bigtop ist ein Tool zum Erstellen, Packen und Testen einer Reihe von
Open-Source-Projekte wie Hadoop und Greenplum. Bigtop hat viel zu bieten
Veröffentlichungen. Zum Zeitpunkt des Verfassens dieses Artikels war die neueste stabile Version Version 1.4.
und im Master war es 1.5. Verschiedene Versionen von Releases verwenden unterschiedliche Versionen
Komponenten. Beispielsweise haben Hadoop-Kernkomponenten für 1.4 die Version 2.8.5 und im Master
2.10.0. Auch die Zusammensetzung der unterstützten Komponenten ändert sich. Etwas veraltet und
Das Unerneuerbare verschwindet und an seine Stelle tritt etwas Neues, das stärker nachgefragt wird
es ist nicht unbedingt etwas aus der Apache-Familie selbst.

Darüber hinaus hat Bigtop viele Gabeln.

Als wir anfingen, Bigtop kennenzulernen, waren wir zunächst einmal überrascht von seiner im Vergleich zu anderen Apache-Projekten bescheidenen Verbreitung und Beliebtheit sowie einer sehr kleinen Community. Daraus folgt, dass es nur minimale Informationen zum Produkt gibt und die Suche nach Lösungen für aufgetretene Probleme in Foren und Mailinglisten möglicherweise überhaupt nichts bringt. Aufgrund der Funktionen des Tools selbst erwies es sich zunächst als schwierige Aufgabe für uns, die Distribution vollständig zusammenzustellen, aber wir werden etwas später darüber sprechen.

Als Vorgeschmack: Diejenigen, die sich einmal für Projekte des Linux-Universums wie Gentoo und LFS interessiert haben, finden es möglicherweise nostalgisch angenehm, mit diesem Ding zu arbeiten und sich an die „epischen“ Zeiten zu erinnern, als wir selbst nach solchen Projekten suchten (oder sogar schrieben). ebuilds und baut Mozilla regelmäßig mit neuen Patches neu auf.

Der große Vorteil von Bigtop ist die Offenheit und Vielseitigkeit der zugrunde liegenden Tools. Es basiert auf Gradle und Apache Maven. Gradle ist als das Tool bekannt, mit dem Google Android erstellt. Es ist flexibel und, wie man sagt, „kampferprobt“. Maven ist ein Standardtool zum Erstellen von Projekten in Apache selbst, und da die meisten seiner Produkte über Maven veröffentlicht werden, ist es auch hier nicht wegzudenken. Es lohnt sich, auf das POM (Projektobjektmodell) zu achten – die „grundlegende“ XML-Datei, die alles beschreibt, was Maven für die Arbeit mit Ihrem Projekt benötigt und auf der sich die gesamte Arbeit aufbaut. Genau bei
Teile von Maven und es gibt einige Hindernisse, auf die Bigtop-Erstbenutzer normalerweise stoßen.

Praxis

Wo sollten Sie also anfangen? Gehen Sie zur Download-Seite und laden Sie die neueste stabile Version als Archiv herunter. Dort finden Sie auch von Bigtop gesammelte binäre Artefakte. Unter den gängigen Paketmanagern werden übrigens YUM und APT unterstützt.

Alternativ können Sie die neueste stabile Version direkt von herunterladen
Github:

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

Klonen im „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), готово.

Das resultierende ./bigtop-Verzeichnis sieht in etwa so aus:

./bigtop-bigpetstore — Demoanwendungen, synthetische Beispiele
./bigtop-ci - CI-Tools, Jenkins
./bigtop-data-generators — Datengenerierung, Kunststoffe, für Rauchtests usw.
./bigtop-deploy - Bereitstellungstools
./bigtop-packages – Konfigurationen, Skripte, Patches für die Montage, der Hauptteil des Tools
./bigtop-test-framework — Testrahmen
./bigtop-tests — die Tests selbst, laden und rauchen
./bigtop_toolchain — Umgebung für die Montage, Vorbereitung der Umgebung für den Einsatz des Werkzeugs
./build — Arbeitsverzeichnis erstellen
./dl – Verzeichnis für heruntergeladene Quellen
./docker – Docker-Images einbauen, testen
./gradle - Gradle-Konfiguration
./output – das Verzeichnis, in dem Build-Artefakte abgelegt werden
./provisioner - Bereitstellung

Das Interessanteste für uns ist in dieser Phase die Hauptkonfiguration ./bigtop/bigtop.bom, in dem wir alle unterstützten Komponenten mit Versionen sehen. Hier können wir eine andere Version des Produkts (wenn wir plötzlich versuchen möchten, es zu erstellen) oder eine Build-Version (wenn wir beispielsweise einen wichtigen Patch hinzugefügt haben) angeben.

Auch das Unterverzeichnis ist von großem Interesse ./bigtop/bigtop-packages, was in direktem Zusammenhang mit dem Prozess des Zusammenbaus von Komponenten und Paketen damit steht.

Also, wir haben das Archiv heruntergeladen, entpackt oder einen Klon von Github erstellt. Können wir mit dem Erstellen beginnen?

Nein, bereiten wir zuerst die Umgebung vor.

Umgebung vorbereiten

Und hier brauchen wir einen kleinen Rückzugsort. Um fast jedes mehr oder weniger komplexe Produkt zu erstellen, benötigen Sie eine bestimmte Umgebung – in unserem Fall das JDK, die gleichen gemeinsam genutzten Bibliotheken, Header-Dateien usw., Tools wie ant, ivy2 und vieles mehr. Eine Möglichkeit, die für Bigtop benötigte Umgebung zu erhalten, besteht darin, die erforderlichen Komponenten auf dem Build-Host zu installieren. Ich könnte mich in der Chronologie irren, aber es scheint, dass es mit Version 1.0 auch eine Option gab, vorkonfigurierte und zugängliche Docker-Images einzubauen, die hier zu finden ist.

Für die Vorbereitung der Umgebung gibt es einen Assistenten – Puppet.

Sie können die folgenden Befehle verwenden und diese im Stammverzeichnis ausführen
Instrument, ./bigtop:

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

Oder direkt per Marionette:

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"

Leider kann es bereits in dieser Phase zu Schwierigkeiten kommen. Der allgemeine Rat hier ist, eine unterstützte Distribution zu verwenden, die auf dem Build-Host auf dem neuesten Stand ist, oder die Docker-Route auszuprobieren.

Montage

Was können wir versuchen zu sammeln? Die Antwort auf diese Frage wird durch die Ausgabe des Befehls gegeben

./gradlew tasks

Im Abschnitt „Paketaufgaben“ gibt es eine Reihe von Produkten, die endgültige Artefakte von Bigtop sind.
Sie sind am Suffix -rpm oder -pkg-ind (im Fall von build.) zu erkennen
im Docker). In unserem Fall ist Hadoop am interessantesten.

Versuchen wir, in der Umgebung unseres Build-Servers zu bauen:

./gradlew hadoop-rpm

Bigtop selbst lädt die für eine bestimmte Komponente erforderlichen Quellen herunter und beginnt mit der Montage. Daher ist der Betrieb des Tools von Maven-Repositorys und anderen Quellen abhängig, d. h. es erfordert einen Internetzugang.

Während des Betriebs wird eine Standardausgabe generiert. Manchmal können es und Fehlermeldungen Ihnen helfen zu verstehen, was schief gelaufen ist. Und manchmal müssen Sie zusätzliche Informationen einholen. In diesem Fall lohnt es sich, Argumente hinzuzufügen --info oder --debug, und kann auch nützlich sein –stacktrace. Es gibt eine komfortable Möglichkeit, einen Datensatz für den späteren Zugriff auf Mailinglisten zu generieren, den Schlüssel --scan.

Mit seiner Hilfe sammelt bigtop alle Informationen und fügt sie in Gradle ein. Anschließend stellt es einen Link bereit.
Auf diese Weise kann eine kompetente Person verstehen, warum die Montage fehlgeschlagen ist.
Bitte beachten Sie, dass diese Option möglicherweise unerwünschte Informationen preisgibt, z. B. Benutzernamen, Knoten, Umgebungsvariablen usw. Seien Sie also vorsichtig.

Häufig sind Fehler eine Folge der Unfähigkeit, alle für die Montage notwendigen Komponenten zu beschaffen. Normalerweise können Sie das Problem beheben, indem Sie einen Patch erstellen, um etwas in den Quellen zu beheben, beispielsweise Adressen in pom.xml im Stammverzeichnis der Quellen. Dies geschieht durch Erstellen und Ablegen im entsprechenden Verzeichnis ./bigtop/bigtop-packages/src/common/oozie/ Patch, zum Beispiel im Formular 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>

Zum Zeitpunkt des Lesens dieses Artikels müssen Sie die oben genannte Fehlerbehebung höchstwahrscheinlich nicht selbst durchführen.

Wenn Sie Patches und Änderungen am Assembly-Mechanismus einführen, müssen Sie die Assembly möglicherweise mit dem Befehl „cleanup“ „zurücksetzen“:

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

Durch diesen Vorgang werden alle Änderungen an der Baugruppe dieser Komponente rückgängig gemacht, woraufhin die Baugruppe erneut durchgeführt wird. Dieses Mal versuchen wir, das Projekt in einem Docker-Image zu erstellen:

./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

Der Build wurde unter CentOS durchgeführt, kann aber auch unter Ubuntu durchgeführt werden:

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

Neben dem Erstellen von Paketen für verschiedene Linux-Distributionen kann das Tool ein Repository mit kompilierten Paketen erstellen, zum Beispiel:

./gradlew yum

Sie können sich auch an Smoke-Tests und die Bereitstellung in Docker erinnern.

Erstellen Sie einen Cluster aus drei Knoten:

./gradlew -Pnum_instances=3 docker-provisioner

Führen Sie Rauchtests in einem Cluster aus drei Knoten durch:

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

Einen Cluster löschen:

./gradlew docker-provisioner-destroy

Rufen Sie Befehle zum Herstellen einer Verbindung innerhalb von Docker-Containern ab:

./gradlew docker-provisioner-ssh

Status anzeigen:

./gradlew docker-provisioner-status

Weitere Informationen zu Bereitstellungsaufgaben finden Sie in der Dokumentation.

Wenn wir über Tests sprechen, gibt es ziemlich viele davon, hauptsächlich Rauch und Integration. Ihre Analyse würde den Rahmen dieses Artikels sprengen. Lassen Sie mich nur sagen, dass die Zusammenstellung eines Verteilersatzes keine so schwierige Aufgabe ist, wie es auf den ersten Blick erscheinen mag. Es ist uns gelungen, alle Komponenten, die wir in unserer Produktion verwenden, zusammenzubauen und zu testen, und wir hatten auch keine Probleme, sie bereitzustellen und grundlegende Vorgänge in der Testumgebung durchzuführen.

Zusätzlich zu den vorhandenen Komponenten in Bigtop ist es möglich, alles andere hinzuzufügen, sogar Ihre eigene Softwareentwicklung. Das alles läuft perfekt automatisiert ab und passt in das CI/CD-Konzept.

Abschluss

Natürlich sollte die so zusammengestellte Distribution nicht sofort in die Produktion geschickt werden. Sie müssen verstehen, dass Sie Geld und Zeit investieren müssen, wenn ein echter Bedarf für den Aufbau und die Unterstützung Ihrer Distribution besteht.

In Kombination mit der richtigen Vorgehensweise und einem professionellen Team ist es jedoch durchaus möglich, auf kommerzielle Lösungen zu verzichten.

Es ist wichtig anzumerken, dass das Bigtop-Projekt selbst entwicklungsbedürftig ist und derzeit offenbar nicht aktiv weiterentwickelt wird. Die Aussicht, dass Hadoop 3 darin erscheinen wird, ist ebenfalls unklar. Übrigens, wenn Sie einen echten Bedarf haben, Hadoop 3 zu erstellen, können Sie sich das ansehen Gabel von Arenadata, in dem zusätzlich zum Standard
Es gibt eine Reihe zusätzlicher Komponenten (Ranger, Knox, NiFi).

Was Rostelecom betrifft, ist Bigtop für uns eine der Optionen, die heute in Betracht gezogen werden. Ob wir uns dafür entscheiden oder nicht, wird die Zeit zeigen.

Anhang

Um eine neue Komponente in die Baugruppe aufzunehmen, müssen Sie deren Beschreibung zu bigtop.bom und ./bigtop-packages hinzufügen. Sie können versuchen, dies analog zu den vorhandenen Komponenten zu tun. Versuchen Sie es herauszufinden. Es ist nicht so schwierig, wie es auf den ersten Blick scheint.

Was denken Sie? Wir freuen uns über Ihre Meinung in den Kommentaren und bedanken uns für Ihre Aufmerksamkeit!

Der Artikel wurde vom Datenmanagementteam von Rostelecom erstellt

Source: habr.com

Kommentar hinzufügen