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

Com o Amazon EMR 6.15.0 e superior, você pode usar o Amazon EMR com o Apache Spark em conjunto com a classe de armazenamento Amazon S3 Express One Zone para melhorar o desempenho em suas tarefas do Spark. As EMR versões 7.2.0 e superiores da Amazon também oferecem suporte ao HBase Flink e ao Hive, então você também pode se beneficiar do S3 Express One Zone se usar esses aplicativos. 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 IAM política deve permitir a s3express:CreateSession permissão para que o S3A o conector pode invocar o. CreateSession API Para obter um exemplo de política com essa permissão, consulte Conceitos básicos da classe Amazon S3 Express One Zone.

  • S3A conector — Para configurar seu cluster Spark para acessar dados de um bucket Amazon S3 que usa a classe de armazenamento S3 Express One Zone, você deve usar o conector Apache Hadoop S3A. Para usar o conector, certifique-se de que todos os S3 URIs usem o s3a esquema. 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 usa o Amazon S3 Express One Zone, você deve criar uma IAM política para anexar ao perfil de EC2 instância da Amazon 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. Depois de criar a política, anexe a política à função de perfil da instância que você usa para criar seu EMR cluster, conforme descrito na Criação e configuração de um cluster seção.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3express:region-code:account-id:bucket/amzn-s3-demo-bucket", "Action": [ "s3express:CreateSession" ] } ] }

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

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

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

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

  3. Selecione os aplicativos que você deseja incluir em seu cluster, como Spark ou Flink. HBase

  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 EMR seção Perfil de EC2 instância da Amazon, escolha usar uma função existente e use uma função com a política anexada que você criou na Criação de uma política de permissões seção 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 a AmazonEMR, conforme descrito na Criação e configuração de um cluster seção.

S3A configurações

Parameter 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 da EMR instância da Amazon deve ter a política que permita a S3A sistema de arquivos a ser chamado. 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 em que 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

Detecção de alterações por S3A funciona verificando MD5baseadoetags. A classe de armazenamento S3 Express One Zone não é compatível MD5 checksums.

Spark configurações

Parameter Valor padrão Valor sugerido Explicação

spark.sql.sources.fastS3PartitionDiscovery.enabled

true

false

A otimização interna usa um API parâmetro S3 que a classe de armazenamento S3 Express One Zone não suporta.

Considerações

Considere o seguinte ao integrar o Apache Spark na Amazon EMR com a classe de armazenamento S3 Express One Zone:

  • O conector S3A é necessário para usar o S3 Express One Zone com a 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 só é compatível com o Spark em um EMR cluster da Amazon executado na Amazon. EC2

  • A classe de armazenamento Amazon S3 Express One Zone suporta somente SSE-S3 criptografia. Para obter mais informações, consulte Criptografia do lado do servidor com chaves gerenciadas do Amazon S3 (-S3). SSE

  • 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 S3A FileOutputCommitter 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 EMR versões 6.15.0 e posteriores da Amazon. EMR EC2 Além disso, é compatível com as EMR versões 7.2.0 e superiores da Amazon na Amazon EMR on EKS e no Amazon EMR Serverless.