Guida introduttiva ad Apache Livy su Amazon su EMR EKS - Amazon EMR

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.

  1. Se non l'hai già fatto, configura Apache Livy per Amazon EMR su. EKS

  2. 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
  3. 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

  4. Crea uno spazio dei nomi per eseguire i carichi di lavoro Spark.

    kubectl create ns <spark-ns>
  5. 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 SSL

    helm 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-namespace

    Vedrai 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 parametri serviceAccounts.name andsparkServiceAccount.name.

    --set serviceAccounts.name=my-service-account-for-livy --set sparkServiceAccount.name=my-service-account-for-spark
  6. 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
  7. 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
  8. 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_ARN

    Di 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 targethealthy, potete continuare. active Questo processo può richiedere alcuni minuti.

  9. 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"
  10. 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
  11. 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

  12. 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.