View a markdown version of this page

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 versions 7.1.0 et supérieures d'Amazon EMR, utilisez 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. I/O-intensive Par rapport aux disques standard, les disques optimisés pour le shuffle fournissent des IOPS (I/O opérations par seconde) plus élevées pour accélérer le mouvement des données et réduire la latence lors des opérations de shuffle. Shuffle-optimized les disques vous permettent de connecter des disques d'une taille maximale de 2 To par utilisateur. Configurez donc la capacité adaptée à vos exigences en matière de charge de travail.

Principaux avantages

Shuffle-optimized les disques offrent les avantages suivants.

  • IOPS et débit élevés : les disques sont plus performants que Shuffle-optimized les disques standard en termes d'IOPS et de débit, ce qui profite à toutes les I/O-heavy opérations : brassage des données, déversements de disques, étapes de tri et matérialisation temporaire des données dans le cadre des tâches Spark et Hive.

  • Performances de disque évolutives : pour les grands opérateurs (8 vCPU ou plus), les disques optimisés pour le shuffle offrent des IOPS et un débit proportionnellement plus élevés tous les incréments de 500 Go lorsque cela est possible, tout en maintenant les performances du disque adaptées à votre capacité de calcul.

  • Taille de disque plus importante : Shuffle-optimized les disques prennent en charge des tailles de disque allant de 20 Go à 2 To par utilisateur. Choisissez donc la capacité appropriée en fonction de vos charges de travail.

Prise en main

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 and/or spark.emr-serverless.executor.disk.type à exécuter avec des 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 '{ "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, reportez-vous aux 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 à exécuter avec des disques hive.driver.disk.type and/or hive.tez.disk.type 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 Amazon EMR version 7.1.0. 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, 8 Go de mémoire et 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 vCPU 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" }'