Xlera8

Uruchamiaj interaktywne zadania na Amazon EMR Serverless z Amazon EMR Studio | Usługi internetowe Amazona

Począwszy od wersji 6.14, Studio Amazon EMR obsługuje interaktywne analizy wł Bezserwerowe Amazon EMR. Możesz teraz używać aplikacji EMR Serverless jako zasobów obliczeniowych, oprócz Amazon EMR w klastrach EC2 i Amazon EMR na EKS klastry wirtualne do uruchamiania notatników JupyterLab z obszarów roboczych EMR Studio.

EMR Studio to zintegrowane środowisko programistyczne (IDE), które ułatwia analitykom i inżynierom danych tworzenie, wizualizację i debugowanie aplikacji analitycznych napisanych w językach PySpark, Python i Scala. EMR Serverless to opcja bezserwerowa dla Amazon EMR dzięki temu uruchamianie platform analizy dużych zbiorów danych typu open source, takich jak Apache Spark, jest proste, bez konieczności konfigurowania, zarządzania i skalowania klastrów lub serwerów.

W poście pokazujemy, jak wykonać następujące czynności:

  • Utwórz bezserwerowy punkt końcowy EMR dla aplikacji interaktywnych
  • Podłącz punkt końcowy do istniejącego środowiska EMR Studio
  • Utwórz notatnik i uruchom interaktywną aplikację
  • Bezproblemowo diagnozuj aplikacje interaktywne z poziomu EMR Studio

Wymagania wstępne

W typowej organizacji administrator konta AWS skonfiguruje zasoby AWS, takie jak Zarządzanie tożsamością i dostępem w AWS (IAM) role, Usługa Amazon Simple Storage (Amazon S3) łyżki i Wirtualna prywatna chmura Amazon Zasoby (Amazon VPC) umożliwiające dostęp do Internetu i dostęp do innych zasobów w VPC. Przydzielają administratorów EMR Studio, którzy zarządzają konfiguracją EMR Studios i przypisywaniem użytkowników do konkretnego EMR Studio. Po przypisaniu programiści EMR Studio mogą używać EMR Studio do tworzenia i monitorowania obciążeń.

Upewnij się, że skonfigurowałeś zasoby, takie jak zasobnik S3, podsieci VPC i EMR Studio w tym samym regionie AWS.

Wykonaj następujące kroki, aby wdrożyć te wymagania wstępne:

  1. Uruchom następujące Tworzenie chmury AWS stos.
    Uruchom stos Cloudformation
  2. Wprowadź wartości dla Hasło administratora i Hasło dewelopera i zanotuj utworzone hasła.
  3. Dodaj Następna.
  4. Zachowaj ustawienia domyślne i wybierz Następna ponownie.
  5. Wybierz Potwierdzam, że AWS CloudFormation może tworzyć zasoby IAM o niestandardowych nazwach.
  6. Wybierz opcję Prześlij.

Udostępniliśmy także instrukcje dotyczące ręcznego wdrażania tych zasobów przy użyciu przykładowych zasad uprawnień w pliku GitHub repo.

Skonfiguruj EMR Studio i interaktywną aplikację bezserwerową

Gdy administrator konta AWS spełni wymagania wstępne, administrator EMR Studio może zalogować się do Konsola zarządzania AWS aby utworzyć aplikację EMR Studio, Workspace i EMR Serverless.

Utwórz studio i przestrzeń roboczą EMR

Administrator EMR Studio powinien zalogować się do konsoli za pomocą komendy emrs-interactive-app-admin-user Poświadczenia użytkownika. Jeśli wdrożyłeś wstępnie wymagane zasoby przy użyciu dostarczonego szablonu CloudFormation, użyj hasła podanego jako parametru wejściowego.

  1. W konsoli Amazon EMR wybierz EMR bez serwera w okienku nawigacji.
  2. Dodaj Rozpocznij.
  3. Wybierz Utwórz i uruchom EMR Studio.

Spowoduje to utworzenie Studio z domyślną nazwą studio_1 oraz obszar roboczy z domyślną nazwą My_First_Workspace. Otworzy się nowa karta przeglądarki Studio_1 interfejs użytkownika.

Utwórz i uruchom EMR Studio

Utwórz aplikację bezserwerową EMR

Wykonaj następujące kroki, aby utworzyć aplikację EMR Serverless:

  1. W konsoli EMR Studio wybierz Konsultacje w okienku nawigacji.
  2. Stwórz nową aplikację.
  3. W razie zamówieenia projektu Imięwprowadź nazwę (na przykład my-serverless-interactive-application).
  4. W razie zamówieenia projektu Opcje konfiguracji aplikacji, Wybierz Użyj ustawień niestandardowych do zadań interaktywnych.
    Utwórz aplikację bezserwerową, korzystając z ustawień niestandardowych

W przypadku aplikacji interaktywnych jako najlepszą praktykę zalecamy wstępną inicjalizację sterownika i procesów roboczych poprzez skonfigurowanie pliku wstępnie zainicjowana pojemność w momencie tworzenia aplikacji. To skutecznie tworzy ciepłą pulę procesów roboczych dla aplikacji i utrzymuje zasoby gotowe do użycia, umożliwiając aplikacji reakcję w ciągu kilku sekund. Dalsze najlepsze praktyki dotyczące tworzenia aplikacji EMR Serverless można znaleźć w artykule Zdefiniuj limity zasobów na zespół dla obciążeń Big Data za pomocą Amazon EMR Serverless.

  1. W Interaktywny punkt końcowy sekcja, wybierz Włącz interaktywny punkt końcowy.
  2. W Połączenia sieciowe wybierz utworzoną wcześniej sieć VPC, podsieci prywatne i grupę zabezpieczeń.

Jeśli wdrożyłeś stos CloudFormation podany w tym poście, wybierz emr-serverless-sg­  jako grupa bezpieczeństwa.

Aby obciążenie mogło uzyskać dostęp do Internetu z poziomu aplikacji EMR Serverless w celu pobrania zewnętrznych pakietów Pythona, wymagana jest platforma VPC. VPC umożliwia także dostęp do zasobów takich jak Usługa relacyjnych baz danych Amazon (Amazon RDS) i Amazonka Przesunięcie ku czerwieni które znajdują się w VPC z tej aplikacji. Podłączenie aplikacji bezserwerowej do VPC może prowadzić do wyczerpania adresu IP w podsieci, dlatego upewnij się, że w Twojej podsieci jest wystarczająca liczba adresów IP.

  1. Dodaj Utwórz i uruchom aplikację.

Włącz interaktywne punkty końcowe, wybierz prywatne podsieci i grupę zabezpieczeń

Na stronie aplikacji możesz sprawdzić, czy stan aplikacji bezserwerowej zmienia się na Rozpoczęty.

  1. Wybierz swoją aplikację i wybierz Jak to działa?.
  2. Dodaj Przeglądaj i uruchamiaj obszary robocze.
  3. Dodaj Skonfiguruj studio.

  1. W razie zamówieenia projektu Rola usługi¸ jako warunek wstępny podaj utworzoną rolę usługi EMR Studio (emr-studio-service-role).
  2. W razie zamówieenia projektu Przechowywanie przestrzeni roboczej, jako warunek wstępny wprowadź ścieżkę do segmentu S3, który utworzyłeś (emrserverless-interactive-blog-<account-id>-<region-name>).
  3. Dodaj Zapisz zmiany.

Wybierz emr-studio-service-role i emrserverless-interactive-blog s3 wiadro

14. Przejdź do konsoli Studios, wybierając Studios w lewym menu nawigacyjnym w Studio EM Sekcja. Zanotuj Adres URL dostępu do studia z konsoli Studios i udostępnij ją programistom, aby mogli uruchamiać aplikacje Spark.

Uruchom swoją pierwszą aplikację Spark

Po utworzeniu przez administratora EMR Studio aplikacji Studio, Workspace i aplikacji bezserwerowej użytkownik Studio może używać Workspace i aplikacji do tworzenia i monitorowania obciążeń Spark.

Uruchom obszar roboczy i podłącz aplikację bezserwerową

Wykonaj następujące kroki:

  1. Korzystając z adresu URL Studio podanego przez administratora EMR Studio, zaloguj się przy użyciu emrs-interactive-app-dev-user poświadczenia użytkownika udostępnione przez administratora konta AWS.

Jeśli wdrożyłeś wstępnie wymagane zasoby przy użyciu dostarczonego szablonu CloudFormation, użyj hasła podanego jako parametru wejściowego.

Na Przestrzenie robocze możesz sprawdzić stan swojego obszaru roboczego. Po uruchomieniu Workspace zobaczysz zmianę statusu na Gotowy.

  1. Uruchom obszar roboczy, wybierając nazwę obszaru roboczego (My_First_Workspace).

Spowoduje to otwarcie nowej karty. Upewnij się, że Twoja przeglądarka zezwala na wyskakujące okienka.

  1. W obszarze roboczym wybierz obliczać (ikona klastra) w panelu nawigacji.
  2. W razie zamówieenia projektu Aplikacja bezserwerowa EMR, wybierz swoją aplikację (my-serverless-interactive-application).
  3. W razie zamówieenia projektu Interaktywna rola środowiska uruchomieniowego, wybierz interaktywną rolę środowiska wykonawczego (w tym poście używamy emr-serverless-runtime-role).
  4. Dodaj Dołączać aby dołączyć aplikację bezserwerową jako typ obliczeń dla wszystkich notesów w tym obszarze roboczym.

Wybierz my-serverless-interactive-application jako swoją aplikację oraz rolę emr-serverless-runtime-aplikację i dołącz

Uruchom aplikację Spark interaktywnie

Wykonaj następujące kroki:

  1. Wybierz Próbki notatników (ikona trzech kropek) w panelu nawigacji i otwórz Getting-started-with-emr-serverless notatnik.
  2. Dodaj Zapisz w obszarze roboczym.

Istnieją trzy możliwości wyboru jądra dla naszego notebooka: Python 3, PySpark i Spark (dla Scali).

  1. Po wyświetleniu monitu wybierz PySpark jako jądro.
  2. Dodaj Wybierz.

Wybierz PySpark jako jądro

Teraz możesz uruchomić aplikację Spark. Aby to zrobić, użyj %%configure Iskramagia polecenie, które konfiguruje parametry tworzenia sesji. Aplikacje interaktywne obsługują środowiska wirtualne Python. Używamy niestandardowego środowiska w węzłach roboczych, określając ścieżkę do innego środowiska wykonawczego Pythona dla środowiska wykonawczego za pomocą spark.executorEnv.PYSPARK_PYTHON. Zobacz następujący kod:

%%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"
  }
}

Zainstaluj pakiety zewnętrzne

Teraz, gdy masz niezależne środowisko wirtualne dla pracowników, notebooki EMR Studio umożliwiają instalowanie pakietów zewnętrznych z poziomu aplikacji bezserwerowej za pomocą platformy Spark install_pypi_package działać poprzez kontekst Spark. Użycie tej funkcji sprawia, że ​​pakiet jest dostępny dla wszystkich pracowników EMR Serverless.

Najpierw zainstaluj matplotlib, pakiet Pythona, z PyPi:

sc.install_pypi_package("matplotlib")

Jeśli poprzedni krok nie odpowiada, sprawdź konfigurację VPC i upewnij się, że jest ona poprawnie skonfigurowana pod kątem dostępu do Internetu.

Teraz możesz korzystać ze zbioru danych i wizualizować swoje dane.

Twórz wizualizacje

Do tworzenia wizualizacji korzystamy z publicznego zbioru danych na temat żółtych taksówek w Nowym Jorku:

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))

W poprzednim bloku kodu czytasz plik Parquet z publicznego segmentu w Amazon S3. Plik ma nagłówki i chcemy, aby Spark wywnioskował schemat. Następnie używasz ramki danych Spark do grupowania i zliczania określonych kolumn taxi_df:

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

Zastosowanie %%display magic, aby wyświetlić wynik w formacie tabeli:

%%display
taxi1_df

Tabela zawiera kolumny identyfikator_dostawcy, liczba_pasażerów i liczba

Możesz także szybko wizualizować swoje dane za pomocą pięciu typów wykresów. Możesz wybrać typ wyświetlania, a wykres zostanie odpowiednio zmieniony. Na poniższym zrzucie ekranu używamy wykresu słupkowego do wizualizacji naszych danych.

wykres słupkowy pokazujący liczbę pasażerów w odniesieniu do każdego identyfikatora dostawcy

Wejdź w interakcję z EMR Serverless za pomocą Spark SQL

Możesz wchodzić w interakcję z tabelami w pliku Katalog danych kleju AWS przy użyciu Spark SQL na platformie EMR Serverless. W przykładowym notesie pokazujemy, jak można przekształcić dane za pomocą ramki danych Spark.

Najpierw utwórz nowy widok tymczasowy o nazwie taksówki. Dzięki temu można używać Spark SQL do wybierania danych z tego widoku. Następnie utwórz ramkę danych taksówki do dalszego przetwarzania:

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)

Tabela zawiera kolumny identyfikator_dostawcy, liczba_pasażerów i liczba

W każdej komórce w notatniku EMR Studio możesz rozwinąć Postęp pracy w trybie Spark aby wyświetlić różne etapy zadania przesłanego do EMR Serverless podczas uruchamiania tej konkretnej komórki. Możesz zobaczyć czas potrzebny na ukończenie każdego etapu. W poniższym przykładzie etap 14 zadania obejmuje 12 ukończonych zadań. Ponadto w przypadku jakiejkolwiek awarii można wyświetlić dzienniki, dzięki czemu rozwiązywanie problemów będzie przebiegać bezproblemowo. Omówimy to szerzej w następnej sekcji.

Job[14]: showString w NativeMethodAccessorImpl.java:0 i Job[15]: showString w NativeMethodAccessorImpl.java:0

Użyj poniższego kodu, aby zwizualizować przetworzoną ramkę danych przy użyciu pakietu matplotlib. Do wykreślenia lokalizacji zrzutu i całkowitej kwoty w postaci wykresu słupkowego służy biblioteka maptplotlib.

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

Diagnozuj aplikacje interaktywne

Informacje o sesji dla punktu końcowego usługi Livy można uzyskać za pomocą pliku %%info Iskramagia. Dzięki temu uzyskasz łącza umożliwiające dostęp do interfejsu użytkownika platformy Spark oraz dziennika sterowników bezpośrednio w notatniku.

Poniższy zrzut ekranu to fragment dziennika sterownika naszej aplikacji, który otworzyliśmy poprzez łącze w naszym notatniku.

zrzut ekranu dziennika sterowników

Podobnie możesz wybrać poniższy link Interfejs Spark aby otworzyć interfejs użytkownika. Poniższy zrzut ekranu przedstawia Wykonawcy zakładka, która zapewnia dostęp do dzienników sterownika i modułu wykonawczego.

Poniższy zrzut ekranu przedstawia etap 14, który odpowiada etapowi Spark SQL, który widzieliśmy wcześniej, w którym obliczyliśmy sumę lokalizacji wszystkich taksówek, która została podzielona na 12 zadań. Dzięki interfejsowi Spark interaktywna aplikacja zapewnia szczegółowe informacje o stanie na poziomie zadania, operacjach we/wy i losowaniu, a także łącza do odpowiednich dzienników każdego zadania na tym etapie bezpośrednio z poziomu notebooka, umożliwiając bezproblemowe rozwiązywanie problemów.

Sprzątać

Jeśli nie chcesz już zachować zasobów utworzonych w tym poście, wykonaj następujące kroki czyszczenia:

  1. Usuń aplikację EMR Serverless.
  2. Usuń Studio EMR oraz powiązane obszary robocze i notesy.
  3. Aby usunąć resztę zasobów, przejdź do konsoli CloudFormation, wybierz stos i wybierz Usuń.

Wszystkie zasoby zostaną usunięte z wyjątkiem zasobnika S3, dla którego ustawiono zasady usuwania.

Wnioski

W poście pokazano, jak uruchamiać interaktywne obciążenia PySpark w EMR Studio przy użyciu EMR Serverless jako obliczeń. Możesz także tworzyć i monitorować aplikacje Spark w interaktywnym obszarze roboczym JupyterLab.

W nadchodzącym poście omówimy dodatkowe możliwości aplikacji EMR Serverless Interactive, takie jak:

  • Praca z zasobami takimi jak Amazon RDS i Amazon Redshift w Twoim VPC (na przykład dla łączności JDBC/ODBC)
  • Uruchamianie obciążeń transakcyjnych przy użyciu bezserwerowych punktów końcowych

Jeśli po raz pierwszy spotykasz się z EMR Studio, zalecamy sprawdzenie Warsztaty Amazon EMR i powołując się na Utwórz studio EMR.


O autorach

Sekar Srinivasan jest głównym architektem rozwiązań specjalistycznych w AWS, specjalizującym się w analizie danych i sztucznej inteligencji. Sekar ma ponad 20-letnie doświadczenie w pracy z danymi. Pasjonuje się pomaganiem klientom w budowaniu skalowalnych rozwiązań, modernizując ich architekturę i generując wnioski z ich danych. W wolnym czasie lubi pracować nad projektami non-profit, skupiającymi się na edukacji dzieci upośledzonych.

Disha Umarwani jest starszym architektem danych w Amazon Professional Services w działach Global Health Care i LifeSciences. Współpracowała z klientami przy projektowaniu, architekturze i wdrażaniu strategii danych na dużą skalę. Specjalizuje się w projektowaniu architektur Data Mesh dla platform Enterprise.

Czat z nami

Cześć! Jak mogę ci pomóc?