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.
Den Nvidia-RAPIDS-Accelerator für Apache Spark verwenden
Mit Amazon EMR Version 6.2.0 und höher können Sie das RAPIDS Accelerator for Apache Spark-Plug-In von Nvidia verwenden, um Spark
Die folgenden Abschnitte führen Sie durch die Konfiguration Ihres EMR-Clusters für die Verwendung des Spark-Rapids-Plugins für Spark.
Instance-Typen auswählen
Um das Nvidia Spark-Rapids-Plugin für Spark verwenden zu können, müssen die Kern- und Task-Instance-Gruppen EC2 GPU-Instance-Typen verwenden, die die Hardwareanforderungen von Spark-Rapids erfüllen.
Anwendungskonfigurationen für Ihren Cluster einrichten
1. Amazon EMR aktivieren, um die Plugins auf Ihrem neuen Cluster zu installieren
Zum Installieren von Plugins geben Sie beim Erstellen Ihres Clusters die folgende Konfiguration an:
{
"Classification":"spark",
"Properties":{
"enableSparkRapids":"true"
}
}
2. YARN für die Verwendung von GPU konfigurieren
Einzelheiten zur Verwendung von GPU auf YARN finden Sie unter Verwenden von GPU auf YARN
Beispiel für eine YARN-Konfiguration für Amazon EMR 7.x
{
"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":"/spark-rapids-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":"/spark-rapids-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.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"
}
}
XGBoost4Die J-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 im Accelerator für Apache-Spark-Tuning-Anleitung
4. YARN Capacity Scheduler konfigurieren
DominantResourceCalculator
muss so konfiguriert sein, dass GPU-Planung und -Isolierung aktiviert werden. Weitere Informationen finden Sie unter Verwendung der GPU auf YARN
{
"Classification":"capacity-scheduler",
"Properties":{
"yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"
}
}
5. Eine JSON-Datei erstellen, die all Ihre Konfigurationen enthält
Sie können eine JSON-Datei erstellen, die Ihre Konfiguration für die Verwendung des RAPIDS-Plugins für Ihren Spark-Cluster enthält. Sie stellen die Datei später bereit, wenn Sie Ihren Cluster starten.
Sie können die Datei lokal oder in S3 speichern. Weitere Informationen zur Bereitstellung von Anwendungskonfigurationen für Ihre Cluster finden Sie unter Anwendungen konfigurieren.
Verwenden Sie die folgenden Beispieldateien als Vorlagen, um Ihre eigenen Konfigurationen zu erstellen.
my-configurations.json
-Beispieldatei für Amazon EMR 7.x
[
{
"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":"/spark-rapids-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":"/spark-rapids-cgroup",
"yarn-hierarchy":"yarn"
}
}
]
},
{
"Classification":"spark-defaults",
"Properties":{
"spark.plugins":"com.nvidia.spark.SQLPlugin",
"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
Weitere Informationen zur Bereitstellung von Bootstrap-Aktionsskripten bei der Erstellung Ihres Clusters finden Sie unter Grundlagen der Bootstrap-Aktion im Verwaltungshandbuch für Amazon EMR.
Die folgenden Beispielskripts zeigen, wie eine Bootstrap-Aktionsdatei für Amazon EMR 6.x und 7.x erstellt wird:
my-bootstrap-action.sh
-Beispieldatei für Amazon EMR 7.x
Um YARN zur Verwaltung von GPU-Ressourcen mit Amazon EMR 7.x-Versionen zu verwenden, müssen Sie manuell mounten CGroup v1 auf Ihrem Cluster. Sie können dies mit einem Bootstrap-Aktionsskript tun, wie in diesem Beispiel gezeigt.
#!/bin/bash
set -ex
sudo mkdir -p /spark-rapids-cgroup/devices
sudo mount -t cgroup -o devices cgroupv1-devices /spark-rapids-cgroup/devices
sudo chmod a+rwx -R /spark-rapids-cgroup
Ihren Cluster starten
Der letzte Schritt besteht darin, Ihren Cluster mit den oben genannten Cluster-Konfigurationen zu starten. Hier ist ein Beispielbefehl zum Starten eines Clusters über die Amazon-EMR-CLI:
aws emr create-cluster \
--release-label emr-7.7.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://amzn-s3-demo-bucket/my-bootstrap-action.sh