Uso de discos otimizados para embaralhamento - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Uso de discos otimizados para embaralhamento

Com as versões 7.1.0 e superiores do Amazon EMR, você pode usar discos otimizados para reprodução aleatória ao executar trabalhos do Apache Spark ou do Hive para melhorar o desempenho das operações (por segundo) para acelerar a movimentação de dados e reduzir a latência durante I/O-intensive workloads. Compared to standard disks, shuffle-optimized disks provide higher IOPS (I/O as operações aleatórias. Os discos otimizados para embaralhamento permitem anexar tamanhos de disco de até 2 TB por trabalhador, para que você possa configurar a capacidade apropriada para seus requisitos de workload.

Benefícios principais

Os discos otimizados para embaralhamento fornecem os benefícios a seguir.

  • Alto desempenho de IOPS: discos otimizados para embaralhamento fornecem IOPS mais altas do que os discos padrão, levando a um embaralhamento de dados mais eficiente e rápido durante trabalhos do Spark e do Hive e outras workloads com uso intenso de embaralhamento.

  • Tamanho de disco maior: os discos otimizados para embaralhamento oferecem suporte a tamanhos de disco de 20 GB a 2 TB por trabalhador, para que você possa escolher a capacidade adequada com base em suas workloads.

Começar

Confira as etapas a seguir para usar discos otimizados para embaralhamento nos fluxos de trabalho.

Spark
  1. Crie uma aplicação do EMR Sem Servidor versão 7.1.0 com o comando a seguir.

    aws emr-serverless create-application \ --type "SPARK" \ --name my-application-name \ --release-label emr-7.1.0 \ --region <AWS_REGION>
  2. Configure sua tarefa do Spark para incluir os parâmetros a serem executados com spark.emr-serverless.driver.disk.type and/or spark.emr-serverless.executor.disk.type discos otimizados para reprodução aleatória. Você pode usar um ou ambos os parâmetros, dependendo do seu caso de uso.

    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" } }'

    Para obter mais informações, consulte Spark job properties.

Hive
  1. Crie uma aplicação do EMR Sem Servidor versão 7.1.0 com o comando a seguir.

    aws emr-serverless create-application \ --type "HIVE" \ --name my-application-name \ --release-label emr-7.1.0 \ --region <AWS_REGION>
  2. Configure sua tarefa do Hive para incluir os parâmetros a serem executados com hive.driver.disk.type and/or hive.tez.disk.type discos otimizados para reprodução aleatória. Você pode usar um ou ambos os parâmetros, dependendo do seu caso de uso.

    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" } }] }'

    Para obter mais informações, confira Hive job properties.

Configuração de aplicações com capacidade pré-inicializada

Confira os exemplos a seguir para criar aplicações com base na versão 7.1.0 do Amazon EMR. Essas aplicações têm as seguintes propriedades:

  • 5 drivers do Spark pré-inicializados, cada um com 2 vCPUs, 4 GB de memória e 50 GB de disco otimizado para embaralhamento.

  • 50 executores pré-inicializados, cada um com 4 vCPUs, 8 GB de memória e 500 GB de disco otimizado para embaralhamento.

Quando essa aplicação executa trabalhos do Spark, ela primeiro consome os trabalhadores pré-inicializados e depois escala os trabalhadores sob demanda até a capacidade máxima de 400 vCPUs e 1.024 GB de memória. Opcionalmente, você pode omitir a capacidade do DRIVER ou EXECUTOR.

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" }'