Memulai dengan operator Spark untuk 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 operator Spark untuk Amazon di EMR EKS

Topik ini membantu Anda mulai menggunakan operator Spark di Amazon EKS dengan menerapkan aplikasi Spark dan aplikasi Schedule Spark.

Instal operator Spark

Gunakan langkah-langkah berikut untuk menginstal operator Kubernetes untuk Apache Spark.

  1. Jika Anda belum melakukannya, selesaikan langkah-langkahnyaMenyiapkan operator Spark untuk Amazon di EMR EKS.

  2. Otentikasi klien Helm Anda ke registri AmazonECR. Dalam perintah berikut, ganti region-id nilai dengan pilihan Anda Wilayah AWS, dan yang sesuai ECR-registry-account nilai untuk Wilayah dari Akun ECR registri Amazon berdasarkan Wilayah halaman.

    aws ecr get-login-password \ --region region-id | helm registry login \ --username AWS \ --password-stdin ECR-registry-account.dkr.ecr.region-id.amazonaws.com
  3. Instal operator Spark dengan perintah berikut.

    Untuk --version parameter bagan Helm, gunakan label EMR rilis Amazon Anda dengan emr- awalan dan akhiran tanggal dihapus. Misalnya, dengan emr-6.12.0-java17-latest rilis, tentukan6.12.0-java17. Contoh dalam perintah berikut menggunakan emr-7.2.0-latest rilis, sehingga menentukan 7.2.0 bagan Helm. --version

    helm install spark-operator-demo \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/spark-operator \ --set emrContainers.awsRegion=region-id \ --version 7.2.0 \ --namespace spark-operator \ --create-namespace

    Secara default, perintah membuat akun layanan emr-containers-sa-spark-operator untuk operator Spark. Untuk menggunakan akun layanan yang berbeda, berikan argumennyaserviceAccounts.sparkoperator.name. Sebagai contoh:

    --set serviceAccounts.sparkoperator.name my-service-account-for-spark-operator

    Jika Anda ingin menggunakan penskalaan otomatis vertikal dengan operator Spark, tambahkan baris berikut ke perintah instalasi untuk mengizinkan webhook untuk operator:

    --set webhook.enable=true
  4. Verifikasi bahwa Anda menginstal bagan Helm dengan helm list perintah:

    helm list --namespace spark-operator -o yaml

    helm listPerintah harus mengembalikan informasi rilis bagan Helm yang baru Anda gunakan:

    app_version: v1beta2-1.3.8-3.1.1 chart: spark-operator-7.2.0 name: spark-operator-demo namespace: spark-operator revision: "1" status: deployed updated: 2023-03-14 18:20:02.721638196 +0000 UTC
  5. Instalasi lengkap dengan opsi tambahan apa pun yang Anda butuhkan. Untuk informasi lebih lanjut, lihat spark-on-k8s-operatordokumentasi di GitHub.

Jalankan aplikasi Spark

Operator Spark didukung dengan Amazon EMR 6.10.0 atau lebih tinggi. Ketika Anda menginstal operator Spark, itu membuat akun layanan emr-containers-sa-spark untuk menjalankan aplikasi Spark secara default. Gunakan langkah-langkah berikut untuk menjalankan aplikasi Spark dengan operator Spark di Amazon EMR pada EKS 6.10.0 atau lebih tinggi.

  1. Sebelum Anda dapat menjalankan aplikasi Spark dengan operator Spark, selesaikan langkah-langkah di Menyiapkan operator Spark untuk Amazon di EMR EKS dan. Instal operator Spark

  2. Buat file SparkApplication definisi spark-pi.yaml dengan isi contoh berikut:

    apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi namespace: spark-operator spec: type: Scala mode: cluster image: "895885662937.dkr.ecr.us-west-2.amazonaws.com/spark/emr-6.10.0:latest" imagePullPolicy: Always mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///usr/lib/spark/examples/jars/spark-examples.jar" sparkVersion: "3.3.1" restartPolicy: type: Never volumes: - name: "test-volume" hostPath: path: "/tmp" type: Directory driver: cores: 1 coreLimit: "1200m" memory: "512m" labels: version: 3.3.1 serviceAccount: emr-containers-sa-spark volumeMounts: - name: "test-volume" mountPath: "/tmp" executor: cores: 1 instances: 1 memory: "512m" labels: version: 3.3.1 volumeMounts: - name: "test-volume" mountPath: "/tmp"
  3. Sekarang, kirimkan aplikasi Spark dengan perintah berikut. Ini juga akan membuat SparkApplication objek bernamaspark-pi:

    kubectl apply -f spark-pi.yaml
  4. Periksa peristiwa untuk SparkApplication objek dengan perintah berikut:

    kubectl describe sparkapplication spark-pi --namespace spark-operator

Untuk informasi selengkapnya tentang mengirimkan aplikasi ke Spark melalui operator Spark, lihat Menggunakan a SparkApplication dalam dokumentasi pada. spark-on-k8s-operator GitHub

Gunakan Amazon S3 untuk penyimpanan

Untuk menggunakan Amazon S3 sebagai opsi penyimpanan file Anda, tambahkan konfigurasi berikut ke file Anda. YAML

hadoopConf: # EMRFS filesystem fs.s3.customAWSCredentialsProvider: com.amazonaws.auth.WebIdentityTokenCredentialsProvider fs.s3.impl: com.amazon.ws.emr.hadoop.fs.EmrFileSystem fs.AbstractFileSystem.s3.impl: org.apache.hadoop.fs.s3.EMRFSDelegate fs.s3.buffer.dir: /mnt/s3 fs.s3.getObject.initialSocketTimeoutMilliseconds: "2000" mapreduce.fileoutputcommitter.algorithm.version.emr_internal_use_only.EmrFileSystem: "2" mapreduce.fileoutputcommitter.cleanup-failures.ignored.emr_internal_use_only.EmrFileSystem: "true" sparkConf: # Required for EMR Runtime spark.driver.extraClassPath: /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/home/hadoop/extrajars/* spark.driver.extraLibraryPath: /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native spark.executor.extraClassPath: /usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/home/hadoop/extrajars/* spark.executor.extraLibraryPath: /usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native

Jika Anda menggunakan Amazon EMR rilis 7.2.0 dan yang lebih tinggi, konfigurasi disertakan secara default. Dalam hal ini, Anda dapat mengatur jalur file s3://<bucket_name>/<file_path> alih-alih local://<file_path> di YAML file aplikasi Spark.

Kemudian kirimkan aplikasi Spark seperti biasa.