

# Amazon S3 no Outposts com Amazon EMR no Outposts local
<a name="s3-outposts-emr"></a>

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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-outposts.html) 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](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html).

## Criar e configurar um bucket do Amazon S3 no Outposts
<a name="create-outposts-bucket"></a>

O Amazon EMR usa o AWS SDK para 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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-manage-view-web-log-files.html) 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 obter mais informações, consulte [Criar um bucket do S3 on Outposts](S3OutpostsCreateBucket.md).

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](S3OutpostsIAM.md).

**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.file_scheme.impl` e `fs.AbstractFileSystem.file_scheme.impl` para o cluster do EMR, em que `file_scheme` corresponde ao tipo de URIs do S3 que você tem. Para usar o exemplo a seguir, substitua os *`user input placeholders`* 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 `s3`, especifique as seguintes propriedades de configuração do cluster:

```
1. [
2.   {
3. "Classification": "core-site",
4.     "Properties": {
5.     "fs.s3.impl": "org.apache.hadoop.fs.s3a.S3AFileSystem",
6.     "fs.AbstractFileSystem.s3.impl": "org.apache.hadoop.fs.s3a.S3A"
7.     }
8.   }
9. ]
```

Para usar o S3A, defina a propriedade de configuração `fs.file_scheme.impl` como `org.apache.hadoop.fs.s3a.S3AFileSystem` e defina a propriedade `fs.AbstractFileSystem.file_scheme.impl` como `org.apache.hadoop.fs.s3a.S3A`.

Por exemplo, se você estiver acessando o caminho `s3a://bucket/...`, defina a propriedade `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
<a name="getting-started-outposts"></a>

Os tópicos a seguir explicam como começar a usar o Amazon EMR com o Amazon S3 no Outposts.

**Topics**
+ [

### Criação de uma política de permissões
](#create-permission-policy)
+ [

### Criação e configuração de um cluster
](#configure-cluster)
+ [

### Visão geral das configurações
](#configurations-overview)
+ [

### Considerações
](#considerations)

### Criação de uma política de permissões
<a name="create-permission-policy"></a>

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](S3OutpostsIAM.md). 

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](#configure-cluster). Para usar esse exemplo, substitua os *`user input placeholders`* por suas próprias informações.

```
 1. {
 2. "Version":"2012-10-17",		 	 	  
 3.   "Statement": [
 4.         {
 5.   "Effect": "Allow",
 6.             "Resource": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name,
 7.             "Action": [
 8.                 "s3-outposts:*"
 9.             ]
10.         }
11.     ]
12.     
13.  }
```

### Criação e configuração de um cluster
<a name="configure-cluster"></a>

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**

1. Abra o console do Amazon EMR em [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/).

1. No painel de navegação à esquerda, escolha **Clusters**.

1. Selecione **Criar cluster**.

   

1. Em **Versão do Amazon EMR**, escolha **emr-7.0.0** ou posterior.

1. Em Pacote de aplicativos, escolha **Spark interativo**. Selecione todas as outras aplicações compatíveis que você queira incluir no cluster.

1. 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 `user input placeholders` por suas próprias informações.

   ```
    1. [
    2.  {
    3.    "Classification": "core-site",
    4.    "Properties": {
    5.      "fs.s3a.bucket.DOC-EXAMPLE-BUCKET.accesspoint.arn": "arn:aws:s3-outposts:us-west-2:111122223333:outpost/op-01ac5d28a6a232904/accesspoint/access-point-name"
    6.      "fs.s3a.committer.name": "magic", 
    7.      "fs.s3a.select.enabled": "false"
    8.     }
    9.   },
   10.   {
   11.     "Classification": "hadoop-env",
   12.     "Configurations": [
   13.       {
   14.         "Classification": "export",
   15.         "Properties": {
   16.           "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64" 
   17.           }
   18.        }
   19.      ],
   20.      "Properties": {}
   21.    },
   22.    {
   23.      "Classification": "spark-env",
   24.      "Configurations": [
   25.        {
   26.          "Classification": "export",
   27.          "Properties": {
   28.            "JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64"
   29.          }
   30.        }
   31.       ],
   32.       "Properties": {}
   33.      },
   34.      {
   35.       "Classification": "spark-defaults",
   36.       "Properties": {
   37.         "spark.executorEnv.JAVA_HOME": "/usr/lib/jvm/java-11-amazon-corretto.x86_64",
   38.         "spark.sql.sources.fastS3PartitionDiscovery.enabled": "false"
   39.       }
   40.      }
   41.   ]
   ```

1. 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](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-outposts.html) no *Guia de gerenciamento do Amazon EMR*.

1. 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](#create-permission-policy) anexada.

1. Defina as configurações restantes do cluster e escolha **Criar cluster**.

### Visão geral das configurações
<a name="configurations-overview"></a>

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 | 
| --- | --- | --- | --- | 
|  `fs.s3a.aws.credentials.provider`  |  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.  | 
|  `fs.s3a.committer.name`  | file |  `magic`  |  O confirmador Magic é o único confirmador compatível com o S3 no Outposts.   | 
|  `fs.s3a.select.enabled`  |  `TRUE`  |  `FALSE`  | O S3 Select não é compatível com o Outposts. | 
|  `JAVA_HOME`  |  `/usr/lib/jvm/java-8`  |  `/usr/lib/jvm/java-11-amazon-corretto.x86_64`  |  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 | 
| --- | --- | --- | --- | 
|  `spark.sql.sources.fastS3PartitionDiscovery.enabled`  |  `TRUE`  |  `FALSE`  |  O S3 no Outposts não oferece suporte à partição rápida.  | 
|  `spark.executorEnv.JAVA_HOME`  |  `/usr/lib/jvm/java-8`  |  `/usr/lib/jvm/java-11-amazon-corretto.x86_64`  |  O S3 no Outposts em S3A requer Java versão 11.  | 

### Considerações
<a name="considerations"></a>

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](#s3a-outposts-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 obter mais informações, consulte [Criptografia de dados no S3 on Outposts](s3-outposts-data-encryption.md).
+ 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.