View a markdown version of this page

Upload de dados no Amazon S3 Express One Zone - 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á.

Upload de dados no Amazon S3 Express One Zone

Visão geral do

Com o Amazon EMR 6.15.0 e versões superiores, você pode usar o Amazon EMR com o Apache Spark e a classe de armazenamento Amazon S3 Express One Zone para melhorar a performance nos trabalhos do Spark. As versões 7.2.0 e superiores do Amazon EMR também oferecem suporte a HBase, Flink e Hive, portanto, você também pode se beneficiar do S3 Express One Zone se usar essas aplicações. O S3 Express One Zone é uma classe de armazenamento do S3 para aplicações que acessam dados frequentemente com centenas de milhares de solicitações por segundo. 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 Amazon S3 Express One Zone.

  • Conector S3A: para configurar o cluster do 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 Amazon S3 Express One Zone

Criação de uma política de permissões

Antes de criar um cluster que use o Amazon S3 Express One Zone, você deve criar uma política do IAM para anexar ao perfil de instância do Amazon EC2 para o cluster. A política deve ter permissões para acessar a classe de armazenamento S3 Express One Zone. O exemplo de política a seguir mostra como conceder a permissão necessária. Após criar a política, anexe-a à função do perfil de instância usada para criar seu cluster do EMR, conforme descrito na seção Criação e configuração de um cluster.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": [ "arn:aws:s3express:*:123456789012:bucket/example-s3-bucket" ], "Action": [ "s3express:CreateSession" ], "Sid": "AllowS3EXPRESSCreatesession" } ] }

Criação e configuração de um cluster

Em seguida, crie um cluster que execute Spark, HBase, Flink ou Hive com S3 Express One Zone. As seguinte etapas descrevem uma visão geral de alto nível para criar um cluster no Console de gerenciamento da AWS:

  1. Navegue até o console do Amazon EMR e selecione Clusters na barra lateral. Depois, selecione Criar cluster.

  2. Se você usa o Spark, selecione a versão emr-6.15.0 ou superior do Amazon EMR. Se você usa HBase, Flink ou Hive, selecione emr-7.2.0 ou superior.

  3. Selecione as aplicações que deseja incluir no cluster, como Spark, HBase ou Flink.

  4. Para habilitar o Amazon S3 Express One Zone, insira uma configuração semelhante ao exemplo a seguir na seção Configurações de software. As configurações e os valores recomendados estão descritos na seção Visão geral das configurações após esse procedimento.

    [ { "Classification": "core-site", "Properties": { "fs.s3a.aws.credentials.provider": "software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider", "fs.s3a.change.detection.mode": "none", "fs.s3a.endpoint.region": "aa-example-1", "fs.s3a.select.enabled": "false" } }, { "Classification": "spark-defaults", "Properties": { "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ]
  5. Na seção Perfil de instância do EC2 para o Amazon EMR, escolha usar um perfil existente e use um perfil com a política anexada que você criou na seção Criação de uma política de permissões acima.

  6. Defina o restante das configurações do cluster conforme apropriado para a sua aplicação e selecione Criar cluster.

Visão geral das configurações

As tabelas a seguir descrevem as configurações e os valores sugeridos que você deve especificar ao configurar um cluster que usa o S3 Express One Zone com o Amazon EMR, conforme descrito na seção Criação e configuração de um cluster.

Configurações do S3A

Parâmetro Valor padrão Valor sugerido Explicação

fs.s3a.aws.credentials.provider

Se não for especificado, usa AWSCredentialProviderList na seguinte ordem: TemporaryAWSCredentialsProvider, SimpleAWSCredentialsProvider, EnvironmentVariableCredentialsProvider, IAMInstanceCredentialsProvider.

software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider

A função do perfil de instância do Amazon EMR deve ter a política que permita ao sistema de arquivos do S3A chamar s3express:CreateSession. Outros provedores de credenciais também funcionam se tiverem as permissões do S3 Express One Zone.

fs.s3a.endpoint.region

nulo

O Região da AWS local onde você criou o bucket.

A lógica de resolução da região não funciona com a classe de armazenamento S3 Express One Zone.

fs.s3a.select.enabled

true

false

O valor select do Amazon S3 não é compatível com a classe de armazenamento S3 Express One Zone.

fs.s3a.change.detection.mode

server

nenhuma

A detecção de alterações pelo S3A funciona verificando etags baseadas em MD5. A classe de armazenamento S3 Express One Zone não é compatível com checksums de MD5.

Configurações do Spark

Parâmetro Valor padrão Valor sugerido Explicação

spark.sql.sources.fastS3PartitionDiscovery.enabled

true

false

A otimização interna usa um parâmetro de API do S3 que não é compatível com a classe de armazenamento S3 Express One Zone.

Configurações do Hive

Parâmetro Valor padrão Valor sugerido Explicação

hive.exec.fast.s3.partition.discovery.enabled

true

false

A otimização interna usa um parâmetro de API do S3 que não é compatível com a classe de armazenamento S3 Express One Zone.

Considerações

Considere os seguintes pontos ao integrar o Apache Spark no Amazon EMR à classe de armazenamento S3 Express One Zone:

  • O conector S3A é necessário para usar o S3 Express One Zone com o Amazon EMR. Somente o S3A tem os recursos e as classes de armazenamento necessários para interagir com o S3 Express One Zone. Para ver as etapas de configuração do conector, consulte Pré-requisitos.

  • A classe de armazenamento Amazon S3 Express One Zone oferece suporte para criptografia SSE-S3 e SSE-KMS. Para obter mais informações, consulte Server-side criptografia com o Amazon S3.

  • A classe de armazenamento Amazon S3 Express One Zone não oferece suporte a gravações com o FileOutputCommitter do S3A. As gravações com o FileOutputCommitter do S3A em buckets do S3 Express One Zone resultam em um erro: InvalidStorageClass: The storage class you specified is not valid.

  • O Amazon S3 Express One Zone é compatível com as versões 6.15.0 e superiores do Amazon EMR no EC2. Além disso, é compatível com as versões 7.2.0 e superiores do Amazon EMR no EKS e no Amazon EMR Sem Servidor.