Top 10 Missverständnisse über die Portierung von Hadoop in die Cloud


Viele Unternehmen und Konzerne möchten die Cloud aus offensichtlichen Gründen zur Datenverarbeitung verwenden: Flexibilität, Skalierbarkeit, Sie können nur für das bezahlen, was Sie verwenden, und so weiter.

Tatsächlich ist die Übertragung eines Projekts mit einem Mehrkomponenten-Datenverarbeitungssystem im Petabyte-Maßstab von der lokalen Umgebung in die Cloud ein solides „Aber“. Es gibt viele Produkte für die Migration: Hadoop , Hive , Garn , Spark , Kafka , Zookeeper , Jupyter , Zeppelin . Angesichts des grundlegenden Unterschieds in der Umwelt ist es leicht, sich zu verirren und Fehler in dieser Vielfalt zu machen.

In diesem Artikel werde ich über häufige Missverständnisse sprechen und einige Tipps zur Qualitätsmigration in die Cloud geben. Persönlich verwende ich AWS , aber alle Tricks sind für andere Anbieter mit ähnlichen Lösungen relevant, z. B. für Azure oder GCP .

1. Das Kopieren von Daten in die Cloud ist einfach


Das Übertragen mehrerer Petabyte Daten in die öffentliche Cloud (z. B. S3 ), die in unserem Fall als Datensee fungiert, ist keine leichte Aufgabe. Dies kann sehr zeitaufwändig und ressourcenintensiv sein.

Trotz der großen Anzahl kommerzieller und Open Source-Lösungen habe ich keine einzige gefunden, die alle Anforderungen abdeckt:

  • Übertragung
  • Datenintegration
  • Datenüberprüfung
  • Berichterstattung

Wenn ein bestimmter Teil der Daten meist statisch oder mäßig dynamisch ist, können Sie eine Lösung wie AWS Snowball verwenden , mit der Sie Arrays auf ein physisches Gerät kopieren können. Die Daten werden von Ihrem lokalen Netzwerk heruntergeladen. Anschließend wird das Laufwerk an das AWS- Rechenzentrum zurückgesendet und die Daten werden in den S3- Speicher übertragen .

Versteckter Text
, , AWS.

Es wird empfohlen, die Datenübertragung in zwei Phasen zu unterteilen. Nachdem der größte Teil des Arrays gesendet und in das Repository hochgeladen wurde, verwenden Sie eine direkte Verbindung vom Cloud-Anbieter, um den Rest zu entladen. Sie können hierfür die Hadoop DistCP- oder Kafka Mirroring- Methoden verwenden . Beide Methoden haben ihre eigenen Nuancen. DistCP erfordert eine ständige Planung und Tiefenabstimmung. Außerdem können nicht alle Objekte in Schwarz-Weiß-Listen platziert werden. Kafka MirrorMaker muss zusätzlich zur Tiefenoptimierung Metriken über die JMX- Verwaltungserweiterung exportieren , um den Durchsatz, die Latenz und die allgemeine Stabilität zu messen.

Versteckter Text
. — , .

2. Cloud funktioniert genauso wie lokaler Speicher


Lokaler Speicher und Cloud-Speicher sind nicht dasselbe. Ein gutes Beispiel sind Zookeeper und Kafka . Die ZK- Clientbibliothek speichert die zulässigen Adressen von ZK- Servern während der gesamten Lebensdauer zwischen: Dies ist ein großes Problem für die Bereitstellung in der Cloud, für das Krücken erforderlich sind - die statischen ENI- Netzwerkschnittstellen für ZK- Server .

Für die Leistungsüberwachung empfiehlt es sich, eine Reihe nicht funktionsfähiger NFT- Tests in der Cloud-Infrastruktur durchzuführen , um sicherzustellen, dass die Einstellungen und die Konfiguration Ihren Workloads gerecht werden.

Versteckter Text
, , .

3. Objektspeicher ersetzt HDFS zu 100%


Das Trennen von Speicher- und Computerschichten ist eine großartige Idee, es gibt jedoch eine Einschränkung.

Mit Ausnahme der Google Cloud the Storage , die eine starke Datenkonsistenz (starke Konsistenz) verwendet , arbeiten die meisten anderen Speichereinrichtungen nach dem Modell "Konsistenz schließlich" (eventuell konsistent) . Dies bedeutet, dass sie zur Eingabe von Rohdaten und verarbeiteten Daten sowie zur Ausgabe von Ergebnissen verwendet werden können, jedoch nicht als temporärer Speicher.

Versteckter Text
, HDFS.

4. Sie können die Cloud-Infrastruktur über die Benutzeroberfläche bereitstellen


In einer kleinen Testumgebung kann dies einfach sein. Je höher die Infrastrukturanforderungen sind, desto wahrscheinlicher ist es, dass Code geschrieben wird. Möglicherweise möchten Sie mehrere Umgebungen haben (Dev, QA, Prod) . Dies kann mit CloudFormation und Terraform implementiert werden. Das Kopieren der erforderlichen Codeteile schlägt jedoch fehl. Sie müssen viel für sich selbst wiederholen.

Versteckter Text
— CI/CD . , .

5. Für eine korrekte Sichtbarkeit in der Cloud müssen Sie nur $ {SaaS_name} verwenden


Eine gute Sichtbarkeit (Protokollierung und Überwachung) der alten und neuen Umgebung ist eine wichtige Voraussetzung für eine erfolgreiche Migration.

Dies kann aufgrund der Verwendung unterschiedlicher Systeme in Umgebungen schwierig sein. Zum Beispiel Prometheus und ELK für die lokale Umgebung und NewRelic und Sumologic für die Cloud. Selbst wenn eine SaaS- Lösung in beiden Umgebungen angewendet wird, ist die Skalierung schwierig.

Versteckter Text
, ( , , JMX, , ).

6. Die Wolke skaliert auf unendlich


Benutzer freuen sich oft als Kinder, wenn sie etwas über die automatische Skalierungsfunktion lernen und glauben, dass sie diese sofort auf ihre Datenverarbeitungsplattformen anwenden werden. Die Konfiguration für EMR- Knoten ohne HDFS ist sehr einfach, erfordert jedoch zusätzliche Kenntnisse für die dauerhafte Speicherung (z. B. den Kafka- Softwarebroker ). Bevor Sie den gesamten Datenverkehr auf die Cloud-Infrastruktur umstellen, müssen Sie die aktuellen Ressourcenlimits überprüfen: Die Anzahl der Klasseninstanzen, Festplatten und die Load Balancer müssen vorgewärmt werden. Ohne eine solche Ausbildung kann das Arbeitspotential nicht so genutzt werden, wie es sollte.

Versteckter Text
, — , — .

7. Ich bewege meine Infrastruktur einfach unverändert


Anstatt sich ausschließlich auf die Funktionen eines potenziellen Dienstleisters zu konzentrieren, ist es besser, sich auf Ihre eigenen Repositorys zu konzentrieren, z. B. DynamoDB . Vergessen Sie jedoch nicht die mit der API kompatiblen Dienste. Alternativ können Sie den Amazon RDS- Clouddienst für die Hive Metastore-Datenbank verwenden .

Ein weiteres gutes Beispiel ist die EMR- Cloud-optimierte Big-Data-Plattform . Auf den ersten Blick erfordert es einfach eine Feinabstimmung mithilfe von Skripten nach der Installation. Sie können die Heap-Größe und die Archive von Drittanbietern JAR , UDF anpassenSicherheits-Add-Ons. Beachten Sie auch, dass es immer noch keine Möglichkeit gibt, Hochverfügbarkeit (HA) für die Hauptknoten NameNode oder YARN ResourceManager bereitzustellen .

Versteckter Text
, , .

8. Übertragen Sie Hadoop / Spark-Aufgaben in die Cloud - das ist ganz einfach


Nicht wirklich. Um Aufgaben erfolgreich zu übertragen, müssen Sie eine klare Vorstellung von Ihrer Geschäftslogik und Ihren Pipelines haben: vom ersten Empfang der Rohdaten bis hin zu hochwertigen Arrays. Alles wird noch komplizierter, wenn die Ergebnisse der Pipelines X und Y die Eingabedaten der Pipeline Z sind. Alle Komponenten der Flüsse und Beziehungen sollten so klar wie möglich angezeigt werden. Dies kann mit DAG implementiert werden .

Versteckter Text
SLA.

9. Die Cloud reduziert die Betriebskosten und das Personalbudget


Eigene Ausrüstung erfordert physische Kosten und Gehälter für die Mitarbeiter. Nach dem Wechsel in die Cloud verschwinden nicht alle Kosten: Sie müssen immer noch auf die Anforderungen des Unternehmens reagieren und Mitarbeiter einstellen, die an der Entwicklung, dem Support, der Fehlerbehebung und der Budgetplanung beteiligt sind. Sie müssen auch in Software und Tools für die neue Infrastruktur investieren.

Das Personal sollte eine Person sein, die versteht, wie neue Technologien funktionieren. Dies setzt einen hochqualifizierten Mitarbeiter voraus. Selbst unter Berücksichtigung des Personalabbaus können Sie daher genauso viel, wenn nicht sogar mehr, für das Gehalt eines guten Spezialisten ausgeben.

Versteckter Text
— (, EMR), . , , .

10. No-Ops schließen ...


No-Ops ist der Traum eines jeden Unternehmens. Eine vollautomatisierte Umgebung ohne die Notwendigkeit von Diensten und Produkten von Dritten. Ist das möglich?

Ein bescheidenes Team von mehreren Personen ist nur für kleine Unternehmen relevant, deren Aktivitäten nicht direkt mit Daten zusammenhängen. Alle anderen benötigen mindestens einen Spezialisten, der alle Systeme integriert und verpackt, vergleicht, automatisiert, für Transparenz sorgt und alle dabei auftretenden Fehler beseitigt.

Versteckter Text
Data-Ops , .



Zusammenfassen. Das Übertragen von Datenverarbeitungs-Pipelines in die Cloud ist gut. Damit die Migration ordnungsgemäß funktioniert, müssen Sie den Prozess sorgfältig planen und dabei alle oben beschriebenen Fallstricke berücksichtigen. Denken Sie ein paar Schritte nach vorne und alles wird klappen.

All Articles