Amazon EMR auf Amazon EKS bietet eine Bereitstellungsoption für Amazon EMR Damit können Sie Analyse-Workloads ausführen Amazon Elastic Kubernetes-Service (Amazon EKS). Dies ist eine attraktive Option, da Sie damit Anwendungen auf einem gemeinsamen Ressourcenpool ausführen können, ohne Infrastruktur bereitstellen zu müssen. Darüber hinaus können Sie verwenden Amazon EMR-Studio um Analysecode zu erstellen, der auf Amazon EKS-Clustern ausgeführt wird. EMR Studio ist eine webbasierte, integrierte Entwicklungsumgebung (IDE), die vollständig verwaltete Jupyter-Notebooks verwendet und an jeden EMR-Cluster angeschlossen werden kann, einschließlich EMR auf EKS. Es benutzt AWS-Einzelanmeldung (SSO) oder einen kompatiblen Identitätsanbieter (IdP), um sich über eine sichere URL mit Unternehmensanmeldeinformationen direkt bei EMR Studio anzumelden.
Die Bereitstellung von EMR Studio zur Anbindung an EMR auf EKS erfordert die Integration mehrerer AWS-Dienste:
Darüber hinaus müssen Sie die folgenden EMR-on-EKS-Komponenten installieren:
Dieser Beitrag hilft Ihnen, alle notwendigen Komponenten zu erstellen und sie durch die Ausführung eines einzigen Skripts zusammenzufügen. Wir beschreiben auch die Architektur dieses Setups und wie die Komponenten zusammenarbeiten.
Architektur Überblick
Mit EMR auf EKS können Sie Spark-Anwendungen zusammen mit anderen Anwendungstypen auf demselben Amazon EKS-Cluster ausführen, was die Ressourcenzuweisung verbessert und die Infrastrukturverwaltung vereinfacht. Weitere Informationen zur Funktionsweise von Amazon EMR in einem Amazon EKS-Cluster finden Sie unter Neu – Amazon EMR auf Amazon Elastic Kubernetes Service (EKS). EMR Studio bietet eine webbasierte IDE, die das Entwickeln, Visualisieren und Debuggen von Anwendungen erleichtert, die in EMR ausgeführt werden. Weitere Informationen finden Sie unter Amazon EMR Studio (Vorschau): Ein neues Notebook-First-IDE-Erlebnis mit Amazon EMR.
Spark-Kernel sind geplante Pods in einem Namespace in einem Amazon EKS-Cluster. EMR Studio verwendet Jupyter Enterprise Gateway (JEG), um Spark-Kernel auf Amazon EKS zu starten. Ein verwalteter Endpunkt vom Typ JEG wird als Kubernetes-Bereitstellung im zugehörigen Namespace des virtuellen EMR-Clusters bereitgestellt und als Kubernetes-Dienst bereitgestellt. Jeder virtuelle EMR-Cluster ist einem Kubernetes-Namespace zugeordnet, der beim Amazon EKS-Cluster registriert ist. Virtuelle Cluster verwalten keine physische Rechenleistung oder Speicherung, sondern verweisen auf den Kubernetes-Namespace, in dem die Arbeitslast geplant ist. Jeder virtuelle Cluster kann über mehrere verwaltete Endpunkte verfügen, von denen jeder über einen eigenen konfigurierten Kernel für unterschiedliche Anwendungsfälle und Anforderungen verfügt. Von JEG verwaltete Endpunkte stellen HTTPS-Endpunkte bereit, die von einem Application Load Balancer (ALB) bedient werden und nur über EMR Studio erreichbar sind, sowie selbstgehostete Notebooks, die in einem privaten Subnetz der Amazon EKS VPC erstellt werden.
Das folgende Diagramm zeigt die Lösungsarchitektur.
Der verwaltete Endpunkt wird im Amazon EKS-Namespace des virtuellen Clusters erstellt (in diesem Fall sparkns
) und die HTTPS-Endpunkte werden von privaten Subnetzen aus bedient. Die Kernel-Pods werden mit der im verwalteten Endpunkt definierten IAM-Rolle zur Jobausführung ausgeführt. Während der Erstellung eines verwalteten Endpunkts verwendet EMR auf EKS den AWS Load Balancer Controller im kube-system
-Namespace, um einen ALB mit einer Zielgruppe zu erstellen, die eine Verbindung mit dem von JEG verwalteten Endpunkt im Kubernetes-Namespace des virtuellen Clusters herstellt.
Sie können den Kernel jedes verwalteten Endpunkts unterschiedlich konfigurieren. Zum Beispiel, um die Verwendung eines Spark-Kernels zu ermöglichen AWS-Kleber Als Katalog können Sie die folgende Konfigurations-JSON-Datei anwenden:configuration-overrides
Flag beim Erstellen eines verwalteten Endpunkts:
Der verwaltete Endpunkt ist eine Kubernetes-Bereitstellung, die von einem Dienst innerhalb des konfigurierten Namespace (in diesem Fall sparkns
). Wenn wir die Endpunktinformationen verfolgen, können wir sehen, wie die Jupyter Enterprise Gateway-Bereitstellung eine Verbindung mit dem ALB und der Zielgruppe herstellt:
Um zu sehen, wie dies zusammenhängt, betrachten Sie zwei EMR Studio-Sitzungen. Der ALB stellt Port 18888 den EMR Studio-Sitzungen zur Verfügung. Der JEG-Dienst ordnet den externen Port 18888 auf dem ALB dem dynamischen Port zu NodePort
auf dem JEG-Dienst (in diesem Fall 30091). Der JEG-Dienst leitet den Datenverkehr an den weiter TargetPort
9547, der den Datenverkehr an den entsprechenden Spark-Treiber-Pod weiterleitet. Jede Notebook-Sitzung verfügt über einen eigenen Kernel, der über eigene Spark-Treiber und Executor-Pods verfügt, wie das folgende Diagramm zeigt.
Verbinden Sie EMR Studio mit einem virtuellen Cluster und einem verwalteten Endpunkt
Jedes Mal, wenn ein Benutzer einen virtuellen Cluster und einen verwalteten Endpunkt an seinen Studio-Arbeitsbereich anfügt und eine Spark-Sitzung startet, werden Spark-Treiber und Spark-Ausführer geplant. Das sieht man beim Laufen kubectl
So überprüfen Sie, welche Pods gestartet wurden:
Jede Notebook-Spark-Kernel-Sitzung stellt einen Treiber-Pod und Executor-Pods bereit, die weiter ausgeführt werden, bis die Kernel-Sitzung beendet wird.
Der Code in den Notebook-Zellen wird in den Executor-Pods ausgeführt, die im Amazon EKS-Cluster bereitgestellt wurden.
Richten Sie EMR auf EKS und EMR Studio ein
Für die Einrichtung von EMR auf EKS und EMR Studio sind mehrere Schritte und Teile erforderlich. Die Aktivierung von AWS SSO ist eine Voraussetzung. Sie können die beiden in diesem Abschnitt bereitgestellten Startskripts verwenden oder es mithilfe der weiter unten in diesem Beitrag bereitgestellten Schritte manuell bereitstellen.
In diesem Beitrag stellen wir zwei Startskripte zur Verfügung. Eines ist ein Bash-Skript, das verwendet AWS CloudFormation, eksctl und AWS-Befehlszeilenschnittstelle (AWS CLI)-Befehle zur Bereitstellung einer End-to-End-Bereitstellung einer Komplettlösung. Der andere nutzt die AWS Cloud-Entwicklungskit (AWS CDK) dazu.
Das folgende Diagramm zeigt die Architektur und Komponenten, die wir bereitstellen.
Voraussetzungen:
Stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
Informationen zu den unterstützten IdPs finden Sie unter Aktivieren Sie AWS Single Sign-On für Amazon EMR Studio.
Bash-Skript
Das Skript ist am verfügbar GitHub.
Voraussetzungen:
Das Skript erfordert die Verwendung AWS Cloud9. Befolgen Sie die Anweisungen in der Amazon EKS-Workshop. Befolgen Sie diese Anweisungen unbedingt sorgfältig:
Fahren Sie nach der Bereitstellung des AWS Cloud9-Desktops mit den nächsten Schritten fort.
Vorbereitung
Verwenden Sie den folgenden Code, um das GitHub-Repository zu klonen und die AWS Cloud9-Voraussetzungen vorzubereiten:
Bereitstellen des Stapels
Geben Sie vor der Ausführung des Skripts die folgenden Informationen an:
- Die AWS-Konto-ID und Region, wenn sich Ihr AWS Cloud9-Desktop nicht in derselben Konto-ID oder Region befindet, in der Sie EMR auf EKS bereitstellen möchten
- Der Name des Amazon Simple Storage-Service (Amazon S3) Bucket zum Erstellen
- Der AWS SSO-Benutzer, der der EMR Studio-Sitzung zugeordnet werden soll
Nachdem das Skript den Stack bereitgestellt hat, wird die URL zum bereitgestellten EMR Studio angezeigt:
AWS CDK-Skript
Die AWS CDK-Skripte sind verfügbar unter GitHub. Sie müssen das auschecken main
Zweig. Die Stacks stellen einen Amazon EKS-Cluster und EMR auf einem virtuellen EKS-Cluster in einer neuen VPC mit privaten Subnetzen und optional einem bereit Von Amazon verwalteter Apache Airflow (Amazon MWAA)-Umgebung und EMR Studio.
Voraussetzungen:
Sie benötigen die AWS CDK-Version 1.90.1 oder höher. Weitere Informationen finden Sie unter Erste Schritte mit dem AWS CDK.
Wir verwenden eine Präfixliste, um den Zugriff auf einige Ressourcen auf von Ihnen genehmigte Netzwerk-IP-Bereiche zu beschränken. Ein ... kreieren Präfixliste wenn Sie noch keinen haben.
Wenn Sie EMR Studio verwenden möchten, benötigen Sie AWS SSO in Ihrem Konto konfiguriert.
Vorbereitung
Nachdem Sie das Repository geklont und ausgecheckt haben main
Verzweigen, erstellen und aktivieren Sie eine neue virtuelle Python-Umgebung:
Installieren Sie nun die Python-Abhängigkeiten:
Zum Schluss booten Sie das AWS CDK:
Stellen Sie die Stapel bereit
Synthetisieren Sie die AWS CDK-Stacks mit dem folgenden Code:
Dieser Befehl generiert vier Stapel:
- emr-eks-cdk – Der Hauptstapel
- mwaa-cdk – Fügt Amazon MWAA hinzu
- studio-cdk – Fügt EMR Studio-Voraussetzungen hinzu
- studio-cdk-live – Fügt EMR Studio hinzu
Das folgende Diagramm veranschaulicht die von den AWS CDK-Stacks bereitgestellten Ressourcen.
Beginnen Sie mit der Bereitstellung des ersten Stacks:
Wenn Sie Apache Airflow als Orchestrator verwenden möchten, stellen Sie diesen Stack bereit:
Stellen Sie den ersten EMR Studio-Stack bereit:
Warten Sie, bis der verwaltete Endpunkt aktiv wird. Sie können den Status überprüfen, indem Sie den folgenden Code ausführen:
Die virtuelle Cluster-ID ist in der AWS CDK-Ausgabe des emr-eks-cdk-Stacks verfügbar.
Wenn der Endpunkt aktiv ist, stellen Sie den zweiten EMR Studio-Stack bereit:
Manuelle Bereitstellung
Wenn Sie EMR lieber manuell auf EKS und EMR Studio bereitstellen möchten, verwenden Sie die Schritte in diesem Abschnitt.
Richten Sie eine VPC ein
Wenn Sie Amazon EKS v. 1.18 verwenden, richten Sie eine VPC ein, die auch über private Subnetze verfügt und entsprechend für externe Load Balancer gekennzeichnet ist. Informationen zum Markieren finden Sie unter: Anwendungslastausgleich auf Amazon EKS und Erstellen Sie eine EMR Studio-Dienstrolle.
Erstellen eines Amazon EKS-Clusters
Starten Sie einen Amazon EKS-Cluster mit mindestens einer verwalteten Knotengruppe. Anweisungen finden Sie unter Einrichten und Erste Schritte mit Amazon EKS.
Erstellen Sie relevante IAM-Richtlinien, Rollen, IdP und SSL/TLS-Zertifikate
Führen Sie die folgenden Schritte aus, um Ihre IAM-Richtlinien, Rollen, IdP und SSL/TLS-Zertifikat zu erstellen:
- Aktivieren Sie den Clusterzugriff für EMR auf EKS.
- Erstellen Sie einen IdP in IAM basierend auf der EKS-OIDC-Anbieter-URL.
- Erstellen Sie ein SSL/TLS-Zertifikat und platzieren Sie es AWS-Zertifikatsmanager.
- Erstellen Sie die relevanten IAM-Richtlinien und -Rollen:
- Jobausführungsrolle
- Aktualisieren Sie die Vertrauensrichtlinie für die Jobausführungsrolle
- Stellen Sie die IAM-Richtlinie für den AWS Load Balancer Controller bereit und erstellen Sie sie
- EMR Studio-Dienstrolle
- EMR Studio-Benutzerrolle
- EMR Studio-Benutzerrichtlinien mit AWS SSO-Benutzern und -Gruppen verknüpft
- Registrieren des Amazon EKS-Clusters bei Amazon EMR um den virtuellen EMR-Cluster zu erstellen
- Erstellen Sie das Passende Sicherheitsgruppen muss jedem erstellten EMR Studio beigefügt werden:
- Arbeitsbereichssicherheitsgruppe
- Motorsicherheitsgruppe
- Kennzeichnen Sie die Sicherheitsgruppen mit den entsprechenden Tags. Anweisungen finden Sie unter Erstellen Sie eine EMR Studio-Dienstrolle.
Erforderliche Installationen in Amazon EKS
Bereitstellen der AWS Load Balancer-Controller im Amazon EKS-Cluster, falls Sie dies noch nicht getan haben.
Erstellen Sie EMR für EKS-relevante Teile und ordnen Sie den Benutzer EMR Studio zu
Führen Sie die folgenden Schritte aus:
- Erstellen Sie mindestens einen virtuellen EMR-Cluster, der dem Amazon EKS-Cluster zugeordnet ist. Anweisungen finden Sie in Schritt 1 von Richten Sie Amazon EMR auf EKS für EMR Studio ein.
- Erstellen Sie mindestens einen verwalteten Endpunkt. Anweisungen finden Sie in Schritt 2 von Richten Sie Amazon EMR auf EKS für EMR Studio ein.
- Erstellen Sie mindestens ein EMR Studio; Verknüpfen Sie das EMR Studio mit den privaten Subnetzen, die mit dem Amazon EKS-Cluster konfiguriert sind. Anweisungen finden Sie unter Erstellen Sie ein EMR-Studio.
- Wenn das EMR Studio verfügbar ist, Ordnen Sie einen AWS SSO-Benutzer oder eine AWS-Gruppe dem EMR Studio zu und wenden Sie eine entsprechende IAM-Richtlinie auf diesen Benutzer an.
Verwenden Sie EMR Studio
Um EMR Studio zu verwenden, führen Sie die folgenden Schritte aus:
- Finden Sie die URL für EMR Studio bei den Studios in einer Region:
- Melden Sie sich mit der aufgeführten URL mit dem AWS SSO-Benutzernamen an, den Sie zuvor verwendet haben.
Nach der Authentifizierung wird der Benutzer zum EMR Studio-Dashboard weitergeleitet.
- Auswählen Erstellen Sie Arbeitsbereich.
- Aussichten für Arbeitsbereichsname, Geben Sie einen Namen ein.
- Aussichten für Teilnetz, wählen Sie das Subnetz aus, das einem der Subnetze entspricht, die der verwalteten Knotengruppe zugeordnet sind.
- Aussichten für S3 StandortGeben Sie einen S3-Bucket ein, in dem Sie den Notizbuchinhalt speichern können.
- Nachdem Sie den Arbeitsbereich erstellt haben, wählen Sie einen aus, der sich im befindet
Ready
Status.
- Wählen Sie in der Seitenleiste das EMR-Cluster-Symbol aus.
- Der Clustertypwählen EMR-Cluster auf EKS.
- Wählen Sie den verfügbaren virtuellen Cluster und den verfügbaren verwalteten Endpunkt aus.
- Auswählen Anfügen.
Nach dem Anhängen zeigt EMR Studio die in der Datei verfügbaren Kernel an Notizbuch und Konsul (Console) .
- Auswählen PySpark (Kubernetes) um einen Notebook-Kernel zu starten und eine Spark-Sitzung zu starten.
Da die Endpunktkonfiguration hier AWS Glue als Metastore verwendet, können Sie die Datenbanken und Tabellen auflisten, die mit dem AWS Glue-Datenkatalog verbunden sind. Sie können das folgende Beispielskript verwenden, um das Setup zu testen. Ändern Sie das Skript nach Bedarf für die entsprechende Datenbank und Tabelle, die Sie in Ihrem Datenkatalog haben:
Aufräumen
Um zukünftige Gebühren zu vermeiden, löschen Sie die hier gestarteten Ressourcen, indem Sie „remove_setup.sh“ ausführen:
Zusammenfassung
Mit EMR auf EKS können Sie Anwendungen auf einem gemeinsamen Ressourcenpool innerhalb eines Amazon EKS-Clusters ausführen, ohne Infrastruktur bereitstellen zu müssen. EMR Studio ist ein vollständig verwaltetes Jupyter-Notebook und -Tool, das Kernel bereitstellt, die auf EMR-Clustern ausgeführt werden, einschließlich virtueller Cluster auf Amazon EKS. In diesem Beitrag haben wir die Architektur beschrieben, wie EMR Studio eine Verbindung mit EMR auf EKS herstellt, und Skripte bereitgestellt, um alle Komponenten automatisch bereitzustellen, um die beiden Dienste zu verbinden.
Wenn Sie Fragen oder Anregungen haben, hinterlassen Sie bitte einen Kommentar.
Über die Autoren
Randy DeFauw ist Principal Solutions Architect bei Amazon Web Services. Er arbeitet mit AWS-Kunden zusammen, um ihnen Beratung und technische Unterstützung bei Datenbankprojekten zu bieten und ihnen dabei zu helfen, den Wert ihrer Lösungen beim Einsatz von AWS zu steigern.
Matthäus Tan ist Senior Analytics Solutions Architect bei Amazon Web Services und berät Kunden, die Lösungen mit AWS Analytics-Services für ihre Analytics-Workloads entwickeln.
- '
- "
- 100
- 7
- 9
- Zugang
- Konto
- aktiv
- Alle
- Zuteilung
- Amazon
- Amazon Web Services
- Analytik
- Apache
- Anwendung
- Anwendungen
- Architektur
- Authentifizierung
- AWS
- Balancer
- bauen
- Fälle
- Bescheinigung
- Gebühren
- Kasse
- Einstufung
- Cloud
- Code
- gemeinsam
- Berechnen
- Inhalt
- fortsetzen
- Controller
- Erstellen
- Referenzen
- Kunden
- Armaturenbrett
- technische Daten
- Datenbase
- Datenbanken
- entwickeln
- Entwicklung
- Fahrer
- Endpunkt
- Unternehmen
- Arbeitsumfeld
- Ausführung
- ERFAHRUNGEN
- Fabrik
- Vorname
- folgen
- Frontal
- Zukunft
- Git
- GitHub
- Gruppe an
- Hadoop
- hier
- Bienenstock
- Ultraschall
- HTTPS
- IAM
- ICON
- Identitätsschutz
- Einschließlich
- Information
- Infrastruktur
- IP
- IT
- Job
- Jupyter Notizbuch
- Kubernetes
- starten
- startet
- Line
- Liste
- Belastung
- Management
- Karte
- Landkarten
- Netzwerk
- Laptops
- Option
- Andere
- physikalisch
- Schoten
- Politik durchzulesen
- Datenschutzrichtlinien
- Pool
- Vorspann
- Principal
- privat
- Projekte
- Python
- Voraussetzungen:
- Ressourcen
- Downloads
- Führen Sie
- Laufen
- Sicherheitdienst
- Leistungen
- kompensieren
- Einfacher
- So
- Lösungen
- SQL
- Anfang
- begonnen
- Bundesstaat
- Status
- Lagerung
- speichern
- Unterstützte
- Target
- Technische
- Test
- Zeit
- der Verkehr
- Vertrauen
- Nutzer
- Wert
- Assistent
- Netz
- Web-Services
- .
- Worte
- Arbeiten
- Werk