Amazon EMR na Amazon EKS zapewnia opcję wdrażania dla Amazon EMR co pozwala na uruchamianie obciążeń analitycznych Elastyczna usługa Amazon Kubernetes (Amazon EKS). Jest to atrakcyjna opcja, ponieważ umożliwia uruchamianie aplikacji na wspólnej puli zasobów bez konieczności udostępniania infrastruktury. Ponadto możesz użyć Studio Amazon EMR do zbudowania kodu analitycznego działającego w klastrach Amazon EKS. EMR Studio to internetowe, zintegrowane środowisko programistyczne (IDE) wykorzystujące w pełni zarządzane notebooki Jupyter, które można podłączyć do dowolnego klastra EMR, w tym EMR na EKS. To używa Jednokrotne logowanie AWS (SSO) lub kompatybilnego dostawcę tożsamości (IdP), aby zalogować się bezpośrednio do EMR Studio za pośrednictwem bezpiecznego adresu URL przy użyciu poświadczeń firmowych.
Wdrożenie EMR Studio w celu połączenia się z EMR na EKS wymaga integracji kilku usług AWS:
Ponadto należy zainstalować następujący program EMR na komponentach EKS:
Ten post pomoże Ci zbudować wszystkie niezbędne komponenty i połączyć je w całość, uruchamiając jeden skrypt. Opisujemy także architekturę tej konfiguracji i sposób współpracy komponentów.
Przegląd architektury
Dzięki EMR na EKS możesz uruchamiać aplikacje Spark wraz z innymi typami aplikacji w tym samym klastrze Amazon EKS, co poprawia alokację zasobów i upraszcza zarządzanie infrastrukturą. Aby uzyskać więcej informacji na temat działania Amazon EMR w klastrze Amazon EKS, zobacz Nowość – Amazon EMR w usłudze Amazon Elastic Kubernetes Service (EKS). EMR Studio udostępnia internetowe środowisko IDE, które ułatwia tworzenie, wizualizację i debugowanie aplikacji działających w środowisku EMR. Aby uzyskać więcej informacji, zobacz Amazon EMR Studio (wersja zapoznawcza): nowe środowisko IDE przeznaczone dla notebooków z Amazon EMR.
Jądra Spark to zaplanowane zasobniki w przestrzeni nazw w klastrze Amazon EKS. EMR Studio używa Jupyter Enterprise Gateway (JEG) do uruchamiania jąder Spark na Amazon EKS. Zarządzany punkt końcowy typu JEG jest udostępniany jako wdrożenie Kubernetes w powiązanej przestrzeni nazw klastra wirtualnego EMR i udostępniany jako usługa Kubernetes. Każdy klaster wirtualny EMR jest mapowany na przestrzeń nazw Kubernetes zarejestrowaną w klastrze Amazon EKS; klastry wirtualne nie zarządzają fizycznymi obliczeniami ani magazynem, ale wskazują przestrzeń nazw Kubernetes, w której zaplanowano obciążenie. Każdy klaster wirtualny może mieć kilka zarządzanych punktów końcowych, każdy z własnym jądrem skonfigurowanym do różnych zastosowań i potrzeb. Zarządzane przez JEG punkty końcowe zapewniają punkty końcowe HTTPS obsługiwane przez moduł równoważenia obciążenia aplikacji (ALB), do których można uzyskać dostęp tylko z EMR Studio i samodzielnie hostowanych notatników utworzonych w prywatnej podsieci Amazon EKS VPC.
Poniższy schemat ilustruje architekturę rozwiązania.
Zarządzany punkt końcowy jest tworzony w przestrzeni nazw Amazon EKS klastra wirtualnego (w tym przypadku sparkns
), a punkty końcowe HTTPS są obsługiwane z podsieci prywatnych. Moduły jądra działają z rolą IAM wykonywania zadań zdefiniowaną w zarządzanym punkcie końcowym. Podczas tworzenia zarządzanego punktu końcowego EMR na EKS używa kontrolera równoważenia obciążenia AWS w pliku kube-system
przestrzeni nazw, aby utworzyć ALB z grupą docelową, która łączy się z punktem końcowym zarządzanym przez JEG w przestrzeni nazw Kubernetes klastra wirtualnego.
Jądro każdego zarządzanego punktu końcowego można skonfigurować inaczej. Na przykład, aby zezwolić na użycie jądra Spark Klej AWS jako ich katalog, możesz zastosować następujący plik konfiguracyjny JSON w —configuration-overrides
flaga podczas tworzenia zarządzanego punktu końcowego:
Zarządzany punkt końcowy to wdrożenie Kubernetes obsługiwane przez usługę w skonfigurowanej przestrzeni nazw (w tym przypadku sparkns
). Śledząc informacje o punkcie końcowym, możemy zobaczyć, jak wdrożenie Jupyter Enterprise Gateway łączy się z ALB i grupą docelową:
Aby zobaczyć, jak to się łączy, rozważ dwie sesje EMR Studio. ALB udostępnia port 18888 sesjom EMR Studio. Usługa JEG mapuje zewnętrzny port 18888 na ALB na dynamiczny NodePort
w serwisie JEG (w tym przypadku 30091). Usługa JEG przekazuje ruch do TargetPort
9547, który kieruje ruch do odpowiedniego modułu sterownika Spark. Każda sesja notesu ma własne jądro, które ma własne sterowniki Spark i moduły wykonujące, jak pokazano na poniższym diagramie.
Podłącz EMR Studio do klastra wirtualnego i zarządzanego punktu końcowego
Za każdym razem, gdy użytkownik dołącza klaster wirtualny i zarządzany punkt końcowy do swojego obszaru roboczego Studio i uruchamia sesję Spark, zaplanowane są sterowniki Spark i moduły wykonujące Spark. Możesz to zobaczyć, kiedy biegniesz kubectl
aby sprawdzić jakie pody zostały uruchomione:
Każda sesja jądra notebooka Spark wdraża moduł sterownika i moduł wykonawczy, które działają do momentu zamknięcia sesji jądra.
Kod w komórkach notatnika jest uruchamiany w modułach wykonawczych wdrożonych w klastrze Amazon EKS.
Skonfiguruj EMR w EKS i EMR Studio
Aby skonfigurować zarówno EMR w EKS, jak i EMR Studio, wymaganych jest kilka kroków i elementów. Włączenie logowania jednokrotnego AWS jest warunkiem wstępnym. Możesz użyć dwóch dostarczonych skryptów uruchamiania w tej sekcji lub wdrożyć je ręcznie, wykonując czynności opisane w dalszej części tego posta.
W tym poście udostępniamy dwa skrypty uruchamiania. Jednym z nich jest skrypt bash, który używa Tworzenie chmury AWS, eksctl i Interfejs wiersza poleceń AWS (AWS CLI) w celu zapewnienia kompleksowego wdrożenia kompletnego rozwiązania. Drugi korzysta z Zestaw programistyczny AWS Cloud (AWS CDK), aby to zrobić.
Poniższy diagram przedstawia architekturę i komponenty, które wdrażamy.
Wymagania wstępne
Upewnij się, że zostały spełnione następujące wymagania wstępne:
Aby uzyskać informacje na temat obsługiwanych dostawców tożsamości, zobacz Włącz jednokrotne logowanie AWS dla Amazon EMR Studio.
Skrypt bash
Skrypt jest dostępny na GitHub.
Wymagania wstępne
Skrypt wymaga użycia Chmura AWS9. Postępuj zgodnie z instrukcjami zawartymi w Warsztaty Amazon EKS. Pamiętaj, aby dokładnie przestrzegać poniższych instrukcji:
Po wdrożeniu pulpitu AWS Cloud9 przejdź do kolejnych kroków.
Przygotowanie
Użyj poniższego kodu, aby sklonować repozytorium GitHub i przygotować wymagania wstępne AWS Cloud9:
Rozmieść stos
Przed uruchomieniem skryptu podaj następujące informacje:
- Identyfikator konta AWS i region, jeśli Twój pulpit AWS Cloud9 nie znajduje się w tym samym identyfikatorze konta lub regionie, w którym chcesz wdrożyć EMR na EKS
- Nazwa Usługa Amazon Simple Storage (Amazon S3) do utworzenia wiadra
- Użytkownik AWS SSO, który ma zostać powiązany z sesją EMR Studio
Po wdrożeniu stosu przez skrypt wyświetlany jest adres URL wdrożonego studia EMR:
Skrypt AWS CDK
Skrypty AWS CDK są dostępne na GitHub. Musisz sprawdzić main
oddział. Stosy wdrażają klaster Amazon EKS i EMR w klastrze wirtualnym EKS w nowym VPC z prywatnymi podsieciami i opcjonalnie Przepływ powietrza Apache zarządzany przez Amazon (Amazon MWAA) i EMR Studio.
Wymagania wstępne
Potrzebujesz AWS CDK w wersji 1.90.1 lub nowszej. Aby uzyskać więcej informacji, zobacz Pierwsze kroki z AWS CDK.
Używamy listy prefiksów, aby ograniczyć dostęp do niektórych zasobów do zatwierdzonych przez Ciebie zakresów adresów IP sieci. Stwórz lista prefiksów jeśli jeszcze go nie masz.
Jeśli planujesz korzystać z EMR Studio, potrzebujesz AWS SSO skonfigurowane na Twoim koncie.
Przygotowanie
Po sklonowaniu repozytorium i pobraniu pliku main
gałęzi, utwórz i aktywuj nowe środowisko wirtualne Pythona:
Teraz zainstaluj zależności Pythona:
Na koniec załaduj AWS CDK:
Rozmieść stosy
Zsyntetyzuj stosy AWS CDK za pomocą następującego kodu:
To polecenie generuje cztery stosy:
- emr-eks-cdk – Główny stos
- mwaa-cdk – Dodaje Amazon MWAA
- studio-cdk – Dodaje wymagania wstępne EMR Studio
- studio-cdk-live – Dodaje Studio EMR
Poniższy diagram ilustruje zasoby wdrożone przez stosy AWS CDK.
Zacznij od wdrożenia pierwszego stosu:
Jeśli chcesz używać Apache Airflow jako koordynatora, wdróż ten stos:
Wdróż pierwszy stos EMR Studio:
Poczekaj, aż zarządzany punkt końcowy stanie się aktywny. Możesz sprawdzić status, uruchamiając następujący kod:
Identyfikator klastra wirtualnego jest dostępny w wynikach AWS CDK ze stosu emr-eks-cdk.
Gdy punkt końcowy jest aktywny, wdróż drugi stos EMR Studio:
Wdrażanie ręczne
Jeśli wolisz ręcznie wdrożyć EMR w EKS i EMR Studio, wykonaj czynności opisane w tej sekcji.
Skonfiguruj VPC
Jeśli korzystasz z Amazon EKS v. 1.18, skonfiguruj VPC, który ma również prywatne podsieci i jest odpowiednio oznaczony dla zewnętrznych modułów równoważenia obciążenia. Aby zapoznać się z tagowaniem, zobacz: Równoważenie obciążenia aplikacji na Amazon EKS i Utwórz rolę usługi EMR Studio.
Utwórz klaster Amazon EKS
Uruchom klaster Amazon EKS z co najmniej jedną zarządzaną grupą węzłów. Aby uzyskać instrukcje, zobacz Konfigurowanie i Pierwsze kroki z Amazon EKS.
Utwórz odpowiednie zasady uprawnień, role, dostawcę tożsamości i certyfikat SSL/TLS
Aby utworzyć zasady uprawnień, role, dostawcę tożsamości i certyfikat SSL/TLS, wykonaj następujące kroki:
- Włącz dostęp do klastra dla EMR w EKS.
- Utwórz dostawcę tożsamości w IAM na podstawie adresu URL dostawcy EKS OIDC.
- Utwórz certyfikat SSL/TLS i umieść go Menedżer certyfikatów AWS.
- Utwórz odpowiednie zasady i role uprawnień:
- Rola wykonywania pracy
- Zaktualizuj politykę zaufania do roli wykonującej zadanie
- Wdróż i utwórz zasady IAM dla kontrolera równoważenia obciążenia AWS
- Rola serwisowa EMR Studio
- Rola użytkownika EMR Studio
- Zasady użytkownika EMR Studio powiązane z użytkownikami i grupami AWS SSO
- Zarejestruj klaster Amazon EKS w Amazon EMR do stworzenia wirtualnego klastra EMR
- Utwórz odpowiednie grupy zabezpieczeń do dołączenia do każdego utworzonego Studia EMR:
- Grupa zabezpieczeń obszaru roboczego
- Grupa zabezpieczeń silnika
- Oznacz grupy zabezpieczeń odpowiednimi tagami. Aby uzyskać instrukcje, zobacz Utwórz rolę usługi EMR Studio.
Wymagane instalacje w Amazon EKS
Wdróż Kontroler równoważenia obciążenia AWS w klastrze Amazon EKS, jeśli jeszcze tego nie zrobiłeś.
Utwórz EMR na odpowiednich elementach EKS i zmapuj użytkownika do EMR Studio
Wykonaj następujące kroki:
- Utwórz co najmniej jeden wirtualny klaster EMR powiązany z klastrem Amazon EKS. Aby uzyskać instrukcje, zobacz Krok 1 w Skonfiguruj Amazon EMR na EKS dla EMR Studio.
- Utwórz co najmniej jeden zarządzany punkt końcowy. Aby uzyskać instrukcje, zobacz Krok 2 w Skonfiguruj Amazon EMR na EKS dla EMR Studio.
- Utwórz przynajmniej jedno Studio EMR; powiąż Studio EMR z podsieciami prywatnymi skonfigurowanymi w klastrze Amazon EKS. Aby uzyskać instrukcje, zobacz Utwórz studio EMR.
- Kiedy Studio EMR będzie dostępne, zmapuj użytkownika lub grupę AWS SSO do EMR Studio i zastosować wobec tego użytkownika odpowiednią politykę uprawnień.
Użyj EMR Studio
Aby rozpocząć korzystanie z EMR Studio, wykonaj następujące kroki:
- Znajdź adres URL EMR Studio według studiów w regionie:
- Korzystając z podanego adresu URL, zaloguj się przy użyciu nazwy użytkownika AWS SSO, której użyłeś wcześniej.
Po uwierzytelnieniu użytkownik zostaje przekierowany do dashboardu EMR Studio.
- Dodaj Utwórz obszar roboczy.
- W razie zamówieenia projektu Nazwa obszaru roboczego, Wpisz imię.
- W razie zamówieenia projektu Subnetwybierz podsieć odpowiadającą jednej z podsieci powiązanych z zarządzaną grupą węzłów.
- W razie zamówieenia projektu Lokalizacja S3, wprowadź segment S3, w którym możesz przechowywać zawartość notatnika.
- Po utworzeniu obszaru roboczego wybierz ten, który znajduje się w
Ready
stan.
- Na pasku bocznym wybierz ikonę klastra EMR.
- Pod Typ klastra¸ wybierz Klaster EMR na EKS.
- Wybierz dostępny klaster wirtualny i dostępny zarządzany punkt końcowy.
- Dodaj Dołączać.
Po dołączeniu EMR Studio wyświetla jądra dostępne w pliku Notatnik i Konsola
- Dodaj PySpark (Kubernetes) aby uruchomić jądro notatnika i rozpocząć sesję Spark.
Ponieważ konfiguracja punktu końcowego wykorzystuje AWS Glue jako magazyn metadanych, możesz wyświetlić listę baz danych i tabel podłączonych do katalogu danych AWS Glue Data Catalog. Aby przetestować konfigurację, możesz użyć poniższego przykładowego skryptu. W razie potrzeby zmodyfikuj skrypt dla odpowiedniej bazy danych i tabeli znajdującej się w katalogu danych:
Sprzątać
Aby uniknąć przyszłych opłat, usuń uruchomione tutaj zasoby, uruchamiając polecenie Remove_setup.sh:
Wnioski
EMR na EKS umożliwia uruchamianie aplikacji na wspólnej puli zasobów w klastrze Amazon EKS bez konieczności udostępniania infrastruktury. EMR Studio to w pełni zarządzany notatnik i narzędzie Jupyter, które udostępnia jądra działające w klastrach EMR, w tym klastrach wirtualnych w Amazon EKS. W tym poście opisaliśmy architekturę połączenia EMR Studio z EMR na EKS i udostępniliśmy skrypty do automatycznego wdrażania wszystkich komponentów w celu połączenia obu usług.
Jeśli masz pytania lub sugestie, zostaw komentarz.
O autorach
Randy’ego DeFauwa jest głównym architektem rozwiązań w Amazon Web Services. Współpracuje z klientami AWS, zapewniając wskazówki i pomoc techniczną przy projektach baz danych, pomagając im podnosić wartość ich rozwiązań podczas korzystania z AWS.
Mateusz Tan jest starszym architektem rozwiązań analitycznych w Amazon Web Services i udziela wskazówek klientom opracowującym rozwiązania z usługami AWS Analytics dla ich obciążeń analitycznych.
- '
- "
- 100
- 7
- 9
- dostęp
- Konto
- aktywny
- Wszystkie kategorie
- przydział
- Amazonka
- Amazon Web Services
- analityka
- Apache
- Zastosowanie
- aplikacje
- architektura
- Uwierzytelnianie
- AWS
- stabilizator
- budować
- Etui
- świadectwo
- Opłaty
- Koszyk
- klasyfikacja
- Chmura
- kod
- wspólny
- obliczać
- zawartość
- kontynuować
- kontroler
- Tworzenie
- Listy uwierzytelniające
- Klientów
- tablica rozdzielcza
- dane
- Baza danych
- Bazy danych
- rozwijać
- oprogramowania
- kierowca
- Punkt końcowy
- Enterprise
- Środowisko
- egzekucja
- doświadczenie
- fabryka
- i terminów, a
- obserwuj
- Z przodu
- przyszłość
- git
- GitHub
- Zarządzanie
- Hadoop
- tutaj
- Ul
- W jaki sposób
- HTTPS
- IAM
- ICON
- tożsamość
- Włącznie z
- Informacja
- Infrastruktura
- IP
- IT
- Praca
- Notebook Jupyter
- Kubernetes
- uruchomić
- uruchamia
- Linia
- Lista
- załadować
- i konserwacjami
- mapa
- Mapy
- sieć
- laptopy
- Option
- Inne
- fizyczny
- pods
- polityka
- polityka
- basen
- Podgląd
- Główny
- prywatny
- projektowanie
- Python
- wymagania
- Zasób
- Zasoby
- run
- bieganie
- bezpieczeństwo
- Usługi
- zestaw
- Prosty
- So
- Rozwiązania
- SQL
- początek
- rozpoczęty
- Stan
- Rynek
- przechowywanie
- sklep
- Utrzymany
- cel
- Techniczny
- test
- czas
- ruch drogowy
- Zaufaj
- Użytkownicy
- wartość
- Wirtualny
- sieć
- usługi internetowe
- w ciągu
- słowa
- Praca
- działa