Gunakan Nvidia Spark-Rapids Accelerator untuk Spark - Amazon EMR

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

Gunakan Nvidia Spark-Rapids Accelerator untuk Spark

Dengan Amazon EMR rilis versi 6.2.0 dan kemudian, Anda dapat menggunakan JERAM Akselerator untuk Apache Spark plugin untuk mempercepat Spark menggunakan EC2 grafis processing unit (GPU) jenis contoh. Rapids Accelerator akan GPU-mempercepat jaringan pipa ilmu data Apache Spark 3.0 Anda tanpa perubahan kode dan mempercepat pemrosesan data dan pelatihan model, sementara secara substansial menurunkan biaya infrastruktur.

Bagian berikut memandu Anda melalui konfigurasi cluster EMR Anda untuk menggunakan Plugin Spark-Rapids untuk Spark.

Pilih jenis instans

Untuk menggunakan plugin Nvidia Spark-Rapids untuk Spark, kelompok inti dan contoh tugas harus menggunakan jenis contoh GPU EC2 yang memenuhi Persyaratan perangkat keras Spark-jeram. Untuk melihat daftar lengkap jenis instans GPU yang didukung EMR, silakan lihatJenis instans yang didukung di Amazon EMR. Jenis instans untuk grup master instance dapat berupa tipe GPU atau non-GPU, namun tipe instance ARM tidak didukung.

Mengatur konfigurasi aplikasi untuk cluster

1. Aktifkan Amazon EMR untuk menginstal plugin di cluster baru Anda

Untuk menginstal plugin, menyediakan konfigurasi berikut saat membuat cluster Anda:

{ "Classification":"spark", "Properties":{ "enableSparkRapids":"true" } }

2. Configure YARN para usar

Untuk rincian tentang penggunaan GPU di BEARN, lihat Menggunakan GPU pada BEARN dalam dokumentasi Apache Hadoop. Berikut adalah contoh konfigurasi:

{ "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.resource-plugins":"yarn.io/gpu", "yarn.resource-types":"yarn.io/gpu", "yarn.nodemanager.resource-plugins.gpu.allowed-gpu-devices":"auto", "yarn.nodemanager.resource-plugins.gpu.path-to-discovery-executables":"/usr/bin", "yarn.nodemanager.linux-container-executor.cgroups.mount":"true", "yarn.nodemanager.linux-container-executor.cgroups.mount-path":"/sys/fs/cgroup", "yarn.nodemanager.linux-container-executor.cgroups.hierarchy":"yarn", "yarn.nodemanager.container-executor.class":"org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor" } }, { "Classification":"container-executor", "Properties":{ }, "Configurations":[ { "Classification":"gpu", "Properties":{ "module.enabled":"true" } }, { "Classification":"cgroups", "Properties":{ "root":"/sys/fs/cgroup", "yarn-hierarchy":"yarn" } } ] }

3. Configurar Spark para usar

Berikut adalah konfigurasi yang diperlukan untuk mengaktifkan Spark untuk menggunakan RAPIDS Plugin:

{ "Classification":"spark-defaults", "Properties":{ "spark.plugins":"com.nvidia.spark.SQLPlugin", "spark.sql.sources.useV1SourceList":"", "spark.executor.resource.gpu.discoveryScript":"/usr/lib/spark/scripts/gpu/getGpusResources.sh", "spark.executor.extraLibraryPath":"/usr/local/cuda/targets/x86_64-linux/lib:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/compat/lib:/usr/local/cuda/lib:/usr/local/cuda/lib64:/usr/lib/hadoop/lib/native:/usr/lib/hadoop-lzo/lib/native:/docker/usr/lib/hadoop/lib/native:/docker/usr/lib/hadoop-lzo/lib/native" } }

Perpustakaan XGBoost4J-spark dalam dokumentasi XGBoost juga tersedia ketika plugin Spark RAPIDS diaktifkan pada cluster Anda. Anda dapat menggunakan konfigurasi berikut untuk mengintegrasikan XGBoost dengan Anda Spark job:

{ "Classification":"spark-defaults", "Properties":{ "spark.submit.pyFiles":"/usr/lib/spark/jars/xgboost4j-spark_3.0-1.0.0-0.2.0.jar" } }

Untuk konfigurasi Spark tambahan yang dapat Anda gunakan untuk menyetel cluster EMR GPU-Accelerated, silakan lihat Accelerator Rapids para apache Spark dalam dokumentasi Nvidia.github.io.

4. Konfigurasi Penjadwalan Kapasitas

DominantResourceCalculator harus dikonfigurasi untuk mengaktifkan penjadwalan dan isolasi GPU. Untuk informasi lebih lanjut, lihat: Menggunakan GPU pada BEARN dalam dokumentasi Apache Hadoop.

{ "Classification":"capacity-scheduler", "Properties":{ "yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator" } }

5. Buat File JSON untuk Sertakan Semua Konfigurasi Anda

Anda dapat membuat file JSON yang berisi konfigurasi Anda untuk menggunakan plugin RAPIDS untuk cluster Spark Anda. Anda menyediakan file kemudian ketika meluncurkan cluster Anda.

File dapat disimpan secara lokal atau di S3. Untuk informasi selengkapnya tentang cara menyediakan konfigurasi aplikasi untuk kluster Anda, lihat Konfigurasikan aplikasi.

Berikut ini adalah file sampel bernama my-configurations.json. Anda dapat menggunakannya sebagai template untuk mulai membangun konfigurasi Anda sendiri.

[ { "Classification":"spark", "Properties":{ "enableSparkRapids":"true" } }, { "Classification":"yarn-site", "Properties":{ "yarn.nodemanager.resource-plugins":"yarn.io/gpu", "yarn.resource-types":"yarn.io/gpu", "yarn.nodemanager.resource-plugins.gpu.allowed-gpu-devices":"auto", "yarn.nodemanager.resource-plugins.gpu.path-to-discovery-executables":"/usr/bin", "yarn.nodemanager.linux-container-executor.cgroups.mount":"true", "yarn.nodemanager.linux-container-executor.cgroups.mount-path":"/sys/fs/cgroup", "yarn.nodemanager.linux-container-executor.cgroups.hierarchy":"yarn", "yarn.nodemanager.container-executor.class":"org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor" } }, { "Classification":"container-executor", "Properties":{ }, "Configurations":[ { "Classification":"gpu", "Properties":{ "module.enabled":"true" } }, { "Classification":"cgroups", "Properties":{ "root":"/sys/fs/cgroup", "yarn-hierarchy":"yarn" } } ] }, { "Classification":"spark-defaults", "Properties":{ "spark.plugins":"com.nvidia.spark.SQLPlugin", "spark.sql.sources.useV1SourceList":"", "spark.executor.resource.gpu.discoveryScript":"/usr/lib/spark/scripts/gpu/getGpusResources.sh", "spark.executor.extraLibraryPath":"/usr/local/cuda/targets/x86_64-linux/lib:/usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/compat/lib:/usr/local/cuda/lib:/usr/local/cuda/lib64:/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.submit.pyFiles":"/usr/lib/spark/jars/xgboost4j-spark_3.0-1.0.0-0.2.0.jar", "spark.rapids.sql.concurrentGpuTasks":"1", "spark.executor.resource.gpu.amount":"1", "spark.executor.cores":"2", "spark.task.cpus":"1", "spark.task.resource.gpu.amount":"0.5", "spark.rapids.memory.pinnedPool.size":"0", "spark.executor.memoryOverhead":"2G", "spark.locality.wait":"0s", "spark.sql.shuffle.partitions":"200", "spark.sql.files.maxPartitionBytes":"512m" } }, { "Classification":"capacity-scheduler", "Properties":{ "yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator" } } ]

Menambahkan tindakan bootstrap untuk cluster Anda

Untuk menggunakan YARN pada GPU, Anda perlu membuka izin cgroups ke BEARN di cluster Anda, yang dapat dilakukan dengan menggunakan skrip tindakan bootstrap EMR.

Untuk informasi lebih lanjut tentang cara menyediakan skrip tindakan bootstrap saat membuat cluster Anda, lihat Dasar tindakan bootstrap di Amazon EMR.

Berikut ini adalah contoh skrip bernama my-bootstap-action.sh:

#!/bin/bash set -ex sudo chmod a+rwx -R /sys/fs/cgroup/cpu,cpuacct sudo chmod a+rwx -R /sys/fs/cgroup/devices

Luncurkan cluster Anda

Langkah terakhir adalah meluncurkan cluster Anda dengan konfigurasi cluster yang disebutkan di atas. Berikut adalah contoh perintah untuk meluncurkan cluster melalui EMR CLI:

aws emr create-cluster \ --release-label emr-6.2.0 \ --applications Name=Hadoop Name=Spark \ --service-role EMR_DefaultRole \ --ec2-attributes KeyName=my-key-pair,InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m4.4xlarge \ InstanceGroupType=CORE,InstanceCount=1,InstanceType=g4dn.2xlarge \ InstanceGroupType=TASK,InstanceCount=1,InstanceType=g4dn.2xlarge \ --configurations file:///my-configurations.json \ --bootstrap-actions Name='My Spark Rapids Bootstrap action',Path=s3://my-bucket/my-bootstrap-action.sh