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.
Jika Anda belum melakukannya, siapkan Apache Livy untuk Amazon EMR di. EKS
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.rproxy.goskope.com-
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).
-
Buat namespace untuk menjalankan beban kerja Spark Anda.
kubectl create ns
<spark-ns>
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 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-namespaceAnda 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, gunakansparkServiceAccount.name
parameterserviceAccounts.name
dan.--set serviceAccounts.name=my-service-account-for-livy --set sparkServiceAccount.name=my-service-account-for-spark
Verifikasi bahwa Anda menginstal bagan Helm.
helm list -n livy-ns -o yaml
helm list
Perintah 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
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-
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_ARNBerikut 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. 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"-
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
-
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 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.