Amazon S3 no Outposts com Amazon EMR no Outposts local
O Amazon EMR é uma plataforma de cluster gerenciada que simplifica a execução de frameworks de big data, como Apache Hadoop e Apache Spark, na AWS a fim de processar e analisar grandes volumes de dados. Ao usar essas estruturas e projetos de código aberto relacionados, é possível processar dados para finalidades analíticas e workloads de inteligência de negócios. O Amazon EMR também ajuda a transformar e mover grandes volumes de dados para dentro e para fora de outros datastores e bancos de dados da AWS, além de oferecer suporte ao Amazon S3 no Outposts. Para obter mais informações sobre o Amazon EMR, consulte Amazon EMR no Outposts no Guia de gerenciamento do Amazon EMR.
Para o Amazon S3 no Outposts, o Amazon EMR começou a oferecer suporte ao conector S3A do Apache Hadoop na versão 7.0.0. As versões anteriores do Amazon EMR não oferecem suporte ao S3 no Outposts local e o EMR File System (EMRFS) não é compatível.
Aplicações compatíveis
O Amazon EMR com o Amazon S3 no Outposts é compatível com as seguintes aplicações:
-
Hadoop
-
Spark
-
Hue
-
Hive
-
Sqoop
-
Pig
-
Hudi
-
Flink
Para obter mais informações, consulte o Guia de versão do Amazon EMR.
Criar e configurar um bucket do Amazon S3 no Outposts
O Amazon EMR usa o AWS SDK for Java com o Amazon S3 no Outposts para armazenar dados de entrada e dados de saída. Seus arquivos de log do Amazon EMR são armazenados em um local regional do Amazon S3 selecionado por você e não são armazenados localmente no Outpost. Para obter mais informações, consulte Logs do Amazon EMR no Guia de gerenciamento do Amazon EMR.
Para estar em conformidade com os requisitos do Amazon S3 e de DNS, os buckets do S3 no Outposts têm restrições e limitações de nomenclatura. Para ter mais informações, consulte Criar um bucket do S3 on Outposts.
Com o Amazon EMR versão 7.0.0 e posterior, você pode usar o Amazon EMR com o S3 no Outposts e o sistema de arquivos S3A.
Pré-requisitos
Permissões do S3 no Outposts: ao criar um perfil de instância do Amazon EMR, esse perfil deve conter o namespace do AWS Identity and Access Management (IAM) para o S3 no Outposts. O S3 no Outposts tem seu próprio namespace: s3-outposts*
. Para conferir um exemplo de política que usa esse namespace, consulte Configurar o IAM com o S3 on Outposts.
Conector S3A: para configurar um cluster do EMR para acessar dados de um bucket do Amazon S3 no Outposts, você deve usar o conector S3A do Apache Hadoop. Para usar o conector, garanta que todos os URIs do S3 usem o esquema do s3a
. Caso contrário, você pode configurar a implementação do sistema de arquivos utilizado para o cluster do EMR de modo que os URIs do S3 funcionem com o conector S3A.
Para configurar a implementação do sistema de arquivos de modo que funcione com o conector S3A, use as propriedades de configuração fs.
e file_scheme
.implfs.AbstractFileSystem.
para o cluster do EMR, em que file_scheme
.impl
corresponde ao tipo de URIs do S3 que você tem. Para usar o exemplo a seguir, substitua os file_scheme
por suas próprias informações. Por exemplo, para alterar a implementação do sistema de arquivos para URIs do S3 que usam o esquema user input
placeholders
s3
, especifique as seguintes propriedades de configuração do 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 usar o S3A, defina a propriedade de configuração fs.
como file_scheme
.implorg.apache.hadoop.fs.s3a.S3AFileSystem
e defina a propriedade fs.AbstractFileSystem.
como file_scheme
.implorg.apache.hadoop.fs.s3a.S3A
.
Por exemplo, se você estiver acessando o caminho s3a://
, defina a propriedade bucket
/...fs.s3a.impl
como org.apache.hadoop.fs.s3a.S3AFileSystem
e defina a propriedade fs.AbstractFileSystem.s3a.impl
como org.apache.hadoop.fs.s3a.S3A
.
Conceitos básicos do Amazon EMR com o Amazon S3 no Outposts
Os tópicos a seguir explicam como começar a usar o Amazon EMR com o Amazon S3 no Outposts.
Tópicos
Criação de uma política de permissões
Antes de criar um cluster do EMR que use o Amazon S3 on Outposts, é necessário 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 o nome do recurso da Amazon (ARN) do ponto de acesso do S3 no Outposts. Para obter mais informações sobre como criar políticas do IAM para o S3 no Outposts, consulte Configurar o IAM com o S3 on Outposts.
O exemplo de política a seguir mostra como conceder as permissões necessárias. 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. Para usar esse exemplo, substitua os
por suas próprias informações.user input
placeholders
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:s3-outposts:
us-west-2
:111122223333
:outpost/op-01ac5d28a6a232904
/accesspoint/access-point-name
, "Action": [ "s3-outposts:*" ] } ] }
Criação e configuração de um cluster
Para criar um cluster que execute o Spark com o S3 no Outposts, conclua as etapas a seguir no console.
Como criar um cluster que execute o Spark com o S3 no Outposts
Abra o console do Amazon EMR em https://console.aws.amazon.com/elasticmapreduce/
. -
No painel de navegação à esquerda, escolha Clusters.
-
Selecione Criar cluster.
-
Em Versão do Amazon EMR, escolha emr-7.0.0 ou posterior.
-
Em Pacote de aplicativos, escolha Spark interativo. Selecione todas as outras aplicações compatíveis que você queira incluir no cluster.
-
Para habilitar o Amazon S3 no Outposts, insira suas configurações.
Exemplo de configuração
Para usar o exemplo de configuração a seguir, substitua
por suas próprias informações.user input placeholders
[ { "Classification": "core-site", "Properties": { "fs.s3a.bucket.
DOC-EXAMPLE-BUCKET
.accesspoint.arn": "arn:aws:s3-outposts:us-west-2
:111122223333
:outpost/op-01ac5d28a6a232904
/accesspoint/access-point-name
" "fs.s3a.committer.name": "magic", "fs.s3a.select.enabled": "false" } }, { "Classification": "hadoop-env", "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" } } ], "Properties": {} }, { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" } } ], "Properties": {} }, { "Classification": "spark-defaults", "Properties": { "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64", "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false" } } ] -
Na seção Redes, escolha uma nuvem privada virtual (VPC) e uma sub-rede que estejam no seu rack do AWS Outposts. Para obter mais informações sobre o Amazon EMR no Outposts, consulte Clusters do EMR no AWS Outposts no Guia de gerenciamento do Amazon EMR.
-
Na seção Perfil de instância do EC2 para o Amazon EMR, escolha o perfil do IAM que tem a política de permissões que você criou anteriormente anexada.
-
Defina as configurações restantes do cluster e escolha Criar cluster.
Visão geral das configurações
A tabela a seguir descreve as configurações do S3A e os valores a serem especificados para os respectivos parâmetros ao configurar um cluster que usa o S3 no Outposts com o Amazon EMR.
Parâmetro | Valor padrão | Valor necessário para o S3 no Outposts | Explicação |
---|---|---|---|
|
Se não for especificado, o S3A procurará o S3 no bucket de regiões com o nome de bucket Outposts. |
O ARN do ponto de acesso do bucket do S3 no Outposts. |
O Amazon S3 on Outposts oferece suporte a pontos de acesso somente de nuvem privada virtual (VPC) como o único meio de acessar os buckets do Outposts. |
|
file |
|
O confirmador Magic é o único confirmador compatível com o S3 no Outposts. |
|
|
|
O S3 Select não é compatível com o Outposts. |
|
|
|
O S3 no Outposts em S3A requer Java versão 11. |
A tabela a seguir descreve as configurações do Spark e os valores a serem especificados para os respectivos parâmetros ao configurar um cluster que usa o S3 no Outposts com o Amazon EMR.
Parâmetro | Valor padrão | Valor necessário para o S3 no Outposts | Explicação |
---|---|---|---|
|
|
|
O S3 no Outposts não oferece suporte à partição rápida. |
|
|
|
O S3 no Outposts em S3A requer Java versão 11. |
Considerações
Considere os seguintes pontos ao integrar o Amazon EMR a buckets do S3 no Outposts:
-
O Amazon S3 no Outposts é compatível com o Amazon EMR 7.0.0 e posterior.
-
O conector S3A é necessário para usar o S3 no Outposts com o Amazon EMR. Somente o S3A tem os recursos necessários para interagir com buckets do S3 no Outposts. Para obter informações sobre a configuração do conector S3A, consulte Prerequisites.
-
O Amazon S3 no Outposts só oferece suporte à criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3) com o Amazon EMR. Para ter mais informações, consulte Criptografia de dados no S3 on Outposts.
-
O Amazon S3 no Outposts não oferece suporte a gravações com o FileOutputCommitter do S3A. As gravações com o FileOutputCommitter do S3A em buckets do S3 no Outposts resultam no seguinte erro:
InvalidStorageClass: a classe de armazenamento especificada não é válida
. -
O Amazon S3 no Outposts não é compatível com o Amazon EMR Sem Servidor nem com o Amazon EMR no EKS.
-
Os logs do Amazon EMR são armazenados em um local regional do Amazon S3 selecionado por você e não são armazenados localmente no bucket do S3 no Outposts.