Memulai dengan Apache Livy di Amazon di EMR EKS - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memulai dengan Apache Livy di Amazon di EMR EKS

Selesaikan langkah-langkah berikut untuk menginstal Apache Livy. Mereka termasuk mengonfigurasi manajer paket, membuat namespace untuk menjalankan beban kerja Spark, menginstal Livy, menyiapkan load balancing, dan langkah-langkah verifikasi. Anda harus menyelesaikan langkah-langkah ini untuk menjalankan pekerjaan batch dengan Spark.

  1. Jika Anda belum melakukannya, siapkan Apache Livy untuk Amazon EMR di. EKS

  2. Otentikasi klien Helm Anda ke registri AmazonECR. Anda dapat menemukan ECR-registry-account nilai yang sesuai untuk akun Wilayah AWS ECR registri Amazon Anda berdasarkan Wilayah.

    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. Menyiapkan Livy membuat akun layanan untuk server Livy dan akun lain untuk aplikasi Spark. IRSAUntuk menyiapkan akun layanan, lihat Menyiapkan izin akses dengan IAM peran untuk akun layanan (IRSA).

  4. Buat namespace untuk menjalankan beban kerja Spark Anda.

    kubectl create ns <spark-ns>
  5. Gunakan perintah berikut untuk menginstal Livy.

    Titik akhir Livy ini hanya tersedia secara internal untuk VPC di cluster. EKS Untuk mengaktifkan akses di luarVPC, atur —-set loadbalancer.internal=false perintah instalasi Helm Anda.

    catatan

    Secara default, tidak SSL diaktifkan dalam titik akhir Livy ini dan titik akhir hanya terlihat di dalam clusterVPC. EKS Jika Anda mengatur loadbalancer.internal=false danssl.enabled=false, Anda mengekspos titik akhir yang tidak aman di luar Anda. VPC Untuk menyiapkan titik akhir Livy yang aman, lihat Mengonfigurasi titik akhir Apache Livy yang aman dengan/. 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

    Anda akan melihat output berikut.

    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

    Nama akun layanan default untuk server Livy dan sesi Spark adalah emr-containers-sa-livy dan. emr-containers-sa-spark-livy Untuk menggunakan nama kustom, gunakan sparkServiceAccount.name parameter serviceAccounts.name dan.

    --set serviceAccounts.name=my-service-account-for-livy --set sparkServiceAccount.name=my-service-account-for-spark
  6. Verifikasi bahwa Anda menginstal bagan Helm.

    helm list -n livy-ns -o yaml

    helm listPerintah harus mengembalikan informasi tentang bagan Helm baru Anda.

    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. Pastikan Network Load Balancer aktif.

    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. Sekarang verifikasi bahwa kelompok target di Network Load Balancer sehat.

    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

    Berikut ini adalah contoh output yang menunjukkan status kelompok target:

    { "TargetHealthDescriptions": [ { "Target": { "Id": "<target IP>", "Port": 8998, "AvailabilityZone": "us-west-2d" }, "HealthCheckPort": "8998", "TargetHealth": { "State": "healthy" } } ] }

    Setelah status Anda NLB menjadi active dan kelompok target Andahealthy, Anda dapat melanjutkan. Mungkin butuh beberapa menit.

  9. Ambil titik akhir Livy dari instalasi Helm. Apakah titik akhir Livy Anda aman atau tidak tergantung pada apakah Anda mengaktifkan. 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. Ambil akun layanan Spark dari instalasi 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"

    Anda akan melihat sesuatu yang mirip dengan output berikut:

    emr-containers-sa-spark-livy
  11. Jika Anda mengatur internalALB=true untuk mengaktifkan akses dari luarVPC, buat EC2 instans Amazon dan pastikan Network Load Balancer memungkinkan lalu lintas jaringan yang berasal dari instans. EC2 Anda harus melakukannya misalnya untuk memiliki akses ke titik akhir Livy Anda. Untuk informasi selengkapnya tentang mengekspos titik akhir Anda dengan aman di luarVPC, lihat Menyiapkan dengan titik akhir Apache Livy yang aman dengan/. TLS SSL

  12. Menginstal Livy membuat akun layanan emr-containers-sa-spark untuk menjalankan aplikasi Spark. Jika aplikasi Spark Anda menggunakan AWS sumber daya apa pun seperti S3 atau panggilan AWS API atau CLI operasi, Anda harus menautkan IAM peran dengan izin yang diperlukan ke akun layanan spark Anda. Untuk informasi selengkapnya, lihat Menyiapkan izin akses dengan IAM peran untuk akun layanan (IRSA).

Apache Livy mendukung konfigurasi tambahan yang dapat Anda gunakan saat menginstal Livy. Untuk informasi selengkapnya, lihat Properti instalasi untuk Apache Livy EMR di Amazon pada EKS rilis.