Utilisation de disques optimisés pour le shuffle - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation de disques optimisés pour le shuffle

Avec les EMR versions 7.1.0 et supérieures d'Amazon, vous pouvez utiliser des disques optimisés pour le shuffle lorsque vous exécutez des tâches Apache Spark ou Hive afin d'améliorer les performances des charges de travail intensives en E/S. Par rapport aux disques standard, les disques optimisés pour le shuffle offrent des performances supérieures IOPS (opérations d'E/S par seconde) pour accélérer le mouvement des données et réduire le temps de latence lors des opérations de shuffle. Les disques optimisés pour le shuffle vous permettent d'associer des tailles de disque allant jusqu'à 2 To par utilisateur, afin que vous puissiez configurer la capacité adaptée à vos exigences en matière de charge de travail.

Principaux avantages

Les disques optimisés pour le shuffle offrent les avantages suivants.

  • Hautes IOPS performances : les disques optimisés pour le shuffle offrent des performances supérieures à IOPS celles des disques standard, ce qui permet un brassage des données plus efficace et plus rapide lors des tâches Spark et Hive et d'autres charges de travail intensives en matière de brassage.

  • Taille de disque plus importante : les disques optimisés pour le shuffle prennent en charge des tailles de disque allant de 20 Go à 2 To par utilisateur. Vous pouvez donc choisir la capacité appropriée en fonction de vos charges de travail.

Premiers pas

Consultez les étapes suivantes pour utiliser des disques optimisés pour le shuffle dans vos flux de travail.

Spark
  1. Créez une application EMR Serverless version 7.1.0 à l'aide de la commande suivante.

    aws emr-serverless create-application \ --type "SPARK" \ --name my-application-name \ --release-label emr-7.1.0 \ --region <AWS_REGION>
  2. Configurez votre tâche Spark pour inclure les paramètres spark.emr-serverless.driver.disk.type et/ou pour qu'elle s'exécute avec des disques optimisés spark.emr-serverless.executor.disk.type pour le shuffle. Vous pouvez utiliser l'un des paramètres ou les deux, selon votre cas d'utilisation.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=1 --conf spark.emr-serverless.executor.disk.type=shuffle_optimized" } }'

    Pour plus d'informations, consultez la section Propriétés des tâches Spark.

Hive
  1. Créez une application EMR Serverless version 7.1.0 à l'aide de la commande suivante.

    aws emr-serverless create-application \ --type "HIVE" \ --name my-application-name \ --release-label emr-7.1.0 \ --region <AWS_REGION>
  2. Configurez votre tâche Hive pour inclure les paramètres hive.driver.disk.type et/ou pour qu'elle s'exécute avec des hive.tez.disk.type disques optimisés pour le shuffle. Vous pouvez utiliser l'un des paramètres ou les deux, selon votre cas d'utilisation.

    aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://<DOC-EXAMPLE-BUCKET>/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://<DOC-EXAMPLE-BUCKET>/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://<DOC-EXAMPLE-BUCKET>/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1", "hive.driver.disk.type": "shuffle_optimized", "hive.tez.disk.type": "shuffle_optimized" } }] }'

    Pour plus d'informations, consultez les propriétés des tâches Hive.

Configuration d'une application avec une capacité pré-initialisée

Consultez les exemples suivants pour créer des applications basées sur la EMR version 7.1.0 d'Amazon. Les propriétés de ces applications sont les suivantes :

  • 5 pilotes Spark préinitialisés, chacun doté de 2 VCPU, de 4 Go de mémoire et de 50 Go de disque optimisé pour le shuffle.

  • 50 exécuteurs préinitialisés, chacun doté de 4 VCPU, de 8 Go de mémoire et de 500 Go de disque optimisé pour le shuffle.

Lorsque cette application exécute des tâches Spark, elle consomme d'abord les tâches préinitialisées, puis fait évoluer les tâches à la demande jusqu'à la capacité maximale de 400 V CPU et 1 024 Go de mémoire. Vous pouvez éventuellement omettre la capacité pour l'un DRIVER ou EXECUTOR l'autre.

Spark
aws emr-serverless create-application \ --type "SPARK" \ --name <my-application-name> \ --release-label emr-7.1.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB", "disk": "50GB", "diskType": "SHUFFLE_OPTIMIZED" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB", "disk": "500GB", "diskType": "SHUFFLE_OPTIMIZED" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'
Hive
aws emr-serverless create-application \ --type "HIVE" \ --name <my-application-name> \ --release-label emr-7.1.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB", "disk": "50GB", "diskType": "SHUFFLE_OPTIMIZED" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB", "disk": "500GB", "diskType": "SHUFFLE_OPTIMIZED" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'