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