Amazon EMR op Amazon EKS biedt een implementatieoptie voor Amazon EMR waarmee u analyseworkloads kunt uitvoeren Amazon Elastic Kubernetes-service (Amazone EKS). Dit is een aantrekkelijke optie omdat u hiermee toepassingen kunt uitvoeren op een gemeenschappelijke bron van bronnen zonder dat u hiervoor infrastructuur hoeft in te richten. Bovendien kunt u gebruiken Amazon EMR-studio om analysecode te bouwen die draait op Amazon EKS-clusters. EMR Studio is een webgebaseerde, geïntegreerde ontwikkelomgeving (IDE) die gebruikmaakt van volledig beheerde Jupyter-notebooks die aan elk EMR-cluster kunnen worden gekoppeld, inclusief EMR op EKS. Het gebruikt AWS eenmalige aanmelding (SSO) of een compatibele identiteitsprovider (IdP) om rechtstreeks in te loggen bij EMR Studio via een beveiligde URL met behulp van bedrijfsreferenties.
Het implementeren van EMR Studio om te koppelen aan EMR op EKS vereist de integratie van verschillende AWS-services:
Bovendien moet u de volgende EMR op EKS-componenten installeren:
Dit bericht helpt je bij het bouwen van alle benodigde componenten en het samenvoegen ervan door één enkel script uit te voeren. Ook beschrijven we de architectuur van deze opstelling en hoe de componenten samenwerken.
Architectuur overzicht
Met EMR op EKS kun je Spark-applicaties naast andere typen applicaties op hetzelfde Amazon EKS-cluster uitvoeren, wat de toewijzing van middelen verbetert en het infrastructuurbeheer vereenvoudigt. Zie voor meer informatie over hoe Amazon EMR binnen een Amazon EKS-cluster werkt Nieuw – Amazon EMR op Amazon Elastic Kubernetes Service (EKS). EMR Studio biedt een webgebaseerde IDE waarmee u eenvoudig applicaties kunt ontwikkelen, visualiseren en debuggen die in EMR draaien. Voor meer informatie, zie Amazon EMR Studio (preview): een nieuwe notebook-eerste IDE-ervaring met Amazon EMR.
Spark-kernels zijn geplande peulen in een naamruimte in een Amazon EKS-cluster. EMR Studio gebruikt Jupyter Enterprise Gateway (JEG) om Spark-kernels op Amazon EKS te lanceren. Een beheerd eindpunt van het type JEG wordt ingericht als een Kubernetes-implementatie in de bijbehorende naamruimte van het virtuele EMR-cluster en wordt beschikbaar gesteld als een Kubernetes-service. Elke virtuele EMR-cluster wordt toegewezen aan een Kubernetes-naamruimte die is geregistreerd bij het Amazon EKS-cluster; virtuele clusters beheren geen fysieke rekenkracht of opslag, maar verwijzen naar de Kubernetes-naamruimte waar de werklast is gepland. Elk virtueel cluster kan meerdere beheerde eindpunten hebben, elk met hun eigen geconfigureerde kernels voor verschillende gebruiksscenario's en behoeften. Door JEG beheerde eindpunten bieden HTTPS-eindpunten, onderhouden door een Application Load Balancer (ALB), die alleen bereikbaar zijn vanuit EMR Studio en zelf-gehoste notebooks die zijn gemaakt binnen een privé-subnet van de Amazon EKS VPC.
Het volgende diagram illustreert de oplossingsarchitectuur.
Het beheerde eindpunt wordt gemaakt in de Amazon EKS-naamruimte van het virtuele cluster (in dit geval sparkns
) en de HTTPS-eindpunten worden bediend vanuit privé-subnetten. De kernelpods worden uitgevoerd met de IAM-rol voor taakuitvoering die is gedefinieerd in het beheerde eindpunt. Tijdens het maken van beheerde eindpunten gebruikt EMR op EKS de AWS Load Balancer Controller in de kube-system
naamruimte om een ALB te maken met een doelgroep die verbinding maakt met het door JEG beheerde eindpunt in de Kubernetes-naamruimte van het virtuele cluster.
U kunt de kernel van elk beheerd eindpunt anders configureren. Bijvoorbeeld om het gebruik van een Spark-kernel toe te staan AWS lijm als hun catalogus kunt u het volgende configuratie-JSON-bestand toepassen in de —configuration-overrides
vlag bij het maken van een beheerd eindpunt:
Het beheerde eindpunt is een Kubernetes-implementatie met aan de voorkant een service binnen de geconfigureerde naamruimte (in dit geval sparkns
). Wanneer we de endpoint-informatie traceren, kunnen we zien hoe de Jupyter Enterprise Gateway-implementatie aansluit bij de ALB en de doelgroep:
Om te zien hoe dit aansluit, kunt u twee EMR Studio-sessies overwegen. De ALB stelt poort 18888 bloot aan de EMR Studio-sessies. De JEG-service wijst de externe poort 18888 op de ALB toe aan de dynamiek NodePort
op de JEG-service (in dit geval 30091). De JEG-service stuurt het verkeer door naar de TargetPort
9547, die het verkeer naar de juiste Spark-driverpod leidt. Elke notebooksessie heeft zijn eigen kernel, die zijn eigen respectievelijke Spark-stuurprogramma en executor-pods heeft, zoals het volgende diagram illustreert.
Koppel EMR Studio aan een virtueel cluster en beheerd eindpunt
Elke keer dat een gebruiker een virtueel cluster en een beheerd eindpunt aan zijn Studio Workspace koppelt en een Spark-sessie start, worden Spark-stuurprogramma's en Spark-uitvoerders gepland. Dat zie je als je rent kubectl
om te controleren welke pods zijn gelanceerd:
Elke Spark-kernelsessie van een notebook implementeert een driver-pod en een executor-pods die blijven draaien totdat de kernelsessie wordt afgesloten.
De code in de notebookcellen wordt uitgevoerd in de executor-pods die zijn geïmplementeerd in het Amazon EKS-cluster.
EMR instellen op EKS en EMR Studio
Er zijn verschillende stappen en onderdelen vereist om zowel EMR op EKS als EMR Studio in te stellen. Het inschakelen van AWS SSO is een vereiste. U kunt de twee meegeleverde startscripts in deze sectie gebruiken of deze handmatig implementeren met behulp van de stappen verderop in dit bericht.
We bieden twee startscripts in dit bericht. Een daarvan is een bash-script dat gebruikmaakt van AWS CloudFormatie, eksctl, en AWS-opdrachtregelinterface (AWS CLI)-opdrachten om een end-to-end implementatie van een complete oplossing te bieden. De ander maakt gebruik van de AWS Cloud-ontwikkelingskit (AWS CDK) om dit te doen.
Het volgende diagram toont de architectuur en componenten die we inzetten.
Voorwaarden
Zorg ervoor dat u aan de volgende vereisten voldoet:
Zie voor informatie over de ondersteunde IdP's Schakel AWS Single Sign-On in voor Amazon EMR Studio.
Bash-script
Het script is beschikbaar op GitHub.
Voorwaarden
Het script vereist dat u gebruikt AWS-Cloud9. Volg de instructies in de Amazon EKS-workshop. Zorg ervoor dat u deze instructies zorgvuldig opvolgt:
Nadat u de AWS Cloud9-desktop heeft geïmplementeerd, gaat u verder met de volgende stappen.
Voorbereiding
Gebruik de volgende code om de GitHub-repository te klonen en de AWS Cloud9-vereisten voor te bereiden:
De stapel implementeren
Geef de volgende informatie op voordat u het script uitvoert:
- De AWS-account-ID en regio, als uw AWS Cloud9-desktop zich niet in dezelfde account-ID of regio bevindt waar u EMR op EKS wilt implementeren
- De naam van de Amazon eenvoudige opslagservice (Amazon S3) emmer om te maken
- De AWS SSO-gebruiker die moet worden gekoppeld aan de EMR Studio-sessie
Nadat het script de stapel heeft geïmplementeerd, wordt de URL naar de geïmplementeerde EMR Studio weergegeven:
AWS CDK-script
De AWS CDK-scripts zijn beschikbaar op GitHub. U moet afrekenen main
tak. De stapels implementeren een Amazon EKS-cluster en EMR op een virtueel EKS-cluster in een nieuwe VPC met privé-subnetten, en optioneel een Door Amazon beheerde Apache-luchtstroom (Amazon MWAA)-omgeving en EMR Studio.
Voorwaarden
U hebt de AWS CDK-versie 1.90.1 of hoger nodig. Voor meer informatie, zie Aan de slag met de AWS CDK.
We gebruiken een voorvoegsellijst om de toegang tot bepaalde bronnen te beperken tot netwerk-IP-bereiken die u goedkeurt. Maak een voorvoegsel lijst als je er nog geen hebt.
Als u van plan bent EMR Studio te gebruiken, heeft u AWS SSO nodig geconfigureerd in uw account.
Voorbereiding
Nadat u de repository hebt gekloond en het main
branch, maak en activeer een nieuwe virtuele Python-omgeving:
Installeer nu de Python-afhankelijkheden:
Boots ten slotte de AWS CDK op:
Zet de stapels neer
Synthetiseer de AWS CDK-stacks met de volgende code:
Deze opdracht genereert vier stapels:
- emr-eks-cdk – De hoofdstapel
- mwaa-cdk – Voegt Amazon MWAA toe
- studio-cd – Voegt EMR Studio-vereisten toe
- studio-cd-live – Voegt EMR Studio toe
Het volgende diagram illustreert de bronnen die worden ingezet door de AWS CDK-stacks.
Begin met het inzetten van de eerste stapel:
Als u Apache Airflow als uw orkestrator wilt gebruiken, implementeert u die stapel:
Implementeer de eerste EMR Studio-stack:
Wacht tot het beheerde eindpunt actief wordt. U kunt de status controleren door de volgende code uit te voeren:
De virtuele cluster-ID is beschikbaar in de AWS CDK-uitvoer van de emr-eks-cdk-stack.
Wanneer het eindpunt actief is, implementeert u de tweede EMR Studio-stack:
Handmatige implementatie
Als u EMR liever handmatig implementeert op EKS en EMR Studio, gebruikt u de stappen in deze sectie.
Zet een VPC op
Als u Amazon EKS v. 1.18 gebruikt, stelt u een VPC in die ook privé-subnetten heeft en op de juiste manier is getagd voor externe load balancers. Voor taggen, zie: Loadbalancing van applicaties op Amazon EKS en Maak een EMR Studio-servicerol.
Een Amazon EKS-cluster maken
Start een Amazon EKS-cluster met ten minste één beheerde knooppuntgroep. Voor instructies, zie Opzetten en Aan de slag met Amazon EKS.
Creëer relevant IAM-beleid, rollen, IdP en SSL/TLS-certificaat
Voer de volgende stappen uit om uw IAM-beleid, rollen, IdP en SSL/TLS-certificaat aan te maken:
- Schakel clustertoegang in voor EMR op EKS.
- Maak een IdP in IAM op basis van de EKS OIDC-provider-URL.
- Maak een SSL/TLS-certificaat en plaats dit in AWS-certificaatbeheerder.
- Creëer het relevante IAM-beleid en de relevante rollen:
- Taakuitvoeringsrol
- Update het vertrouwensbeleid voor de taakuitvoeringsrol
- Implementeer en creëer het IAM-beleid voor de AWS Load Balancer Controller
- EMR Studio-servicerol
- EMR Studio-gebruikersrol
- EMR Studio-gebruikersbeleid geassocieerd met AWS SSO-gebruikers en -groepen
- Registreer het Amazon EKS-cluster bij Amazon EMR om het virtuele EMR-cluster te creëren
- Creëer de juiste beveiligingsgroepen te koppelen aan elke aangemaakte EMR Studio:
- Beveiligingsgroep voor werkruimte
- Motorbeveiligingsgroep
- Tag de beveiligingsgroepen met de juiste tags. Voor instructies, zie Maak een EMR Studio-servicerol.
Vereiste installaties in Amazon EKS
Implementeer de AWS Load Balancer-controller in het Amazon EKS-cluster als u dit nog niet heeft gedaan.
Creëer EMR op EKS-relevante stukken en wijs de gebruiker toe aan EMR Studio
Voer de volgende stappen uit:
- Maak ten minste één virtueel EMR-cluster dat is gekoppeld aan het Amazon EKS-cluster. Voor instructies, zie stap 1 van Stel Amazon EMR in op EKS voor EMR Studio.
- Maak ten minste één beheerd eindpunt. Voor instructies, zie stap 2 van Stel Amazon EMR in op EKS voor EMR Studio.
- Creëer minimaal één EMR Studio; koppel de EMR Studio aan de privé-subnetten die zijn geconfigureerd met het Amazon EKS-cluster. Voor instructies, zie Een EMR-studio maken.
- Wanneer de EMR Studio beschikbaar is, wijs een AWS SSO-gebruiker of -groep toe aan de EMR Studio en pas een passend IAM-beleid toe op die gebruiker.
Gebruik EMR Studio
Om EMR Studio te gaan gebruiken, voert u de volgende stappen uit:
- Zoek de URL voor EMR Studio van de studio's in een regio:
- Met de vermelde URL logt u in met de AWS SSO-gebruikersnaam die u eerder hebt gebruikt.
Na authenticatie wordt de gebruiker doorgestuurd naar het EMR Studio-dashboard.
- Kies Werkruimte maken.
- Voor Naam werkruimte, voer een naam in.
- Voor subnetkiest u het subnet dat overeenkomt met een van de subnetten die zijn gekoppeld aan de beheerde knooppuntgroep.
- Voor S3 locatie, voert u een S3-bucket in waarin u de notebookinhoud kunt opslaan.
- Nadat u de werkruimte hebt gemaakt, kiest u er een die zich in de
Ready
statuut.
- Kies in de zijbalk het EMR-clusterpictogram.
- Onder ClustertypeKiezen EMR-cluster op EKS.
- Kies het beschikbare virtuele cluster en het beschikbare beheerde eindpunt.
- Kies hechten.
Nadat het is gekoppeld, geeft EMR Studio de kernels weer die beschikbaar zijn in de Notitieboek en troosten pagina.
- Kies PySpark (Kubernetes) om een notebookkernel te starten en een Spark-sessie te starten.
Omdat de eindpuntconfiguratie hier AWS Glue gebruikt als metastore, kunt u de databases en tabellen weergeven die zijn verbonden met de AWS Glue-gegevenscatalogus. U kunt het volgende voorbeeldscript gebruiken om de installatie te testen. Pas het script indien nodig aan voor de juiste database en tabel in uw gegevenscatalogus:
Opruimen
Om te voorkomen dat er in de toekomst kosten in rekening worden gebracht, verwijdert u de hier gelanceerde bronnen door remove_setup.sh uit te voeren:
Conclusie
Met EMR op EKS kunt u applicaties uitvoeren op een gemeenschappelijke bronnenpool binnen een Amazon EKS-cluster zonder dat u infrastructuur hoeft in te richten. EMR Studio is een volledig beheerde Jupyter-notebook en -tool die kernels levert die op EMR-clusters draaien, inclusief virtuele clusters op Amazon EKS. In dit bericht hebben we de architectuur beschreven van hoe EMR Studio verbinding maakt met EMR op EKS en hebben we scripts geleverd om automatisch alle componenten te implementeren om de twee services met elkaar te verbinden.
Als je vragen of suggesties hebt, laat dan een reactie achter.
Over de auteurs
Randy DeFauw is een Principal Solutions Architect bij Amazon Web Services. Hij werkt samen met de AWS-klanten om begeleiding en technische assistentie te bieden bij databaseprojecten, waardoor ze de waarde van hun oplossingen kunnen verbeteren bij het gebruik van AWS.
Matthijs Tan is Senior Analytics Solutions Architect bij Amazon Web Services en begeleidt klanten bij het ontwikkelen van oplossingen met AWS Analytics-services voor hun analyseworkloads.
- '
- "
- 100
- 7
- 9
- toegang
- Account
- actieve
- Alles
- toewijzing
- Amazone
- Amazon Web Services
- analytics
- apache
- Aanvraag
- toepassingen
- architectuur
- authenticatie
- AWS
- balancer
- bouw
- gevallen
- certificaat
- lasten
- Afrekenen
- classificatie
- Cloud
- code
- Gemeen
- Berekenen
- content
- voortzetten
- controleur
- Wij creëren
- Geloofsbrieven
- Klanten
- dashboards
- gegevens
- Database
- databanken
- ontwikkelen
- Ontwikkeling
- bestuurder
- Endpoint
- Enterprise
- Milieu
- uitvoering
- ervaring
- fabriek
- Voornaam*
- volgen
- Vooraan
- toekomst
- Git
- GitHub
- Groep
- Hadoop
- hier
- Bijenkorf
- Hoe
- HTTPS
- IAM
- ICON
- Identiteit
- Inclusief
- informatie
- Infrastructuur
- IP
- IT
- Jobomschrijving:
- Jupyter Notebook
- Kubernetes
- lancering
- lanceert
- Lijn
- Lijst
- laden
- management
- kaart
- Maps
- netwerk
- laptops
- Keuze
- Overige
- Fysiek
- peulen
- beleidsmaatregelen door te lezen.
- beleidsmaatregelen
- zwembad
- Voorbeschouwing
- Principal
- privaat
- projecten
- Python
- Voorwaarden
- hulpbron
- Resources
- lopen
- lopend
- veiligheid
- Diensten
- reeks
- Eenvoudig
- So
- Oplossingen
- SQL
- begin
- gestart
- Land
- Status
- mediaopslag
- shop
- ondersteunde
- doelwit
- Technisch
- proef
- niet de tijd of
- verkeer
- Trust
- gebruikers
- waarde
- Virtueel
- web
- webservices
- binnen
- woorden
- Mijn werk
- Bedrijven