Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Menggunakan RAPIDS Accelerator untuk Apache Spark dengan Amazon EMR di EKS

Mode fokus
Menggunakan RAPIDS Accelerator untuk Apache Spark dengan Amazon EMR di EKS - Amazon EMR

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

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

Dengan Amazon EMR di EKS, Anda dapat menjalankan pekerjaan untuk Nvidia RAPIDS Accelerator untuk Apache Spark. Tutorial ini mencakup cara menjalankan pekerjaan Spark menggunakan RAPIDS pada jenis EC2 instance graphics processing unit (GPU). Tutorial menggunakan versi berikut:

  • Amazon EMR pada versi rilis EKS 6.9.0 dan yang lebih baru

  • Apache Spark 3.x

Anda dapat mempercepat Spark dengan jenis instans EC2 GPU Amazon dengan menggunakan plugin Nvidia RAPIDS Accelerator for Apache Spark. Ketika Anda menggunakan teknologi ini bersama-sama, Anda mempercepat jalur ilmu data Anda tanpa harus membuat perubahan kode apa pun. Ini mengurangi waktu berjalan yang diperlukan untuk pemrosesan data dan pelatihan model. Dengan menyelesaikan lebih banyak dalam waktu yang lebih singkat, Anda menghabiskan lebih sedikit untuk biaya infrastruktur.

Sebelum Anda mulai, pastikan Anda memiliki sumber daya berikut.

  • Amazon EMR pada klaster virtual EKS

  • Cluster Amazon EKS dengan grup node berkemampuan GPU

Cluster virtual Amazon EKS adalah pegangan terdaftar ke namespace Kubernetes di cluster Amazon EKS, dan dikelola oleh Amazon EMR di EKS. Pegangan ini memungkinkan Amazon EMR untuk menggunakan namespace Kubernetes sebagai tujuan untuk menjalankan pekerjaan. Untuk informasi selengkapnya tentang cara menyiapkan klaster virtual, lihat Menyiapkan Amazon EMR di EKS di panduan ini.

Anda harus mengonfigurasi klaster virtual Amazon EKS dengan grup node yang memiliki instance GPU. Anda harus mengkonfigurasi node dengan plugin perangkat Nvidia. Lihat grup node terkelola untuk mempelajari lebih lanjut.

Untuk mengonfigurasi klaster Amazon EKS Anda untuk menambahkan grup node berkemampuan GPU, lakukan prosedur berikut:

Untuk menambahkan grup node yang diaktifkan GPU
  1. Buat grup node berkemampuan GPU dengan perintah create-nodegroup berikut. Pastikan untuk mengganti parameter yang benar untuk cluster Amazon EKS Anda. Gunakan jenis instans yang mendukung Spark RAPIDS, seperti P4, P3, G5 atau G4dn.

    aws eks create-nodegroup \ --cluster-name EKS_CLUSTER_NAME \ --nodegroup-name NODEGROUP_NAME \ --scaling-config minSize=0,maxSize=5,desiredSize=2 CHOOSE_APPROPRIATELY \ --ami-type AL2_x86_64_GPU \ --node-role NODE_ROLE \ --subnets SUBNETS_SPACE_DELIMITED \ --remote-access ec2SshKey= SSH_KEY \ --instance-types GPU_INSTANCE_TYPE \ --disk-size DISK_SIZE \ --region AWS_REGION
  2. Instal plugin perangkat Nvidia di cluster Anda untuk memancarkan jumlah GPUs pada setiap node cluster Anda dan untuk menjalankan kontainer berkemampuan GPU di cluster Anda. Jalankan kode berikut untuk menginstal plugin:

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml
  3. Untuk memvalidasi berapa banyak GPUs yang tersedia di setiap node cluster Anda, jalankan perintah berikut:

    kubectl get nodes "-o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\.com/gpu"
Untuk menjalankan pekerjaan Spark RAPIDS
  1. Kirimkan pekerjaan Spark RAPIDS ke EMR Amazon Anda di klaster EKS. Kode berikut menunjukkan contoh perintah untuk memulai pekerjaan. Pertama kali Anda menjalankan pekerjaan, mungkin perlu beberapa menit untuk mengunduh gambar dan menyimpannya di node.

    aws emr-containers start-job-run \ --virtual-cluster-id VIRTUAL_CLUSTER_ID \ --execution-role-arn JOB_EXECUTION_ROLE \ --release-label emr-6.9.0-spark-rapids-latest \ --job-driver '{"sparkSubmitJobDriver": {"entryPoint": "local:///usr/lib/spark/examples/jars/spark-examples.jar","entryPointArguments": ["10000"], "sparkSubmitParameters":"--class org.apache.spark.examples.SparkPi "}}' \ ---configuration-overrides '{"applicationConfiguration": [{"classification": "spark-defaults","properties": {"spark.executor.instances": "2","spark.executor.memory": "2G"}}],"monitoringConfiguration": {"cloudWatchMonitoringConfiguration": {"logGroupName": "LOG_GROUP _NAME"},"s3MonitoringConfiguration": {"logUri": "LOG_GROUP_STREAM"}}}'
  2. Untuk memvalidasi bahwa Akselerator Spark RAPIDS diaktifkan, periksa log driver Spark. Log ini disimpan baik di dalam CloudWatch atau di lokasi S3 yang Anda tentukan saat Anda menjalankan start-job-run perintah. Contoh berikut umumnya menunjukkan seperti apa garis log:

    22/11/15 00:12:44 INFO RapidsPluginUtils: RAPIDS Accelerator build: {version=22.08.0-amzn-0, user=release, url=, date=2022-11-03T03:32:45Z, revision=, cudf_version=22.08.0, branch=}
    22/11/15 00:12:44 INFO RapidsPluginUtils: RAPIDS Accelerator JNI build: {version=22.08.0, user=, url=https://github.com/NVIDIA/spark-rapids-jni.git, date=2022-08-18T04:14:34Z, revision=a1b23cd_sample, branch=HEAD}
    22/11/15 00:12:44 INFO RapidsPluginUtils: cudf build: {version=22.08.0, user=, url=https://github.com/rapidsai/cudf.git, date=2022-08-18T04:14:34Z, revision=a1b23ce_sample, branch=HEAD}
    22/11/15 00:12:44 WARN RapidsPluginUtils: RAPIDS Accelerator 22.08.0-amzn-0 using cudf 22.08.0.
    22/11/15 00:12:44 WARN RapidsPluginUtils: spark.rapids.sql.multiThreadedRead.numThreads is set to 20.
    22/11/15 00:12:44 WARN RapidsPluginUtils: RAPIDS Accelerator is enabled, to disable GPU support set `spark.rapids.sql.enabled` to false.
    22/11/15 00:12:44 WARN RapidsPluginUtils: spark.rapids.sql.explain is set to `NOT_ON_GPU`. Set it to 'NONE' to suppress the diagnostics logging about the query placement on the GPU.
  3. Untuk melihat operasi yang akan dijalankan pada GPU, lakukan langkah-langkah berikut untuk mengaktifkan logging tambahan. Perhatikan konfigurasi spark.rapids.sql.explain : ALL "”.

    aws emr-containers start-job-run \ --virtual-cluster-id VIRTUAL_CLUSTER_ID \ --execution-role-arn JOB_EXECUTION_ROLE \ --release-label emr-6.9.0-spark-rapids-latest \ --job-driver '{"sparkSubmitJobDriver": {"entryPoint": "local:///usr/lib/spark/examples/jars/spark-examples.jar","entryPointArguments": ["10000"], "sparkSubmitParameters":"--class org.apache.spark.examples.SparkPi "}}' \ ---configuration-overrides '{"applicationConfiguration": [{"classification": "spark-defaults","properties": {"spark.rapids.sql.explain":"ALL","spark.executor.instances": "2","spark.executor.memory": "2G"}}],"monitoringConfiguration": {"cloudWatchMonitoringConfiguration": {"logGroupName": "LOG_GROUP_NAME"},"s3MonitoringConfiguration": {"logUri": "LOG_GROUP_STREAM"}}}'

    Perintah sebelumnya adalah contoh pekerjaan yang menggunakan GPU. Outputnya akan terlihat seperti contoh di bawah ini. Lihat kunci ini untuk bantuan memahami output:

    • *— menandai operasi yang bekerja pada GPU

    • !— menandai operasi yang tidak dapat berjalan pada GPU

    • @— menandai operasi yang bekerja pada GPU, tetapi tidak akan berjalan karena ada di dalam paket yang tidak dapat berjalan pada GPU

     22/11/15 01:22:58 INFO GpuOverrides: Plan conversion to the GPU took 118.64 ms
     22/11/15 01:22:58 INFO GpuOverrides: Plan conversion to the GPU took 4.20 ms
     22/11/15 01:22:58 INFO GpuOverrides: GPU plan transition optimization took 8.37 ms
     22/11/15 01:22:59 WARN GpuOverrides:
        *Exec <ProjectExec> will run on GPU
          *Expression <Alias> substring(cast(date#149 as string), 0, 7) AS month#310 will run on GPU
            *Expression <Substring> substring(cast(date#149 as string), 0, 7) will run on GPU
              *Expression <Cast> cast(date#149 as string) will run on GPU
          *Exec <SortExec> will run on GPU
            *Expression <SortOrder> date#149 ASC NULLS FIRST will run on GPU
            *Exec <ShuffleExchangeExec> will run on GPU
              *Partitioning <RangePartitioning> will run on GPU
                *Expression <SortOrder> date#149 ASC NULLS FIRST will run on GPU
              *Exec <UnionExec> will run on GPU
                !Exec <ProjectExec> cannot run on GPU because not all expressions can be replaced
                  @Expression <AttributeReference> customerID#0 could run on GPU
                  @Expression <Alias> Charge AS kind#126 could run on GPU
                    @Expression <Literal> Charge could run on GPU
                  @Expression <AttributeReference> value#129 could run on GPU
                  @Expression <Alias> add_months(2022-11-15, cast(-(cast(_we0#142 as bigint) + last_month#128L) as int)) AS date#149 could run on GPU
                    ! <AddMonths> add_months(2022-11-15, cast(-(cast(_we0#142 as bigint) + last_month#128L) as int)) cannot run on GPU because GPU does not currently support the operator class org.apache.spark.sql.catalyst.expressions.AddMonths
                      @Expression <Literal> 2022-11-15 could run on GPU
                      @Expression <Cast> cast(-(cast(_we0#142 as bigint) + last_month#128L) as int) could run on GPU
                        @Expression <UnaryMinus> -(cast(_we0#142 as bigint) + last_month#128L) could run on GPU
                          @Expression <Add> (cast(_we0#142 as bigint) + last_month#128L) could run on GPU
                            @Expression <Cast> cast(_we0#142 as bigint) could run on GPU
                              @Expression <AttributeReference> _we0#142 could run on GPU
                            @Expression <AttributeReference> last_month#128L could run on GPU
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.