Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Guida introduttiva ad Apache Livy su Amazon su EMR EKS
Completa i seguenti passaggi per installare Apache Livy. Includono la configurazione del gestore di pacchetti, la creazione di uno spazio dei nomi per l'esecuzione dei carichi di lavoro Spark, l'installazione di Livy, l'impostazione del bilanciamento del carico e i passaggi di verifica. Devi completare questi passaggi per eseguire un processo in batch con Spark.
Se non l'hai già fatto, configura Apache Livy per Amazon EMR su. EKS
Autentica il tuo client Helm nel registro AmazonECR. Puoi trovare il
ECR-registry-account
valore corrispondente per i tuoi account ECR del Regione AWS registro Amazon per regione.aws ecr get-login-password \--region
<AWS_REGION>
| helm registry login \ --username AWS \ --password-stdin<ECR-registry-account>
.dkr.ecr.<region-id>
.amazonaws.com.rproxy.goskope.com-
La configurazione di Livy crea un account di servizio per il server Livy e un altro account per l'applicazione Spark. IRSAPer configurare gli account di servizio, vedi Configurazione delle autorizzazioni di accesso con IAM ruoli per gli account di servizio (). IRSA
-
Crea uno spazio dei nomi per eseguire i carichi di lavoro Spark.
kubectl create ns
<spark-ns>
Usa il seguente comando per installare Livy.
Questo endpoint Livy è disponibile solo internamente per gli utenti del VPC cluster. EKS Per abilitare l'accesso oltre aVPC, imposta il comando di installazione
—-set loadbalancer.internal=false
di Helm.Nota
Per impostazione predefinita, non SSL è abilitato all'interno di questo endpoint Livy e l'endpoint è visibile solo all'interno del VPC cluster. EKS Se imposti
loadbalancer.internal=false
andssl.enabled=false
, esponi un endpoint non sicuro all'esterno del tuo. VPC Per configurare un endpoint Livy sicuro, vedi Configurazione di un endpoint Apache Livy sicuro con/. TLS SSLhelm install livy-demo \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/livy \ --version 7.3.0 \ --namespace livy-ns \ --set image=ECR-registry-account.dkr.ecr.region-id.amazonaws.com/livy/emr-7.3.0:latest \ --set sparkNamespace=
<spark-ns>
\ --create-namespaceVedrai il seguente output.
NAME: livy-demo LAST DEPLOYED: Mon Mar 18 09:23:23 2024 NAMESPACE: livy-ns STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: The Livy server has been installed. Check installation status: 1. Check Livy Server pod is running kubectl --namespace livy-ns get pods -l "app.kubernetes.io/instance=livy-demo" 2. Verify created NLB is in Active state and it's target groups are healthy (if loadbalancer.enabled is true) Access LIVY APIs: # Ensure your NLB is active and healthy # Get the Livy endpoint using command: LIVY_ENDPOINT=$(kubectl get svc -n livy-ns -l app.kubernetes.io/instance=livy-demo,emr-containers.amazonaws.com/type=loadbalancer -o jsonpath='{.items[0].status.loadBalancer.ingress[0].hostname}' | awk '{printf "%s:8998\n", $0}') # Access Livy APIs using http://$LIVY_ENDPOINT or https://$LIVY_ENDPOINT (if SSL is enabled) # Note: While uninstalling Livy, makes sure the ingress and NLB are deleted after running the helm command to avoid dangling resources
I nomi degli account di servizio predefiniti per il server Livy e la sessione Spark sono e.
emr-containers-sa-livy
emr-containers-sa-spark-livy
Per utilizzare nomi personalizzati, usa i parametriserviceAccounts.name
andsparkServiceAccount.name
.--set serviceAccounts.name=my-service-account-for-livy --set sparkServiceAccount.name=my-service-account-for-spark
Verifica di aver installato il grafico Helm.
helm list -n livy-ns -o yaml
Il
helm list
comando dovrebbe restituire informazioni sul nuovo grafico Helm.app_version: 0.7.1-incubating chart: livy-emr-7.3.0 name: livy-demo namespace: livy-ns revision: "1" status: deployed updated: 2024-02-08 22:39:53.539243 -0800 PST
Verificare che il Network Load Balancer sia attivo.
LIVY_NAMESPACE=
<livy-ns>
LIVY_APP_NAME=<livy-app-name>
AWS_REGION=<AWS_REGION>
# Get the NLB Endpoint URL NLB_ENDPOINT=$(kubectl --namespace $LIVY_NAMESPACE get svc -l "app.kubernetes.io/instance=$LIVY_APP_NAME,emr-containers.amazonaws.com/type=loadbalancer" -o jsonpath='{.items[0].status.loadBalancer.ingress[0].hostname}') # Get all the load balancers in the account's region ELB_LIST=$(aws elbv2 describe-load-balancers --region $AWS_REGION) # Get the status of the NLB that matching the endpoint from the Kubernetes service NLB_STATUS=$(echo $ELB_LIST | grep -A 8 "\"DNSName\": \"$NLB_ENDPOINT\"" | awk '/Code/{print $2}/}/' | tr -d '"},\n') echo $NLB_STATUS-
Ora verifica che il gruppo target nel Network Load Balancer sia integro.
LIVY_NAMESPACE=
<livy-ns>
LIVY_APP_NAME=<livy-app-name>
AWS_REGION=<AWS_REGION>
# Get the NLB endpoint NLB_ENDPOINT=$(kubectl --namespace $LIVY_NAMESPACE get svc -l "app.kubernetes.io/instance=$LIVY_APP_NAME,emr-containers.amazonaws.com/type=loadbalancer" -o jsonpath='{.items[0].status.loadBalancer.ingress[0].hostname}') # Get all the load balancers in the account's region ELB_LIST=$(aws elbv2 describe-load-balancers --region $AWS_REGION) # Get the NLB ARN from the NLB endpoint NLB_ARN=$(echo $ELB_LIST | grep -B 1 "\"DNSName\": \"$NLB_ENDPOINT\"" | awk '/"LoadBalancerArn":/,/"/'| awk '/:/{print $2}' | tr -d \",) # Get the target group from the NLB. Livy setup only deploys 1 target group TARGET_GROUP_ARN=$(aws elbv2 describe-target-groups --load-balancer-arn $NLB_ARN --region $AWS_REGION | awk '/"TargetGroupArn":/,/"/'| awk '/:/{print $2}' | tr -d \",) # Get health of target group aws elbv2 describe-target-health --target-group-arn $TARGET_GROUP_ARNDi seguito è riportato un esempio di output che mostra lo stato del gruppo target:
{ "TargetHealthDescriptions": [ { "Target": { "Id": "
<target IP>
", "Port": 8998, "AvailabilityZone": "us-west-2d
" }, "HealthCheckPort": "8998", "TargetHealth": { "State": "healthy" } } ] }Una volta raggiunto lo status del vostro NLB gruppo target
healthy
, potete continuare.active
Questo processo può richiedere alcuni minuti. Recupera l'endpoint Livy dall'installazione di Helm. Il fatto che il tuo endpoint Livy sia sicuro o meno dipende dal fatto che tu l'abbia abilitato. SSL
LIVY_NAMESPACE=
<livy-ns>
LIVY_APP_NAME=livy-app-name
LIVY_ENDPOINT=$(kubectl get svc -n livy-ns -l app.kubernetes.io/instance=livy-app-name
,emr-containers.amazonaws.com/type=loadbalancer -o jsonpath='{.items[0].status.loadBalancer.ingress[0].hostname}' | awk '{printf "%s:8998\n", $0}') echo "$LIVY_ENDPOINT"-
Recupera l'account del servizio Spark dall'installazione di Helm
SPARK_NAMESPACE=spark-ns LIVY_APP_NAME=
<livy-app-name>
SPARK_SERVICE_ACCOUNT=$(kubectl --namespace $SPARK_NAMESPACE get sa -l "app.kubernetes.io/instance=$LIVY_APP_NAME" -o jsonpath='{.items[0].metadata.name}') echo "$SPARK_SERVICE_ACCOUNT"L'output visualizzato è simile al seguente:
emr-containers-sa-spark-livy
-
Se imposti di
internalALB=true
abilitare l'accesso dall'esterno del tuoVPC, crea un'EC2istanza Amazon e assicurati che Network Load Balancer consenta il traffico di rete proveniente dall'EC2istanza. Devi farlo affinché l'istanza abbia accesso al tuo endpoint Livy. Per ulteriori informazioni sull'esposizione sicura del tuo endpoint all'esterno del tuoVPC, consulta Configurazione con un endpoint Apache Livy sicuro con/. TLS SSL L'installazione di Livy crea l'account di servizio per eseguire le applicazioni Spark.
emr-containers-sa-spark
Se la tua applicazione Spark utilizza AWS risorse come S3 o chiamate AWS API o CLI operazioni, devi collegare un IAM ruolo con le autorizzazioni necessarie al tuo account del servizio Spark. Per maggiori informazioni, consulta Configurazione delle autorizzazioni di accesso con i IAM ruoli per gli account di servizio (). IRSA
Apache Livy supporta configurazioni aggiuntive che è possibile utilizzare durante l'installazione di Livy. Per ulteriori informazioni, consulta Proprietà di installazione per Apache Livy EMR su Amazon sulle EKS versioni.