Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden Sie den Nvidia Spark-Rapids Accelerator für Spark
Mit Amazon EMR Version 6.2.0 und höher können Sie die von Nvidia verwendenSTROMSCHNELLEN
Die folgenden Abschnitte führen Sie durch die Konfiguration Ihres EMR-Clusters für die Verwendung des Spark-Rapids-Plug-ins für Spark.
Wählen Sie Instance-Typen
Um das Nvidia Spark-Rapids-Plugin für Spark verwenden zu können, müssen die Core- und Task-Instance-Gruppen EC2-GPU-Instance-Typen verwenden, die denHardwareanforderungen
Richten Sie Anwendungskonfigurationen für Ihren Cluster ein
1. Aktivieren Sie Amazon EMR, um die Plugins auf Ihrem neuen Cluster zu installieren
Um Plugins zu installieren, geben Sie bei der Erstellung Ihres Clusters die folgende Konfiguration an:
{ "Classification":"spark", "Properties":{ "enableSparkRapids":"true" } }
2. YARN so konfigurieren, dass es GPU verwendet
Einzelheiten zur Verwendung von GPU auf YARN finden Sie unterGPU auf YARN verwenden
{ "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. Spark für die Verwendung von RAPIDS konfigurieren
Hier sind die erforderlichen Konfigurationen, damit Spark das RAPIDS-Plugin verwenden kann:
{ "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" } }
XGBoost4J-Spark-Bibliothek
{ "Classification":"spark-defaults", "Properties":{ "spark.submit.pyFiles":"/usr/lib/spark/jars/xgboost4j-spark_3.0-1.4.2-0.3.0.jar" } }
Weitere Spark-Konfigurationen, mit denen Sie einen GPU-beschleunigten EMR-Cluster optimieren können, finden Sie in derLeitfaden zur Optimierung von Rapids Accelerator für Apache Spark
4. YARN Capacity Scheduler konfigurieren
DominantResourceCalculator
muss so konfiguriert sein, dass GPU-Scheduling und -Isolierung aktiviert sind. Weitere Informationen finden Sie unterGPU auf YARN verwenden
{ "Classification":"capacity-scheduler", "Properties":{ "yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator" } }
5. Erstellen Sie eine JSON-Datei, die alle Ihre Konfigurationen enthält
Sie können eine JSON-Datei erstellen, die Ihre Konfiguration für die Verwendung des RAPIDS-Plug-ins für Ihren Spark-Cluster enthält. Sie stellen die Datei später bereit, wenn Sie Ihren Cluster starten.
Die Datei kann lokal oder auf S3 gespeichert werden. Weitere Informationen zur Bereitstellung von Anwendungskonfigurationen für Ihre Cluster finden Sie unterAnwendungen konfigurieren.
Im Folgenden finden Sie eine Beispieldatei mit dem Namenmy-configurations.json
. Sie können es als Vorlage verwenden, um mit der Erstellung Ihrer eigenen Konfigurationen zu beginnen.
[ { "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.4.2-0.3.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" } } ]
Fügen Sie eine Bootstrap-Aktion für Ihren Cluster hinzu
Um YARN auf der GPU verwenden zu können, müssen Sie die Cgroups-Berechtigungen für YARN in Ihrem Cluster öffnen. Dies kann mithilfe eines EMR-Bootstrap-Aktionsskripts erfolgen.
Weitere Informationen zur Bereitstellung von Bootstrap-Aktionsskripten beim Erstellen Ihres Clusters finden Sie unterGrundlagen der Bootstrap-Aktionin derAmazon EMR-Verwaltungsleitfaden.
Hier ist ein Beispielskript mit dem Namenmy-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
Starten Sie Ihren Cluster
Der letzte Schritt besteht darin, Ihren Cluster mit den oben genannten Clusterkonfigurationen zu starten. Hier ist ein Beispielbefehl zum Starten eines Clusters über die EMR-CLI:
aws emr create-cluster \ --release-label emr-6.2.0 \ --applications Name=Hadoop Name=Spark \ --service-role EMR_DefaultRole_V2 \ --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