Amazon EMR på Amazon EKS giver en implementeringsmulighed for Amazon EMR der giver dig mulighed for at køre analytiske arbejdsbelastninger på Amazon Elastic Kubernetes Service (Amazon EKS). Dette er en attraktiv mulighed, fordi det giver dig mulighed for at køre applikationer på en fælles pulje af ressourcer uden at skulle levere infrastruktur. Derudover kan du bruge Amazon EMR Studio at bygge analysekode, der kører på Amazon EKS-klynger. EMR Studio er et webbaseret, integreret udviklingsmiljø (IDE), der bruger fuldt administrerede Jupyter-notebooks, der kan knyttes til enhver EMR-klynge, inklusive EMR på EKS. Det bruger AWS Single Sign-On (SSO) eller en kompatibel identitetsudbyder (IdP) for at logge direkte på EMR Studio via en sikker URL ved hjælp af virksomhedens legitimationsoplysninger.
Implementering af EMR Studio til at knytte til EMR på EKS kræver integration af flere AWS-tjenester:
Derudover skal du installere følgende EMR på EKS-komponenter:
Dette indlæg hjælper dig med at bygge alle de nødvendige komponenter og sy dem sammen ved at køre et enkelt script. Vi beskriver også arkitekturen af denne opsætning, og hvordan komponenterne arbejder sammen.
Arkitektur oversigt
Med EMR på EKS kan du køre Spark-applikationer sammen med andre typer applikationer på den samme Amazon EKS-klynge, hvilket forbedrer ressourceallokeringen og forenkler infrastrukturstyringen. For mere information om, hvordan Amazon EMR fungerer i en Amazon EKS-klynge, se Nyt – Amazon EMR på Amazon Elastic Kubernetes Service (EKS). EMR Studio leverer en webbaseret IDE, der gør det nemt at udvikle, visualisere og fejlfinde applikationer, der kører i EMR. For mere information, se Amazon EMR Studio (Preview): En ny notebook-første IDE-oplevelse med Amazon EMR.
Spark-kerner er planlagte pods i et navneområde i en Amazon EKS-klynge. EMR Studio bruger Jupyter Enterprise Gateway (JEG) til at starte Spark-kerner på Amazon EKS. Et administreret slutpunkt af typen JEG leveres som en Kubernetes-implementering i den virtuelle EMR-klynges tilknyttede navneområde og eksponeres som en Kubernetes-tjeneste. Hver virtuel EMR-klynge er knyttet til et Kubernetes-navneområde, der er registreret hos Amazon EKS-klyngen; virtuelle klynger administrerer ikke fysisk databehandling eller lagring, men peger på Kubernetes-navneområdet, hvor arbejdsbyrden er planlagt. Hver virtuel klynge kan have flere administrerede endepunkter, hver med deres egne konfigurerede kerner til forskellige brugssager og behov. JEG-administrerede endepunkter leverer HTTPS-endepunkter, der betjenes af en Application Load Balancer (ALB), som kun er tilgængelige fra EMR Studio og selv-hostede notebooks, der er oprettet i et privat undernet af Amazon EKS VPC.
Følgende diagram illustrerer løsningsarkitekturen.
Det administrerede slutpunkt oprettes i den virtuelle klynges Amazon EKS-navneområde (i dette tilfælde, sparkns
), og HTTPS-endepunkterne betjenes fra private undernet. Kernen pods kører med job-execution IAM-rollen defineret i det administrerede slutpunkt. Under oprettelse af administreret slutpunkt bruger EMR på EKS AWS Load Balancer Controller i kube-system
navneområde for at skabe en ALB med en målgruppe, der forbinder med det JEG-administrerede slutpunkt i den virtuelle klynges Kubernetes-navneområde.
Du kan konfigurere hvert administreret slutpunkts kerne forskelligt. For eksempel for at tillade en Spark-kerne at bruge AWS Lim som deres katalog kan du anvende følgende konfigurations-JSON-fil i —configuration-overrides
flag, når du opretter et administreret slutpunkt:
Det administrerede slutpunkt er en Kubernetes-implementering forankret af en tjeneste inde i det konfigurerede navneområde (i dette tilfælde, sparkns
). Når vi sporer slutpunktsoplysningerne, kan vi se, hvordan Jupyter Enterprise Gateway-implementeringen forbinder med ALB og målgruppen:
For at se på, hvordan dette hænger sammen, skal du overveje to EMR Studio-sessioner. ALB udsætter port 18888 for EMR Studio-sessionerne. JEG-tjenesten kortlægger den eksterne port 18888 på ALB til dynamikken NodePort
på JEG-tjenesten (i dette tilfælde 30091). JEG-tjenesten videresender trafikken til TargetPort
9547, som dirigerer trafikken til den relevante Spark driver pod. Hver notebook-session har sin egen kerne, som har sin egen respektive Spark-driver- og executor-pod, som det følgende diagram illustrerer.
Tilslut EMR Studio til en virtuel klynge og administreret slutpunkt
Hver gang en bruger knytter en virtuel klynge og et administreret slutpunkt til deres Studio Workspace og starter en Spark-session, planlægges Spark-drivere og Spark-eksekutorer. Det kan du se, når du løber kubectl
for at kontrollere, hvilke pods der blev lanceret:
Hver notesbog Spark-kernesession implementerer en driver-pod og executor-pods, der fortsætter med at køre, indtil kernesessionen lukkes ned.
Koden i notebook-cellerne kører i de executor-pods, der blev implementeret i Amazon EKS-klyngen.
Opsæt EMR på EKS og EMR Studio
Der kræves flere trin og stykker for at opsætte både EMR på EKS og EMR Studio. Aktivering af AWS SSO er en forudsætning. Du kan bruge de to medfølgende startscripts i dette afsnit eller implementere det manuelt ved at bruge trinene senere i dette indlæg.
Vi giver to lanceringsscripts i dette indlæg. Det ene er et bash-script, der bruger AWS CloudFormation, eksctl og AWS kommandolinjegrænseflade (AWS CLI)-kommandoer til at levere en end-to-end-implementering af en komplet løsning. Den anden bruger AWS Cloud Development Kit (AWS CDK) for at gøre det.
Følgende diagram viser arkitekturen og komponenterne, som vi implementerer.
Forudsætninger
Sørg for at opfylde følgende forudsætninger:
For information om de understøttede IdP'er, se Aktiver AWS Single Sign-On for Amazon EMR Studio.
Bash script
Scriptet er tilgængeligt på GitHub.
Forudsætninger
Scriptet kræver, at du bruger AWS Cloud9. Følg instruktionerne i Amazon EKS Workshop. Sørg for at følge disse instruktioner omhyggeligt:
Når du har implementeret AWS Cloud9-skrivebordet, skal du fortsætte til de næste trin.
Preparation (Forberedelse)
Brug følgende kode til at klone GitHub-repoen og forberede AWS Cloud9-forudsætningerne:
Implementer stakken
Inden du kører scriptet, skal du angive følgende oplysninger:
- AWS-konto-id og -region, hvis dit AWS Cloud9-skrivebord ikke er i det samme konto-id eller område, hvor du vil implementere EMR på EKS
- Navnet på Amazon Simple Storage Service (Amazon S3) spand til at skabe
- AWS SSO-brugeren, der skal knyttes til EMR Studio-sessionen
Når scriptet har implementeret stakken, vises URL'en til det implementerede EMR Studio:
AWS CDK script
AWS CDK-scripts er tilgængelige på GitHub. Du skal tjekke ud main
afdeling. Stakkene implementerer en Amazon EKS-klynge og EMR på EKS virtuel klynge i en ny VPC med private undernet, og eventuelt en Amazon administrerede Apache Airflow (Amazon MWAA) miljø og EMR Studio.
Forudsætninger
Du skal bruge AWS CDK version 1.90.1 eller nyere. For mere information, se Kom godt i gang med AWS CDK.
Vi bruger en præfiksliste til at begrænse adgangen til nogle ressourcer til netværks-IP-intervaller, som du godkender. Lave en præfiksliste hvis du ikke allerede har en.
Hvis du planlægger at bruge EMR Studio, har du brug for AWS SSO konfigureret på din konto.
Preparation (Forberedelse)
Når du har klonet lageret og tjekket ud main
gren, opret og aktiver et nyt virtuelt Python-miljø:
Installer nu Python-afhængighederne:
Til sidst, bootstrap AWS CDK:
Implementer stakkene
Syntetiser AWS CDK-stakkene med følgende kode:
Denne kommando genererer fire stakke:
- emr-eks-cdk – Hovedstakken
- mwaa-cdk – Tilføjer Amazon MWAA
- studio-cdk – Tilføjer forudsætninger for EMR Studio
- studio-cdk-live – Tilføjer EMR Studio
Følgende diagram illustrerer de ressourcer, der er implementeret af AWS CDK-stakkene.
Start med at implementere den første stak:
Hvis du vil bruge Apache Airflow som din orkestrator, skal du implementere denne stak:
Implementer den første EMR Studio-stak:
Vent på, at det administrerede slutpunkt bliver aktivt. Du kan tjekke status ved at køre følgende kode:
Det virtuelle klynge-id er tilgængeligt i AWS CDK-output fra emr-eks-cdk-stakken.
Når slutpunktet er aktivt, skal du implementere den anden EMR Studio-stak:
Manuel implementering
Hvis du foretrækker at implementere EMR manuelt på EKS og EMR Studio, skal du bruge trinene i dette afsnit.
Opsæt en VPC
Hvis du bruger Amazon EKS v. 1.18, skal du konfigurere en VPC, der også har private undernet og passende tagget til eksterne belastningsbalancere. For tagging, se: Applikationsbelastningsbalancering på Amazon EKS , Opret en EMR Studio-servicerolle.
Opret en Amazon EKS-klynge
Start en Amazon EKS-klynge med mindst én administreret nodegruppe. For instruktioner, se Opsætning , Kom godt i gang med Amazon EKS.
Opret relevante IAM-politikker, roller, IdP og SSL/TLS-certifikat
For at oprette dine IAM-politikker, roller, IdP og SSL/TLS-certifikat skal du udføre følgende trin:
- Aktiver klyngeadgang for EMR på EKS.
- Opret en IdP i IAM baseret på EKS OIDC-udbyderens URL.
- Opret et SSL/TLS-certifikat og placer det i AWS Certificate Manager.
- Opret de relevante IAM-politikker og roller:
- Jobudførende rolle
- Opdater tillidspolitikken til jobudførelsesrollen
- Implementer og opret IAM-politikken for AWS Load Balancer Controller
- EMR Studio servicerolle
- EMR Studio brugerrolle
- EMR Studio brugerpolitikker tilknyttet AWS SSO-brugere og -grupper
- Registrer Amazon EKS-klyngen med Amazon EMR at oprette den virtuelle EMR-klynge
- Opret den passende sikkerhedsgrupper skal knyttes til hvert oprettet EMR-studie:
- Arbejdspladssikkerhedsgruppe
- Motorsikkerhedsgruppe
- Tag sikkerhedsgrupperne med de relevante tags. For instruktioner, se Opret en EMR Studio-servicerolle.
Nødvendige installationer i Amazon EKS
Implementér AWS Load Balancer Controller i Amazon EKS-klyngen, hvis du ikke allerede har gjort det.
Opret EMR på EKS relevante stykker og kortlæg brugeren til EMR Studio
Udfør følgende trin:
- Opret mindst én virtuel EMR-klynge tilknyttet Amazon EKS-klyngen. For instruktioner, se trin 1 af Konfigurer Amazon EMR på EKS til EMR Studio.
- Opret mindst ét administreret slutpunkt. For instruktioner, se trin 2 af Konfigurer Amazon EMR på EKS til EMR Studio.
- Opret mindst ét EMR-studie; knytte EMR Studio til de private undernet, der er konfigureret med Amazon EKS-klyngen. For instruktioner, se Opret et EMR-studie.
- Når EMR-studiet er tilgængeligt, tilknyt en AWS SSO-bruger eller -gruppe til EMR-studiet og anvende en passende IAM-politik for den pågældende bruger.
Brug EMR Studio
For at begynde at bruge EMR Studio skal du udføre følgende trin:
- Find URL'en til EMR Studio af studierne i en region:
- Med den angivne URL skal du logge ind med det AWS SSO-brugernavn, du brugte tidligere.
Efter godkendelse bliver brugeren dirigeret til EMR Studio-dashboardet.
- Vælg Opret arbejdsområde.
- Til Arbejdsområdets navn, indtast et navn.
- Til Subnet, vælg det undernet, der svarer til et af de undernet, der er knyttet til den administrerede nodegruppe.
- Til S3 placering, indtast en S3-spand, hvor du kan gemme notebook-indholdet.
- Når du har oprettet arbejdsområdet, skal du vælge et, der er i
Ready
status.
- I sidebjælken skal du vælge EMR-klyngeikonet.
- Under Klynge type¸ vælg EMR-klynge på EKS.
- Vælg den tilgængelige virtuelle klynge og det tilgængelige administrerede slutpunkt.
- Vælg Vedhæft.
Efter det er vedhæftet, viser EMR Studio de tilgængelige kerner i Notesbog , Konsol sektion.
- Vælg PySpark (Kubernetes) for at starte en notebook-kerne og starte en Spark-session.
Fordi slutpunktskonfigurationen her bruger AWS Glue til sin metastore, kan du liste de databaser og tabeller, der er forbundet til AWS Glue Data Catalog. Du kan bruge følgende eksempelscript til at teste opsætningen. Rediger scriptet efter behov for den relevante database og tabel, som du har i dit datakatalog:
Ryd op
For at undgå at pådrage sig fremtidige gebyrer skal du slette de ressourcer, der er lanceret her, ved at køre remove_setup.sh:
Konklusion
EMR på EKS giver dig mulighed for at køre applikationer på en fælles pulje af ressourcer inde i en Amazon EKS-klynge uden at skulle levere infrastruktur. EMR Studio er en fuldt administreret Jupyter-notesbog og værktøj, der leverer kerner, der kører på EMR-klynger, inklusive virtuelle klynger på Amazon EKS. I dette indlæg beskrev vi arkitekturen for, hvordan EMR Studio forbinder med EMR på EKS og leverede scripts til automatisk at implementere alle komponenterne for at forbinde de to tjenester.
Hvis du har spørgsmål eller forslag, så læg en kommentar.
Om forfatterne
Randy DeFauw er Principal Solutions Architect hos Amazon Web Services. Han arbejder sammen med AWS-kunderne for at yde vejledning og teknisk assistance til databaseprojekter, der hjælper dem med at forbedre værdien af deres løsninger, når de bruger AWS.
Matthew Tan er en Senior Analytics Solutions Architect hos Amazon Web Services og giver vejledning til kunder, der udvikler løsninger med AWS Analytics-tjenester om deres analytiske arbejdsbelastninger.
- '
- "
- 100
- 7
- 9
- adgang
- Konto
- aktiv
- Alle
- allokering
- Amazon
- Amazon Web Services
- analytics
- Apache
- Anvendelse
- applikationer
- arkitektur
- Godkendelse
- AWS
- swing
- bygge
- tilfælde
- certifikat
- afgifter
- Betaling
- klassificering
- Cloud
- kode
- Fælles
- Compute
- indhold
- fortsæt
- controller
- Oprettelse af
- Legitimationsoplysninger
- Kunder
- instrumentbræt
- data
- Database
- databaser
- udvikle
- Udvikling
- driver
- Endpoint
- Enterprise
- Miljø
- udførelse
- erfaring
- fabrik
- Fornavn
- følger
- Frontet
- fremtiden
- Git
- GitHub
- gruppe
- Hadoop
- link.
- Hive
- Hvordan
- HTTPS
- IAM
- ICON
- Identity
- Herunder
- oplysninger
- Infrastruktur
- IP
- IT
- Job
- Jupyter Notebook
- Kubernetes
- lancere
- lanceringer
- Line (linje)
- Liste
- belastning
- ledelse
- kort
- Maps
- netværk
- notesbøger
- Option
- Andet
- fysisk
- bælg
- politikker
- politik
- pool
- Eksempel
- Main
- private
- projekter
- Python
- Krav
- ressource
- Ressourcer
- Kør
- kører
- sikkerhed
- Tjenester
- sæt
- Simpelt
- So
- Løsninger
- SQL
- starte
- påbegyndt
- Tilstand
- Status
- opbevaring
- butik
- Understøttet
- mål
- Teknisk
- prøve
- tid
- Trafik
- Stol
- brugere
- værdi
- Virtual
- web
- webservices
- inden for
- ord
- Arbejde
- virker