paint-brush
Migration von Hadoop ohne Rip-and-Replace ist möglich – so geht‘svon@minio
3,801 Lesungen
3,801 Lesungen

Migration von Hadoop ohne Rip-and-Replace ist möglich – so geht‘s

von MinIO7m2024/05/31
Read on Terminal Reader

Zu lang; Lesen

MinIO ist eine moderne Version von Hadoop, die sich in Spark und Hive integrieren lässt. MinIO verschlüsselt alle Daten mit Objektschlüsseln und gewährleistet so einen robusten Schutz vor unbefugtem Zugriff. S3a ist ein unverzichtbarer Endpunkt für Anwendungen, die von Hado.op weg möchten, und bietet Kompatibilität mit einer breiten Palette von Anwendungen.
featured image - Migration von Hadoop ohne Rip-and-Replace ist möglich – so geht‘s
MinIO HackerNoon profile picture
0-item
1-item


Wir sind immer noch erstaunt über die Anzahl der Kunden, die zu uns kommen und von HDFS auf moderne Objektspeicher wie MinIO migrieren möchten. Wir dachten, dass mittlerweile alle den Übergang vollzogen hätten, aber jede Woche sprechen wir mit einer großen, hochtechnischen Organisation, die sich für den Übergang entschieden hat.


In diesen Diskussionen geht es häufig um Elemente ihrer Infrastruktur, die sie nach der Migration beibehalten möchten. Es gibt Frameworks und Software, die aus dem HDFS-Ökosystem hervorgegangen sind, die von vielen Entwicklern unterstützt werden und immer noch ihren Platz im modernen Daten-Stack haben. Tatsächlich haben wir oft gesagt, dass aus dem HDFS-Ökosystem viel Gutes hervorgegangen ist. Das grundlegende Problem liegt bei der eng gekoppelten Speicherung und Berechnung, nicht unbedingt bei den Tools und Diensten, die aus der Ära der Big Data stammen.


In diesem Blogbeitrag geht es darum, wie Sie diese Migration durchführen können, ohne wertvolle Tools und Dienste herauszureißen und zu ersetzen. Tatsache ist, dass Sie ohne eine Modernisierung Ihrer Infrastruktur nicht die Fortschritte im Bereich KI/ML erzielen können, die Ihr Unternehmen benötigt. Aber Sie müssen nicht alles über Bord werfen, um dorthin zu gelangen.

Disaggregation von Speicher und Berechnung mit Spark und Hive

Wir haben schon einiges durchgemacht Strategien für eine vollständige Rip-and-Replace-Migration , was in manchen Fällen der richtige Weg ist. Sehen wir uns jedoch eine andere Möglichkeit zur Modernisierung einer HDFS-Implementierung an.


Das Architektur beinhaltet Kubernetes-Verwaltung Apache Spark und Apache Hive-Container zur Datenverarbeitung; Spark lässt sich nativ in MinIO integrieren, während Hive YARN verwendet. MinIO verwaltet die Objektspeicherung in Stateful-Containern und verlässt sich in dieser Architektur auf Multi-Tenant-Konfigurationen zur Datenisolierung.


Architekturübersicht:

  • Compute-Knoten: Kubernetes verwaltet zustandslose Apache Spark- und Apache Hive-Container effizient auf Compute-Knoten und gewährleistet so eine optimale Ressourcennutzung und dynamische Skalierung.


  • Speicherschicht: MinIO Löschcodierung und BitRot-Schutz bedeutet, dass Sie bis zur Hälfte der Laufwerke verlieren und trotzdem eine Wiederherstellung durchführen können, und das alles ohne die Notwendigkeit, die von Hadoop benötigten drei Kopien jedes Datenblocks aufzubewahren.


  • Zugriffsebene: Der gesamte Zugriff auf den MinIO-Objektspeicher wird über die S3-API vereinheitlicht und bietet eine nahtlose Schnittstelle für die Interaktion mit gespeicherten Daten.


  • Sicherheitsebene: Datensicherheit hat oberste Priorität. MinIO verschlüsselt alle Daten mit Objektschlüsseln und gewährleistet so einen robusten Schutz vor unbefugtem Zugriff.


  • Identitätsmanagement: MinIO Enterprise lässt sich vollständig in Identitätsanbieter wie WSO2, Keycloak, Okta und Ping Identity integrieren, um die Authentifizierung von Anwendungen oder Benutzern zu ermöglichen.


Ein vollständig modernisierter Ersatz für Hadoop, der es Ihrem Unternehmen ermöglicht, Hive, YARN und alle anderen Datenprodukte des Hadoop-Ökosystems beizubehalten, die in den Objektspeicher integriert werden können, also fast alles im modernen Datenstapel.

Interoperabilität in der Zugriffsschicht

S3a ist ein wesentlicher Endpunkt für Anwendungen, die von Hadoop weg wollen, und bietet Kompatibilität mit einer breiten Palette von Anwendungen innerhalb des Hadoop-Ökosystems. Seit 2006 sind S3-kompatible Objektspeicher-Backends als Standardfunktion nahtlos in zahlreiche Datenplattformen innerhalb des Hadoop-Ökosystems integriert. Diese Integration geht auf die Einbindung einer S3-Client-Implementierung in neue Technologien zurück.


Auf allen Hadoop-bezogenen Plattformen ist die Einführung des hadoop-aws Moduls und aws-java-sdk-bundle Standardpraxis und gewährleistet eine robuste Unterstützung der S3-API. Dieser standardisierte Ansatz erleichtert den reibungslosen Übergang von Anwendungen von HDFS- und S3-Speicher-Backends. Durch einfache Angabe des entsprechenden Protokolls können Entwickler Anwendungen mühelos von Hadoop auf modernen Objektspeicher umstellen. Das Protokollschema für S3 wird durch s3a:// angegeben, während es für HDFS als hdfs:// bezeichnet wird.

Vorteile der Migration

Man kann lange über die Vorteile einer Migration von Hadoop auf moderne Objektspeicher sprechen. Wenn Sie dies lesen, wissen Sie bereits, dass ohne eine Migration von Legacy-Plattformen wie Hadoop Fortschritte in der KI und anderen modernen Datenprodukten wahrscheinlich nicht möglich sind. Der Grund dafür liegt in Leistung und Skalierbarkeit.


Es steht außer Frage, dass moderne Workloads eine herausragende Leistung erfordern, um mit dem zu verarbeitenden Datenvolumen und der Komplexität der heute erforderlichen Aufgaben mithalten zu können. Wenn Leistung nicht nur ein Eitelkeits-Benchmarking ist, sondern eine harte Anforderung, ist das Feld der Anwärter für Hadoop-Ersatz fällt dramatisch ab .


Das andere Element, das Migrationen vorantreibt, ist die Cloud-native Skalierung. Wenn das Konzept der Cloud weniger ein physischer Standort als vielmehr ein Betriebsmodell Es wird möglich, beispielsweise einen gesamten Datenstapel in wenigen Minuten aus einer einzigen YAML-Datei bereitzustellen. Eine Implementierung, die so schnell ist, dass jeder Hadoop-Ingenieur vom Stuhl fallen würde.


Ein wesentlicher Bestandteil dieses Konzepts sind die wirtschaftlichen Vorteile, die sich aus der Befreiung von der Abhängigkeit von einem Anbieter ergeben, sodass ein Unternehmen für bestimmte Arbeitslasten die besten Optionen seiner Klasse auswählen kann. Ganz zu schweigen von der Befreiung von der Notwendigkeit, drei separate Kopien der Daten zu deren Schutz zu verwalten, was mit Aktiv-Aktiv-Replikation und Erasure Coding. Investitionen in zukunftssichere Technologie bedeuten in der Regel auch, dass es einfacher ist, talentierte Fachkräfte für die Arbeit an Ihrer Infrastruktur zu finden und einzustellen. Die Leute wollen an Dingen arbeiten, die ein Unternehmen voranbringen, und es gibt fast nichts, was das besser kann als Daten Zusammen tragen diese Faktoren zu einem Datenstapel bei, der nicht nur schneller und günstiger ist, sondern auch besser für die datengesteuerten Anforderungen von heute und morgen geeignet ist.

Erste Schritte

Bevor Sie sich mit den Einzelheiten unserer Architektur befassen, müssen Sie einige Komponenten zum Laufen bringen. Um von Hadoop zu migrieren, müssen Sie es natürlich zunächst installiert haben. Wenn Sie diese Erfahrung simulieren möchten, können Sie dieses Tutorial beginnen, indem Sie hier die Hortonworks-Distribution von Hadoop einrichten.


Andernfalls können Sie mit den folgenden Installationsschritten beginnen:


  1. Ambari einrichten: Als Nächstes Installieren von Ambari , das die Verwaltung Ihrer Dienste vereinfacht, indem es YARN automatisch für Sie konfiguriert. Ambari bietet ein benutzerfreundliches Dashboard zur Verwaltung von Diensten im Hadoop-Ökosystem und sorgt dafür, dass alles reibungslos läuft.


  2. Installieren Sie Apache Spark: Spark ist für die Verarbeitung großer Datenmengen unerlässlich. Folgen Sie den Standardinstallation Verfahren, um Spark zum Laufen zu bringen.


  3. Installieren Sie MinIO : Abhängig von Ihrer Umgebung können Sie zwischen zwei Installationsansätzen wählen: Kubernetes oder Helm-Diagramm .


Nach der erfolgreichen Installation dieser Elemente können Sie Spark und Hive so konfigurieren, dass sie MinIO statt HDFS verwenden. Navigieren Sie zur Ambari-Benutzeroberfläche http://<ambari-server>:8080/ und melden Sie sich mit den Standardanmeldeinformationen an: username: admin, password: admin ,



Navigieren Sie in Ambari zu „Dienste“, dann zu HDFS und dann zum Fenster „Konfigurationen“, wie im Screenshot unten. In diesem Abschnitt konfigurieren Sie Ambari so, dass S3a mit MinIO anstelle von HDFS verwendet wird.



Scrollen Sie nach unten und navigieren Sie zu Custom core-site . Hier konfigurieren Sie S3a.



 sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'


Ab hier hängt Ihre Konfiguration von Ihrer Infrastruktur ab. Das Folgende könnte jedoch eine Möglichkeit darstellen, wie core-site.xml S3a mit MinIO auf 12 Knoten und 1,2 TiB Speicher konfigurieren kann.


 cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive


Es gibt eine ganze Reihe von Optimierungen, die Sie erkunden können, indem Sie sich die Dokumentation zu diesem Migrationsmuster ansehen. Hier , und auch in der Hadoop-Dokumentation zu S3 Hier Und Hier .


Starten Sie alles neu, wenn Sie mit der Konfiguration zufrieden sind.



Sie müssen auch zum Spark2-Konfigurationsfenster navigieren.



Scrollen Sie nach unten zu Custom spark-defaults und fügen Sie die folgende Eigenschaft hinzu, um sie mit MinIO zu konfigurieren:



 spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A


Starten Sie alles neu, nachdem die Konfigurationsänderungen angewendet wurden.



Navigieren Sie zum Hive-Bedienfeld, um die Konfiguration abzuschließen.



Scrollen Sie nach unten zu Custom hive-site und fügen Sie die folgende Eigenschaft hinzu:




 hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50


Weitere Informationen zur Feinabstimmung der Konfiguration finden Sie Hier . Starten Sie alles neu, nachdem die Konfigurationsänderungen vorgenommen wurden.



Das war’s, Sie können jetzt Ihre Integration testen.

Auf eigene Faust erkunden

In diesem Blogbeitrag wird ein moderner Ansatz zur Migration von Hadoop beschrieben, ohne dass Sie Ihre vorhandenen Systeme komplett überholen müssen. Durch die Nutzung von Kubernetes zur Verwaltung von Apache Spark und Apache Hive und die Integration von MinIO für Stateful Object Storage können Unternehmen eine ausgewogene Architektur erreichen, die dynamische Skalierung und effiziente Ressourcennutzung unterstützt. Dieses Setup erhält nicht nur die Fähigkeiten Ihrer Datenverarbeitungsumgebungen, sondern verbessert sie auch und macht sie robuster und zukunftssicherer.


Mit MinIO profitieren Sie von einer Speicherlösung, die hohe Leistung auf Standardhardware bietet, Kosten durch Erasure Coding senkt (wodurch die Redundanz der Datenreplikation von Hadoop eliminiert wird) und Einschränkungen wie die Abhängigkeit von einem Anbieter und die Notwendigkeit von Cassandra-basierten Metadatenspeichern umgeht. Diese Vorteile sind entscheidend für Unternehmen, die erweiterte KI/ML-Workloads nutzen möchten, ohne die Kernelemente ihrer vorhandenen Datensysteme zu verwerfen.


Kontaktieren Sie uns gerne für ausführlichere Gespräche oder spezifische Anleitungen, wie Sie diese Migrationsstrategie an die individuellen Bedürfnisse Ihrer Organisation anpassen können. Ob per E-Mail an [email protected] oder in unserer Community Locker Kanal: Wir sind hier, um Ihnen zu helfen, das Beste aus Ihren Investitionen in die Dateninfrastruktur herauszuholen.