Uso de discos otimizados para embaralhamento - Amazon EMR

Uso de discos otimizados para embaralhamento

Com as versões 7.1.0 e superiores do Amazon EMR, você pode usar discos otimizados para embaralhamento ao executar trabalhos do Apache Spark ou do Hive para melhorar a performance de workloads com uso intenso de E/S. Em comparação com os discos padrão, os discos otimizados para embaralhamento fornecem maior IOPS (operações de E/S por segundo) para uma movimentação de dados mais rápida e menor latência durante as operações de embaralhamento. 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.

Conceitos básicos

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 o trabalho do Spark para incluir os parâmetros spark.emr-serverless.driver.disk.type, spark.emr-serverless.executor.disk.type ou ambos para ser executado com discos otimizados para embaralhamento. 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 o trabalho do Hive para incluir os parâmetros hive.driver.disk.type, hive.tez.disk.type ou ambos para ser executado com discos otimizados para embaralhamento. 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" }'