As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Conceitos básicos do Apache Livy para Amazon EMR no EKS
Conclua as etapas a seguir para instalar o Apache Livy. Eles incluem a configuração do gerenciador de pacotes, a criação de um namespace para executar workloads do Spark, a instalação do Livy, a configuração do balanceamento de carga e as etapas de verificação. Você precisa concluir essas etapas para executar um trabalho em lotes com o Spark.
Se ainda não tiver feito isso, configure o Apache Livy para o Amazon EMR no EKS.
Autentique seu cliente Helm no registro do Amazon ECR. Você pode encontrar o
ECR-registry-accountvalor correspondente para suas contas Região da AWS de registro do Amazon ECR por região.aws ecr get-login-password \--region<AWS_REGION>| helm registry login \ --usernameAWS\ --password-stdin<ECR-registry-account>.dkr.ecr.<region-id>.amazonaws.com.rproxy.govskope.ca-
A configuração do Livy cria uma conta de serviço para o servidor do Livy e outra conta para a aplicação do Spark. Para configurar o IRSA nas contas de serviço, consulte Setting up access permissions with IAM roles for service accounts (IRSA).
-
Crie um namespace para executar as workloads do Spark.
kubectl create ns<spark-ns> Use o comando a seguir para instalar o Livy.
Esse endpoint do Livy só está disponível internamente para a VPC no cluster do EKS. Para habilitar o acesso além da VPC, defina
—-set loadbalancer.internal=falseno comando de instalação do Helm.nota
Por padrão, o SSL não está habilitado nesse endpoint do Livy, e o endpoint só é visível dentro da VPC do cluster do EKS. Se você definir
loadbalancer.internal=falseessl.enabled=false, estará expondo um endpoint inseguro fora da sua VPC. Para configurar um endpoint seguro do Livy, consulte Configurando um endpoint seguro do Apache Livy com. TLS/SSLhelm install livy-demo \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/livy \ --version 7.13.0 \ --namespace livy-ns \ --set image=ECR-registry-account.dkr.ecr.region-id.amazonaws.com/livy/emr-7.13.0:latest \ --set sparkNamespace=<spark-ns>\ --create-namespaceVocê verá a saída a seguir.
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 resourcesOs nomes padrão da conta de serviço para o servidor do Livy e a sessão do Spark são
emr-containers-sa-livyeemr-containers-sa-spark-livy. Para usar nomes personalizados, utilize os parâmetrosserviceAccounts.nameesparkServiceAccount.name.--set serviceAccounts.name=my-service-account-for-livy --set sparkServiceAccount.name=my-service-account-for-sparkVerifique se você instalou o chart do Helm.
helm list -n livy-ns -o yamlO comando
helm listdeve retornar as informações sobre o novo chart do Helm.app_version: 0.7.1-incubating chart: livy-emr-7.13.0 name: livy-demo namespace: livy-ns revision: "1" status: deployed updated: 2024-02-08 22:39:53.539243 -0800 PSTVerifique se o Network Load Balancer está ativo.
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-
Agora, verifique se o grupo de destino no Network Load Balancer está íntegro.
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_ARNEste é um exemplo de saída que mostra o status do grupo de destino:
{ "TargetHealthDescriptions": [ { "Target": { "Id": "<target IP>", "Port": 8998, "AvailabilityZone": "us-west-2d" }, "HealthCheckPort": "8998", "TargetHealth": { "State": "healthy" } } ] }Quando o status do NLB se tornar
activee o grupo de destinohealthy, você poderá continuar. Pode demorar alguns minutos. Recupere o endpoint do Livy da instalação do Helm. Se o endpoint do Livy é seguro ou não, depende de você ter habilitado o SSL.
LIVY_NAMESPACE=<livy-ns>LIVY_APP_NAME=livy-app-nameLIVY_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ção da conta de serviço do Spark na instalação do 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"Você deverá ver algo semelhante ao resultado a seguir:
emr-containers-sa-spark-livy -
Se você configurar
internalALB=truepara habilitar o acesso de fora da VPC, crie uma instância do Amazon EC2 e certifique-se de que o Network Load Balancer permita tráfego de rede proveniente da instância do EC2. Você deve fazer isso para que a instância tenha acesso ao endpoint do Livy. Para obter mais informações sobre como expor com segurança seu endpoint fora da sua VPC, consulte Como configurar um endpoint Apache Livy seguro com. TLS/SSL A instalação do Livy cria a conta de serviço
emr-containers-sa-sparkpara executar as aplicações do Spark. Se seu aplicativo Spark usa AWS recursos como o S3 ou chama operações de AWS API ou CLI, você deve vincular uma função do IAM com as permissões necessárias à sua conta de serviço do Spark. Para obter mais informações, consulte Setting up access permissions with IAM roles for service accounts (IRSA).
O Apache Livy oferece suporte a configurações adicionais que você pode usar ao instalar o Livy. Para obter mais informações, consulte Propriedades de instalação do Apache Livy no Amazon EMR nas versões do EKS.