Transferência de dados para a classe S3 Express One Zone com o EMR Sem Servidor - 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á.

Transferência de dados para a classe S3 Express One Zone com o EMR Sem Servidor

Com as versões 7.2.0 e superiores do Amazon EMR, você pode usar o EMR Sem Servidor com a classe de armazenamento Amazon S3 Express One Zone para melhorar a performance ao executar trabalhos e workloads. O S3 Express One Zone é uma classe de armazenamento de zona única e alta performance do Amazon S3 que oferece acesso consistente a dados de milissegundos de um dígito para a maioria das aplicações sensíveis à latência. Na hora da execução, o S3 Express One Zone oferece o armazenamento de objetos na nuvem com a menor latência e a maior performance do Amazon S3.

Pré-requisitos

  • Permissões do S3 Express One Zone: quando o S3 Express One Zone inicialmente executa uma ação como GET, LIST ou PUT em um objeto do S3, a classe de armazenamento chama CreateSession em seu nome. Sua política do IAM deve conceder a permissão s3express:CreateSession para que o conector S3A possa invocar a API CreateSession. Para obter um exemplo de política com essa permissão, consulte Conceitos básicos da classe S3 Express One Zone.

  • Conector S3A: para configurar o Spark para acessar dados de um bucket do Amazon S3 que usa a classe de armazenamento S3 Express One Zone, você deve usar o conector S3A do Apache Hadoop. Para usar o conector, certifique-se de que todos os URIs do S3 usem o esquema do s3a. Caso contrário, você pode alterar a implementação do sistema de arquivos usado para os esquemas do s3 e do s3n.

Para alterar o esquema do s3, especifique as seguintes configurações de cluster:

[ { "Classification": "core-site", "Properties": { "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

Para alterar o esquema do s3n, especifique as seguintes configurações de cluster:

[ { "Classification": "core-site", "Properties": { "fs.s3n.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem", "fs.AbstractFileSystem.s3n.impl": "org.apache.hadoop.fs.s3a.S3A" } } ]

Conceitos básicos da classe S3 Express One Zone

Siga estas etapas para começar a usar o S3 Express One Zone.

  1. Crie um endpoint da VPC. Adicione o endpoint com.amazonaws.us-west-2.s3express ao endpoint da VPC.

  2. Siga Getting started with Amazon EMR Serverless para criar uma aplicação com o rótulo de lançamento 7.2.0 ou superior do Amazon EMR.

  3. Configure a aplicação para usar o endpoint da VPC recém-criado, um grupo de sub-rede privada e um grupo de segurança.

  4. Adicione a permissão CreateSession ao perfil de execução do trabalho.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "s3express:CreateSession" ] } ] }
  5. Execute o trabalho. Observe que você deve usar o esquema S3A para acessar os buckets do S3 Express One Zone.

    aws emr-serverless start-job-run \ --application-id <application-id> \ --execution-role-arn <job-role-arn> \ --name <job-run-name> \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3a://<DOC-EXAMPLE-BUCKET>/scripts/wordcount.py", "entryPointArguments":["s3a://<DOC-EXAMPLE-BUCKET>/emr-serverless-spark/output"], "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=8g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=2 --conf spark.hadoop.fs.s3a.change.detection.mode=none --conf spark.hadoop.fs.s3a.endpoint.region={<AWS_REGION>} --conf spark.hadoop.fs.s3a.select.enabled=false --conf spark.sql.sources.fastS3PartitionDiscovery.enabled=false }'