Zephyrnet-Logo

Führen Sie interaktive Workloads auf Amazon EMR Serverless über Amazon EMR Studio | aus Amazon Web Services

Datum:

Ab Version 6.14 Amazon EMR-Studio unterstützt interaktive Analysen auf Amazon EMR ohne Server. Sie können jetzt zusätzlich zu Amazon EMR auf EC2-Clustern auch EMR Serverless-Anwendungen als Rechenleistung verwenden Amazon EMR auf EKS virtuelle Cluster, um JupyterLab-Notebooks von EMR Studio Workspaces aus auszuführen.

EMR Studio ist eine integrierte Entwicklungsumgebung (IDE), die es Datenwissenschaftlern und Dateningenieuren erleichtert, in PySpark, Python und Scala geschriebene Analyseanwendungen zu entwickeln, zu visualisieren und zu debuggen. EMR Serverless ist eine serverlose Option für Amazon EMR Dadurch ist es einfach, Open-Source-Frameworks für Big-Data-Analysen wie Apache Spark auszuführen, ohne Cluster oder Server konfigurieren, verwalten und skalieren zu müssen.

Im Beitrag zeigen wir, wie man Folgendes macht:

  • Erstellen Sie einen serverlosen EMR-Endpunkt für interaktive Anwendungen
  • Hängen Sie den Endpunkt an eine vorhandene EMR Studio-Umgebung an
  • Erstellen Sie ein Notizbuch und führen Sie eine interaktive Anwendung aus
  • Diagnostizieren Sie interaktive Anwendungen nahtlos in EMR Studio

Voraussetzungen:

In einer typischen Organisation richtet ein AWS-Kontoadministrator AWS-Ressourcen ein, z AWS Identitäts- und Zugriffsverwaltung (IAM) Rollen, Amazon Simple Storage-Service (Amazon S3) Eimer und Amazon Virtual Private Cloud (Amazon VPC)-Ressourcen für den Internetzugang und den Zugriff auf andere Ressourcen in der VPC. Sie weisen EMR Studio-Administratoren zu, die die Einrichtung von EMR Studios und die Zuweisung von Benutzern zu einem bestimmten EMR Studio verwalten. Nach der Zuweisung können EMR Studio-Entwickler EMR Studio zum Entwickeln und Überwachen von Workloads verwenden.

Stellen Sie sicher, dass Sie Ressourcen wie Ihren S3-Bucket, VPC-Subnetze und EMR Studio in derselben AWS-Region einrichten.

Führen Sie die folgenden Schritte aus, um diese Voraussetzungen bereitzustellen:

  1. Starten Sie Folgendes AWS CloudFormation Stapel.
    Starten Sie Cloudformation Stack
  2. Geben Sie Werte für ein Administrator-Passwort und DevPassword und notieren Sie sich die von Ihnen erstellten Passwörter.
  3. Auswählen Weiter.
  4. Behalten Sie die Standardeinstellungen bei und wählen Sie Weiter erneut.
  5. Auswählen Ich erkenne an, dass AWS CloudFormation möglicherweise IAM-Ressourcen mit benutzerdefinierten Namen erstellt.
  6. Wählen Sie „Senden“..

Wir haben auch Anweisungen zum manuellen Bereitstellen dieser Ressourcen mit Beispiel-IAM-Richtlinien im bereitgestellt GitHub Repo.

Richten Sie EMR Studio und eine serverlose interaktive Anwendung ein

Nachdem der AWS-Kontoadministrator die Voraussetzungen erfüllt hat, kann sich der EMR Studio-Administrator bei anmelden AWS-Managementkonsole um eine EMR Studio-, Workspace- und EMR Serverless-Anwendung zu erstellen.

Erstellen Sie ein EMR-Studio und einen Arbeitsbereich

Der EMR Studio-Administrator sollte sich mit bei der Konsole anmelden emrs-interactive-app-admin-user Benutzeranmeldeinformationen. Wenn Sie die erforderlichen Ressourcen mithilfe der bereitgestellten CloudFormation-Vorlage bereitgestellt haben, verwenden Sie das Kennwort, das Sie als Eingabeparameter angegeben haben.

  1. Wählen Sie auf der Amazon EMR-Konsole EMR Serverlos im Navigationsbereich.
  2. Auswählen Los geht´s.
  3. Auswählen Erstellen und starten Sie EMR Studio.

Dadurch wird ein Studio mit dem Standardnamen erstellt studio_1 und einen Arbeitsbereich mit dem Standardnamen My_First_Workspace. Es öffnet sich ein neuer Browser-Tab Studio_1 Benutzeroberfläche.

Erstellen und starten Sie EMR Studio

Erstellen Sie eine serverlose EMR-Anwendung

Führen Sie die folgenden Schritte aus, um eine EMR Serverless-Anwendung zu erstellen:

  1. Wählen Sie auf der EMR Studio-Konsole aus Anwendungen im Navigationsbereich.
  2. Erstellen Sie eine neue Anwendung.
  3. Aussichten für Name und VornameGeben Sie einen Namen ein (z. B. my-serverless-interactive-application).
  4. Aussichten für Setup-Optionen für AnwendungenWählen Benutzerdefinierte Einstellungen verwenden für interaktive Workloads.
    Erstellen Sie eine serverlose Anwendung mit benutzerdefinierten Einstellungen

Für interaktive Anwendungen empfehlen wir als Best Practice, den Treiber und die Worker durch die Konfiguration vorinitialisiert zu halten vorinitialisierte Kapazität zum Zeitpunkt der Anwendungserstellung. Dadurch wird effektiv ein warmer Pool an Arbeitskräften für eine Anwendung erstellt und die Ressourcen bleiben einsatzbereit, sodass die Anwendung in Sekundenschnelle reagieren kann. Weitere Best Practices zum Erstellen serverloser EMR-Anwendungen finden Sie unter Definieren Sie Ressourcenlimits pro Team für Big-Data-Workloads mit Amazon EMR Serverless.

  1. Im Interaktiver Endpunkt Abschnitt auswählen Aktivieren Sie den interaktiven Endpunkt.
  2. Im Netzwerkverbindungen Wählen Sie im Abschnitt die VPC, die privaten Subnetze und die Sicherheitsgruppe aus, die Sie zuvor erstellt haben.

Wenn Sie den in diesem Beitrag bereitgestellten CloudFormation-Stack bereitgestellt haben, wählen Sie emr-serverless-sg­  als Sicherheitsgruppe.

Damit der Workload über die EMR Serverless-Anwendung auf das Internet zugreifen und externe Python-Pakete herunterladen kann, ist eine VPC erforderlich. Die VPC ermöglicht Ihnen auch den Zugriff auf Ressourcen wie z Relationaler Amazon-Datenbankdienst (Amazon RDS) und Amazon RedShift die sich in der VPC dieser Anwendung befinden. Das Anschließen einer serverlosen Anwendung an eine VPC kann zu einer IP-Erschöpfung im Subnetz führen. Stellen Sie daher sicher, dass in Ihrem Subnetz genügend IP-Adressen vorhanden sind.

  1. Auswählen Anwendung erstellen und starten.

Aktivieren Sie interaktive Endpunkte, wählen Sie private Subnetze und Sicherheitsgruppen

Auf der Anwendungsseite können Sie überprüfen, ob sich der Status Ihrer serverlosen Anwendung in ändert Begann.

  1. Wählen Sie Ihre Anwendung aus und wählen Sie So funktioniert's.
  2. Auswählen Arbeitsbereiche anzeigen und starten.
  3. Auswählen Studio konfigurieren.

  1. Aussichten für Servicerolle¸ Stellen Sie die EMR Studio-Servicerolle bereit, die Sie als Voraussetzung erstellt haben (emr-studio-service-role).
  2. Aussichten für ArbeitsplatzspeicherGeben Sie den Pfad des S3-Buckets ein, den Sie als Voraussetzung erstellt haben (emrserverless-interactive-blog-<account-id>-<region-name>).
  3. Auswählen Änderungen speichern.

Wählen Sie „emr-studio-service-role“ und „emrserverless-interactive-blog s3 Bucket“.

14. Navigieren Sie zur Studios-Konsole, indem Sie wählen Studios im linken Navigationsmenü im EMR-Studio Abschnitt. Beachten Sie das Studio-Zugriffs-URL von der Studios-Konsole aus und stellen Sie es Ihren Entwicklern zur Verfügung, damit diese ihre Spark-Anwendungen ausführen können.

Führen Sie Ihre erste Spark-Anwendung aus

Nachdem der EMR Studio-Administrator das Studio, den Workspace und die serverlose Anwendung erstellt hat, kann der Studio-Benutzer den Workspace und die Anwendung verwenden, um Spark-Workloads zu entwickeln und zu überwachen.

Starten Sie den Arbeitsbereich und hängen Sie die serverlose Anwendung an

Führen Sie die folgenden Schritte aus:

  1. Melden Sie sich mit der vom EMR Studio-Administrator bereitgestellten Studio-URL an emrs-interactive-app-dev-user Benutzeranmeldeinformationen, die vom AWS-Kontoadministrator geteilt werden.

Wenn Sie die erforderlichen Ressourcen mithilfe der bereitgestellten CloudFormation-Vorlage bereitgestellt haben, verwenden Sie das Kennwort, das Sie als Eingabeparameter angegeben haben.

Auf dem Workspaces Auf der Seite können Sie den Status Ihres Arbeitsbereichs überprüfen. Wenn der Arbeitsbereich gestartet wird, sehen Sie, dass sich der Status in ändert Bereit.

  1. Starten Sie den Arbeitsbereich, indem Sie den Namen des Arbeitsbereichs auswählen (My_First_Workspace).

Dadurch wird ein neuer Tab geöffnet. Stellen Sie sicher, dass Ihr Browser Pop-ups zulässt.

  1. Wählen Sie im Arbeitsbereich Berechnen (Cluster-Symbol) im Navigationsbereich.
  2. Aussichten für EMR Serverless-Anwendung, wählen Sie Ihre Anwendung (my-serverless-interactive-application).
  3. Aussichten für Interaktive Laufzeitrolle, wählen Sie eine interaktive Laufzeitrolle (für diesen Beitrag verwenden wir emr-serverless-runtime-role).
  4. Auswählen Anfügen um die serverlose Anwendung als Rechentyp für alle Notebooks in diesem Arbeitsbereich anzuhängen.

Wählen Sie „my-serverless-interactive-application“ als Ihre App und „emr-serverless-runtime-role“ und hängen Sie sie an

Führen Sie Ihre Spark-Anwendung interaktiv aus

Führen Sie die folgenden Schritte aus:

  1. Wähle die Notebook-Beispiele (Symbol mit drei Punkten) im Navigationsbereich und öffnen Sie es Getting-started-with-emr-serverless Notebook.
  2. Auswählen Im Arbeitsbereich speichern.

Für unser Notebook stehen drei Kernel zur Auswahl: Python 3, PySpark und Spark (für Scala).

  1. Wenn Sie dazu aufgefordert werden, wählen Sie PySpark als der Kernel.
  2. Auswählen Auswählen.

Wählen Sie PySpark als Kernel

Jetzt können Sie Ihre Spark-Anwendung ausführen. Verwenden Sie dazu die %%configure Funkenmagie Befehl, der die Parameter für die Sitzungserstellung konfiguriert. Interaktive Anwendungen unterstützen virtuelle Python-Umgebungen. Wir verwenden eine benutzerdefinierte Umgebung in den Worker-Knoten, indem wir einen Pfad für eine andere Python-Laufzeit für die Executor-Umgebung angeben spark.executorEnv.PYSPARK_PYTHON. Siehe folgenden Code:

%%configure -f
{
  "conf": {
    "spark.pyspark.virtualenv.enabled": "true",
    "spark.pyspark.virtualenv.bin.path": "/usr/bin/virtualenv",
    "spark.pyspark.virtualenv.type": "native",
    "spark.pyspark.python": "/usr/bin/python3",
    "spark.executorEnv.PYSPARK_PYTHON": "/usr/bin/python3"
  }
}

Externe Pakete installieren

Da Sie nun über eine unabhängige virtuelle Umgebung für die Mitarbeiter verfügen, können Sie mit EMR Studio-Notebooks mithilfe von Spark externe Pakete aus der serverlosen Anwendung heraus installieren install_pypi_package Funktion über den Spark-Kontext. Durch die Verwendung dieser Funktion wird das Paket für alle EMR Serverless-Worker verfügbar gemacht.

Installieren Sie zunächst matplotlib, ein Python-Paket, von PyPi:

sc.install_pypi_package("matplotlib")

Wenn der vorherige Schritt nicht reagiert, überprüfen Sie Ihr VPC-Setup und stellen Sie sicher, dass es für den Internetzugang richtig konfiguriert ist.

Jetzt können Sie einen Datensatz verwenden und Ihre Daten visualisieren.

Erstellen Sie Visualisierungen

Um Visualisierungen zu erstellen, verwenden wir einen öffentlichen Datensatz über gelbe Taxis in New York:

file_name = "s3://athena-examples-us-east-1/notebooks/yellow_tripdata_2016-01.parquet"
taxi_df = (spark.read.format("parquet").option("header", "true") 
.option("inferSchema", "true").load(file_name))

Im vorherigen Codeblock lesen Sie die Parquet-Datei aus einem öffentlichen Bucket in Amazon S3. Die Datei hat Header und wir möchten, dass Spark das Schema ableitet. Anschließend verwenden Sie einen Spark-Datenrahmen, um bestimmte Spalten daraus zu gruppieren und zu zählen taxi_df:

taxi1_df = taxi_df.groupBy("VendorID", "passenger_count").count()
taxi1_df.show()

Verwenden Sie die %%display magic, um das Ergebnis im Tabellenformat anzuzeigen:

%%display
taxi1_df

Die Tabelle zeigt die Spalten „vendor_id“, „passagier_count“ und „count“.

Sie können Ihre Daten auch schnell mit fünf Diagrammtypen visualisieren. Sie können den Anzeigetyp auswählen und das Diagramm ändert sich entsprechend. Im folgenden Screenshot verwenden wir ein Balkendiagramm zur Visualisierung unserer Daten.

Balkendiagramm, das die Passagieranzahl für jede Vendor_ID zeigt

Interagieren Sie mit EMR Serverless über Spark SQL

Sie können mit Tabellen im interagieren AWS Glue-Datenkatalog Verwendung von Spark SQL auf EMR Serverless. Im Beispielnotizbuch zeigen wir, wie Sie Daten mithilfe eines Spark-Datenrahmens transformieren können.

Erstellen Sie zunächst eine neue temporäre Ansicht mit dem Namen „Taxis“. Dadurch können Sie Spark SQL verwenden, um Daten aus dieser Ansicht auszuwählen. Erstellen Sie dann einen Taxi-Datenrahmen zur weiteren Verarbeitung:

taxi_df.createOrReplaceTempView("taxis")
sqlDF = spark.sql(
    "SELECT DOLocationID, sum(total_amount) as sum_total_amount 
     FROM taxis where DOLocationID < 25 Group by DOLocationID ORDER BY DOLocationID"
)
sqlDF.show(5)

Die Tabelle zeigt die Spalten „vendor_id“, „passagier_count“ und „count“.

In jeder Zelle Ihres EMR Studio-Notizbuchs können Sie erweitern Spark-Jobfortschritt um die verschiedenen Phasen des an EMR Serverless übermittelten Jobs anzuzeigen, während diese bestimmte Zelle ausgeführt wird. Sie können die Zeit sehen, die zum Abschließen jeder Phase benötigt wird. Im folgenden Beispiel umfasst Phase 14 des Auftrags 12 abgeschlossene Aufgaben. Darüber hinaus können Sie im Falle eines Fehlers die Protokolle einsehen, was die Fehlerbehebung zu einem reibungslosen Erlebnis macht. Wir besprechen dies im nächsten Abschnitt ausführlicher.

Job[14]: showString bei NativeMethodAccessorImpl.java:0 und Job[15]: showString bei NativeMethodAccessorImpl.java:0

Verwenden Sie den folgenden Code, um den verarbeiteten Datenrahmen mithilfe des matplotlib-Pakets zu visualisieren. Sie verwenden die Bibliothek „maptplotlib“, um den Abgabeort und die Gesamtmenge als Balkendiagramm darzustellen.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.clf()
df = sqlDF.toPandas()
plt.bar(df.DOLocationID, df.sum_total_amount)
%matplot plt

Diagnostizieren Sie interaktive Anwendungen

Sie können die Sitzungsinformationen für Ihren Livy-Endpunkt mithilfe von abrufen %%info Funkenmagie. Dadurch erhalten Sie Links zum Zugriff auf die Spark-Benutzeroberfläche sowie das Fahrerprotokoll direkt in Ihrem Notebook.

Der folgende Screenshot ist ein Treiberprotokollausschnitt für unsere Anwendung, den wir über den Link in unserem Notizbuch geöffnet haben.

Screenshot des Fahrerprotokolls

Ebenso können Sie den untenstehenden Link wählen Spark-Benutzeroberfläche um die Benutzeroberfläche zu öffnen. Der folgende Screenshot zeigt die Vollstrecker Registerkarte, die Zugriff auf die Treiber- und Executor-Protokolle bietet.

Der folgende Screenshot zeigt Stufe 14, die dem zuvor gesehenen Spark SQL-Schritt entspricht, in dem wir die standortbezogene Summe der gesamten Taxisammlungen berechnet haben, die in 12 Aufgaben unterteilt wurde. Über die Spark-Benutzeroberfläche stellt die interaktive Anwendung direkt von Ihrem Notebook aus detaillierte Status-, E/A- und Shuffle-Details auf Aufgabenebene sowie Links zu entsprechenden Protokollen für jede Aufgabe für diese Phase bereit und ermöglicht so eine nahtlose Fehlerbehebung.

Aufräumen

Wenn Sie die in diesem Beitrag erstellten Ressourcen nicht mehr behalten möchten, führen Sie die folgenden Bereinigungsschritte aus:

  1. Löschen Sie die EMR Serverless-Anwendung.
  2. Löschen Sie das EMR Studio und die zugehörigen Arbeitsbereiche und Notizbücher.
  3. Um die restlichen Ressourcen zu löschen, navigieren Sie zur CloudFormation-Konsole, wählen Sie den Stack aus und wählen Sie Löschen.

Alle Ressourcen werden gelöscht, mit Ausnahme des S3-Buckets, dessen Löschrichtlinie auf „Beibehalten“ eingestellt ist.

Zusammenfassung

Der Beitrag zeigte, wie man interaktive PySpark-Workloads in EMR Studio mit EMR Serverless als Rechenleistung ausführt. Sie können Spark-Anwendungen auch in einem interaktiven JupyterLab Workspace erstellen und überwachen.

In einem kommenden Beitrag werden wir zusätzliche Funktionen von EMR Serverless Interactive-Anwendungen besprechen, wie zum Beispiel:

  • Arbeiten mit Ressourcen wie Amazon RDS und Amazon Redshift in Ihrer VPC (z. B. für JDBC/ODBC-Konnektivität)
  • Ausführen transaktionaler Arbeitslasten mithilfe serverloser Endpunkte

Wenn Sie EMR Studio zum ersten Mal erkunden, empfehlen wir Ihnen, sich das anzusehen Amazon EMR-Workshops und unter Bezugnahme auf Erstellen Sie ein EMR-Studio.


Über die Autoren

Sekar Srinivasan ist Principal Specialist Solutions Architect bei AWS mit Schwerpunkt auf Datenanalyse und KI. Sekar verfügt über mehr als 20 Jahre Erfahrung im Umgang mit Daten. Seine Leidenschaft besteht darin, Kunden dabei zu helfen, skalierbare Lösungen zu entwickeln, ihre Architektur zu modernisieren und Erkenntnisse aus ihren Daten zu gewinnen. In seiner Freizeit arbeitet er gerne an gemeinnützigen Projekten, die sich auf die Bildung benachteiligter Kinder konzentrieren.

Disha Umarwani ist Senior Data Architect bei Amazon Professional Services im Bereich Global Health Care und LifeSciences. Sie hat mit Kunden zusammengearbeitet, um maßstabsgetreue Datenstrategien zu entwerfen, zu entwerfen und umzusetzen. Sie ist auf die Architektur von Data Mesh-Architekturen für Unternehmensplattformen spezialisiert.

spot_img

Neueste Intelligenz

spot_img