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, 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 fournissent des IOPS (opérations d'E/S 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. 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 aux exigences de votre charge de travail.

Principaux avantages

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

  • Performances IOPS élevées : les disques optimisés pour le shuffle fournissent des IOPS plus élevées que les 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 Amazon EMR version 7.1.0. Ces applications présentent les propriétés 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" }'