Amazon EMR su Amazon EKS fornisce un'opzione di distribuzione per Amazon EMR che consente di eseguire carichi di lavoro di analisi su Servizio Amazon Elastic Kubernetes (Amazon EKS). Si tratta di un'opzione interessante perché consente di eseguire le applicazioni su un pool comune di risorse senza dover eseguire il provisioning dell'infrastruttura. Inoltre, puoi usare Amazon EMR Studio per creare codice di analisi in esecuzione su cluster Amazon EKS. EMR Studio è un ambiente di sviluppo integrato (IDE) basato sul Web che utilizza notebook Jupyter completamente gestiti che possono essere collegati a qualsiasi cluster EMR, incluso EMR su EKS. Utilizza Accesso singolo AWS (SSO) o un provider di identità compatibile (IdP) per accedere direttamente a EMR Studio tramite un URL sicuro utilizzando le credenziali aziendali.
La distribuzione di EMR Studio per collegarsi a EMR su EKS richiede l'integrazione di diversi servizi AWS:
Inoltre, è necessario installare il seguente EMR sui componenti EKS:
Questo post ti aiuta a creare tutti i componenti necessari e a unirli insieme eseguendo un singolo script. Descriviamo anche l'architettura di questa configurazione e il modo in cui i componenti lavorano insieme.
Panoramica sull'architettura
Con EMR su EKS, puoi eseguire applicazioni Spark insieme ad altri tipi di applicazioni sullo stesso cluster Amazon EKS, migliorando l'allocazione delle risorse e semplificando la gestione dell'infrastruttura. Per ulteriori informazioni sul funzionamento di Amazon EMR all'interno di un cluster Amazon EKS, consulta Novità: Amazon EMR su Amazon Elastic Kubernetes Service (EKS). EMR Studio fornisce un IDE basato sul Web che semplifica lo sviluppo, la visualizzazione e il debug di applicazioni eseguite in EMR. Per ulteriori informazioni, vedere Amazon EMR Studio (anteprima): una nuova esperienza IDE per notebook con Amazon EMR.
I kernel Spark sono pod pianificati in uno spazio dei nomi in un cluster Amazon EKS. EMR Studio utilizza Jupyter Enterprise Gateway (JEG) per avviare i kernel Spark su Amazon EKS. Viene eseguito il provisioning di un endpoint gestito di tipo JEG come distribuzione Kubernetes nello spazio dei nomi associato del cluster virtuale EMR ed esposto come servizio Kubernetes. Ogni cluster virtuale EMR esegue il mapping a uno spazio dei nomi Kubernetes registrato con il cluster Amazon EKS; i cluster virtuali non gestiscono il calcolo fisico o l'archiviazione, ma puntano allo spazio dei nomi Kubernetes in cui è pianificato il carico di lavoro. Ogni cluster virtuale può avere diversi endpoint gestiti, ognuno con i propri kernel configurati per diversi casi d'uso ed esigenze. Gli endpoint gestiti JEG forniscono endpoint HTTPS, serviti da un Application Load Balancer (ALB), che sono raggiungibili solo da EMR Studio e notebook self-hosted creati all'interno di una sottorete privata del VPC Amazon EKS.
Il diagramma seguente illustra l'architettura della soluzione.
L'endpoint gestito viene creato nello spazio dei nomi Amazon EKS del cluster virtuale (in questo caso, sparkns
) e gli endpoint HTTPS sono serviti da sottoreti private. I pod del kernel vengono eseguiti con il ruolo IAM di esecuzione del lavoro definito nell'endpoint gestito. Durante la creazione dell'endpoint gestito, EMR su EKS utilizza AWS Load Balancer Controller in kube-system
spazio dei nomi per creare un ALB con un gruppo di destinazione che si connette all'endpoint gestito da JEG nello spazio dei nomi Kubernetes del cluster virtuale.
Puoi configurare il kernel di ciascun endpoint gestito in modo diverso. Ad esempio, per consentire l'utilizzo di un kernel Spark Colla AWS come catalogo, puoi applicare il seguente file JSON di configurazione in:configuration-overrides
flag durante la creazione di un endpoint gestito:
L'endpoint gestito è una distribuzione Kubernetes gestita da un servizio all'interno dello spazio dei nomi configurato (in questo caso, sparkns
). Quando tracciamo le informazioni sull'endpoint, possiamo vedere come la distribuzione di Jupyter Enterprise Gateway si connette con l'ALB e il gruppo target:
Per vedere come si collega, prendi in considerazione due sessioni di EMR Studio. L'ALB espone la porta 18888 alle sessioni di EMR Studio. Il servizio JEG associa la porta esterna 18888 sull'ALB alla dinamica NodePort
sul servizio JEG (in questo caso, 30091). Il servizio JEG inoltra il traffico al file TargetPort
9547, che instrada il traffico al pod del driver Spark appropriato. Ogni sessione del notebook ha il proprio kernel, che ha i propri rispettivi driver Spark ed executor pod, come illustrato nel diagramma seguente.
Collega EMR Studio a un cluster virtuale e a un endpoint gestito
Ogni volta che un utente collega un cluster virtuale e un endpoint gestito al proprio spazio di lavoro di Studio e avvia una sessione Spark, vengono pianificati i driver Spark e gli esecutori Spark. Lo puoi vedere quando corri kubectl
per controllare quali pod sono stati lanciati:
Ogni sessione del kernel Spark del notebook distribuisce un pod del driver e dei pod dell'esecutore che continuano a essere eseguiti fino alla chiusura della sessione del kernel.
Il codice nelle celle del notebook viene eseguito nei pod executor distribuiti nel cluster Amazon EKS.
Configura EMR su EKS ed EMR Studio
Sono necessari diversi passaggi e parti per configurare sia EMR su EKS che EMR Studio. L'abilitazione di AWS SSO è un prerequisito. Puoi utilizzare i due script di avvio forniti in questa sezione o distribuirlo manualmente utilizzando i passaggi forniti più avanti in questo post.
Forniamo due script di lancio in questo post. Uno è uno script bash che utilizza AWS CloudFormazione, eksctl e Interfaccia della riga di comando di AWS (AWS CLI) per fornire una distribuzione end-to-end di una soluzione completa. L'altro usa il Kit di sviluppo cloud AWS (AWS CDK) per farlo.
Il diagramma seguente mostra l'architettura e i componenti che distribuiamo.
Prerequisiti
Assicurati di completare i seguenti prerequisiti:
Per informazioni sugli IdP supportati, vedere Abilita AWS Single Sign-On per Amazon EMR Studio.
Bash script
La sceneggiatura è disponibile su GitHub.
Prerequisiti
Lo script richiede di utilizzare AWS Cloud9. Seguire le istruzioni nel Workshop Amazon EKS. Assicurati di seguire attentamente queste istruzioni:
Dopo aver distribuito il desktop AWS Cloud9, procedi con i passaggi successivi.
PREPARAZIONE
Utilizza il codice seguente per clonare il repository GitHub e preparare i prerequisiti AWS Cloud9:
Distribuisci lo stack
Prima di eseguire lo script, fornire le seguenti informazioni:
- L'ID account AWS e la regione, se il tuo desktop AWS Cloud9 non si trova nello stesso ID account o regione in cui desideri distribuire EMR su EKS
- Il nome del Servizio di archiviazione semplice Amazon (Amazon S3) bucket da creare
- L'utente AWS SSO da associare alla sessione EMR Studio
Dopo che lo script ha distribuito lo stack, viene visualizzato l'URL dell'EMR Studio distribuito:
Script CDK AWS
Gli script AWS CDK sono disponibili su GitHub. Devi controllare il main
ramo. Gli stack distribuiscono un cluster Amazon EKS e un EMR sul cluster virtuale EKS in un nuovo VPC con sottoreti private e, facoltativamente, un Flusso d'aria Apache gestito da Amazon (Amazon MWAA) e EMR Studio.
Prerequisiti
È necessario AWS CDK versione 1.90.1 o successiva. Per ulteriori informazioni, vedere Nozioni di base su AWS CDK.
Utilizziamo un elenco di prefissi per limitare l'accesso ad alcune risorse agli intervalli IP di rete che approvi. Creare un elenco di prefissi se non ne hai già uno.
Se prevedi di utilizzare EMR Studio, hai bisogno di AWS SSO configurato nel tuo account.
PREPARAZIONE
Dopo aver clonato il repository e verificato il file main
branch, creare e attivare un nuovo ambiente virtuale Python:
Ora installa le dipendenze di Python:
Infine, esegui il bootstrap del CDK AWS:
Distribuisci gli stack
Sintetizza gli stack AWS CDK con il seguente codice:
Questo comando genera quattro stack:
- emr-eks-cdk – La pila principale
- mwaa-cdk – Aggiunge Amazon MWAA
- studio-cdk – Aggiunge i prerequisiti di EMR Studio
- studio-cdk-live – Aggiunge EMR Studio
Il diagramma seguente illustra le risorse distribuite dagli stack AWS CDK.
Inizia distribuendo il primo stack:
Se desideri utilizzare Apache Airflow come orchestratore, distribuisci quello stack:
Distribuisci il primo stack EMR Studio:
Attendere che l'endpoint gestito diventi attivo. Puoi controllare lo stato eseguendo il seguente codice:
L'ID del cluster virtuale è disponibile nell'output di AWS CDK dallo stack emr-eks-cdk.
Quando l'endpoint è attivo, distribuisci il secondo stack EMR Studio:
Distribuzione manuale
Se preferisci distribuire manualmente EMR su EKS ed EMR Studio, utilizza i passaggi in questa sezione.
Configura un VPC
Se utilizzi Amazon EKS v. 1.18, configura un VPC che disponga anche di sottoreti private e opportunamente contrassegnate per i bilanciatori del carico esterni. Per l'etichettatura, vedere: Bilanciamento del carico delle applicazioni su Amazon EKS ed Crea un ruolo del servizio EMR Studio.
Crea un cluster Amazon EKS
Avvia un cluster Amazon EKS con almeno un gruppo di nodi gestiti. Per le istruzioni, vedere Impostare ed Nozioni di base su Amazon EKS.
Crea policy IAM, ruoli, IdP e certificati SSL/TLS pertinenti
Per creare policy, ruoli, IdP e certificato SSL/TLS IAM, completa i seguenti passaggi:
- Abilita l'accesso al cluster per EMR su EKS.
- Crea un IdP in IAM in base all'URL del provider EKS OIDC.
- Crea un certificato SSL/TLS e inseriscilo Gestore certificati AWS.
- Crea le policy e i ruoli IAM pertinenti:
- Ruolo di esecuzione del lavoro
- Aggiorna la politica di attendibilità per il ruolo di esecuzione del lavoro
- Distribuisci e crea la policy IAM per il controller AWS Load Balancer
- Ruolo di servizio EMR Studio
- Ruolo utente EMR Studio
- Politiche utente di EMR Studio associati a utenti e gruppi AWS SSO
- Registra il cluster Amazon EKS con Amazon EMR per creare il cluster EMR virtuale
- Crea l'appropriato gruppi di sicurezza da allegare ad ogni EMR Studio creato:
- Gruppo di sicurezza dell'area di lavoro
- Gruppo di sicurezza del motore
- Contrassegna i gruppi di sicurezza con i tag appropriati. Per le istruzioni, vedere Crea un ruolo del servizio EMR Studio.
Installazioni richieste in Amazon EKS
Distribuire il Controller di bilanciamento del carico AWS nel cluster Amazon EKS se non lo hai già fatto.
Crea EMR su pezzi pertinenti EKS e mappa l'utente su EMR Studio
Completa i seguenti passi:
- Crea almeno un cluster virtuale EMR associato al cluster Amazon EKS. Per istruzioni, vedere il passaggio 1 di Configura Amazon EMR su EKS per EMR Studio.
- Crea almeno un endpoint gestito. Per istruzioni, vedere il passaggio 2 di Configura Amazon EMR su EKS per EMR Studio.
- Creare almeno un EMR Studio; associare EMR Studio alle sottoreti private configurate con il cluster Amazon EKS. Per le istruzioni, vedere Crea uno studio EMR.
- Quando l'EMR Studio è disponibile, mappare un utente o un gruppo AWS SSO a EMR Studio e applicare una policy IAM appropriata a tale utente.
Usa EMR Studio
Per iniziare a utilizzare EMR Studio, completare i seguenti passaggi:
- Trova l'URL per EMR Studio dagli studi in una regione:
- Con l'URL elencato, accedi utilizzando il nome utente AWS SSO utilizzato in precedenza.
Dopo l'autenticazione, l'utente viene indirizzato al dashboard di EMR Studio.
- Scegli Crea spazio di lavoro.
- Nel Nome dell'area di lavoro, inserisci un nome.
- Nel subnet, scegliere la sottorete che corrisponde a una delle sottoreti associate al gruppo di nodi gestiti.
- Nel Posizione S3, inserisci un bucket S3 in cui archiviare i contenuti del notebook.
- Dopo aver creato l'area di lavoro, scegline una che si trovi nel file
Ready
stato.
- Nella barra laterale, scegli l'icona del cluster EMR.
- Sotto Tipo di grappolo¸ scegli Cluster EMR su EKS.
- Scegli il cluster virtuale disponibile e l'endpoint gestito disponibile.
- Scegli allegare.
Dopo averlo collegato, EMR Studio visualizza i kernel disponibili nel file Taccuino ed consolle .
- Scegli PySpark (Kubernetes) per avviare un kernel del notebook e avviare una sessione Spark.
Poiché la configurazione dell'endpoint qui utilizza AWS Glue per il suo metastore, puoi elencare i database e le tabelle connesse al catalogo dati di AWS Glue. È possibile utilizzare il seguente script di esempio per testare l'installazione. Modifica lo script come necessario per il database e la tabella appropriati che hai nel tuo Data Catalog:
ripulire
Per evitare di incorrere in addebiti futuri, elimina le risorse avviate qui eseguendo remove_setup.sh:
Conclusione
EMR su EKS consente di eseguire applicazioni su un pool comune di risorse all'interno di un cluster Amazon EKS senza dover eseguire il provisioning dell'infrastruttura. EMR Studio è un notebook Jupyter completamente gestito e uno strumento che esegue il provisioning di kernel eseguiti su cluster EMR, inclusi cluster virtuali su Amazon EKS. In questo post, abbiamo descritto l'architettura di come EMR Studio si connette con EMR su EKS e fornito script per distribuire automaticamente tutti i componenti per connettere i due servizi.
Se hai domande o suggerimenti, lascia un commento.
Informazioni sugli autori
Randy De Fauw è Principal Solutions Architect presso Amazon Web Services. Lavora con i clienti AWS per fornire indicazioni e assistenza tecnica sui progetti di database, aiutandoli a migliorare il valore delle loro soluzioni quando utilizzano AWS.
Matteo Tan è Senior Analytics Solutions Architect presso Amazon Web Services e fornisce una guida ai clienti che sviluppano soluzioni con i servizi AWS Analytics sui loro carichi di lavoro di analisi.
- '
- "
- 100
- 7
- 9
- accesso
- Il mio account
- attivo
- Tutti
- assegnazione
- Amazon
- Amazon Web Services
- analitica
- Apache
- Applicazioni
- applicazioni
- architettura
- Autenticazione
- AWS
- equilibratore
- costruire
- casi
- a livello internazionale
- oneri
- Procedi all'acquisto
- classificazione
- Cloud
- codice
- Uncommon
- Calcolare
- contenuto
- continua
- controllore
- Creazione
- Credenziali
- Clienti
- cruscotto
- dati
- Banca Dati
- banche dati
- sviluppare
- Mercato
- autista
- endpoint
- Impresa
- Ambiente
- esecuzione
- esperienza
- fabbrica
- Nome
- seguire
- fronteggiato
- futuro
- Idiota
- GitHub
- Gruppo
- Hadoop
- qui
- Alveare
- Come
- HTTPS
- IAM
- ICON
- Identità
- Compreso
- informazioni
- Infrastruttura
- IP
- IT
- Lavoro
- Notebook Jupyter
- kubernetes
- lanciare
- lancia
- linea
- Lista
- caricare
- gestione
- carta geografica
- Maps
- Rete
- computer portatili
- Opzione
- Altro
- Fisico
- baccelli
- Termini e Condizioni
- politica
- pool
- Anteprima
- Direttore
- un bagno
- progetti
- Python
- Requisiti
- risorsa
- Risorse
- Correre
- running
- problemi di
- Servizi
- set
- Un'espansione
- So
- Soluzioni
- SQL
- inizia a
- iniziato
- Regione / Stato
- Stato dei servizi
- conservazione
- Tornare al suo account
- supportato
- Target
- Consulenza
- test
- tempo
- traffico
- Affidati ad
- utenti
- APPREZZIAMO
- virtuale
- sito web
- servizi web
- entro
- parole
- Lavora
- lavori