

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á.

# Personalizar clusters e configurações de aplicações com versões anteriores da AMI do Amazon EMR
<a name="emr-3x-customizeappconfig"></a>

A versão 4.0.0 do Amazon EMR introduziu um método simplificado de configuração de aplicações usando classificações de configuração. Para obter mais informações, consulte [Configurar aplicações](emr-configure-apps.md). Ao usar uma versão da AMI, você configura aplicativos usando ações de bootstrap juntamente com os argumentos que transmite. Por exemplo, as ações de bootstrap `configure-hadoop` e `configure-daemons` definem propriedades do ambiente específicas do Hadoop e do YARN, como `--namenode-heap-size`. Em versões mais recentes, elas são configuradas usando as classificações de configuração `hadoop-env` e `yarn-env`. Para ações de bootstrap que realizam configurações comuns, consulte o [emr-bootstrap-actions repositório no Github.](https://github.com/awslabs/emr-bootstrap-actions)

As tabelas a seguir mapeiam ações de bootstrap para classificações de configuração em versões mais recentes do Amazon EMR.


**Hadoop**  

| Nome do arquivo de aplicativo afetado | Ação de bootstrap da versão da AMI | Classificação de configuração | 
| --- | --- | --- | 
| core-site.xml  | configure-hadoop -c  | core-site | 
| log4j.properties  | configure-hadoop -l  | hadoop-log4j | 
| hdfs-site.xml  | configure-hadoop -s  | hdfs-site  | 
| n/a | n/a | hdfs-encryption-zones | 
| mapred-site.xml  | configure-hadoop -m  | mapred-site | 
| yarn-site.xml  | configure-hadoop -y  | yarn-site | 
| httpfs-site.xml  | configure-hadoop -t  | httpfs-site | 
| capacity-scheduler.xml  | configure-hadoop -z  | capacity-scheduler | 
| yarn-env.sh  | configure-daemons --resourcemanager-opts | yarn-env | 


**Hive**  

| Nome do arquivo de aplicativo afetado | Ação de bootstrap da versão da AMI | Classificação de configuração | 
| --- | --- | --- | 
| hive-env.sh | n/a | hive-env | 
| hive-site.xml | hive-script --install-hive-site \$1\$1MY\$1HIVE\$1SITE\$1FILE\$1 | hive-site | 
| hive-exec-log4j.properties | n/a | hive-exec-log4j | 
| hive-log4j.properties | n/a | hive-log4j | 


**EMRFS**  

| Nome do arquivo de aplicativo afetado | Ação de bootstrap da versão da AMI | Classificação de configuração | 
| --- | --- | --- | 
| emrfs-site.xml | configure-hadoop -e | emrfs-site | 
| n/a | s3get -s s3://custom-provider.jar -d /usr/share/aws/emr/auxlib/ | emrfs-site (com nova configuração fs.s3.cse.encryptionMaterialsProvider.uri) | 

Para obter uma lista de todas as classificações, consulte [Configurar aplicações](emr-configure-apps.md).

## Variáveis de ambientes de aplicações
<a name="emr-3x-appenv"></a>

Quando você usa uma versão da AMI, um script `hadoop-user-env.sh` é usado juntamente com a ação de bootstrap `configure-daemons` para configurar o ambiente do Hadoop. O script inclui as seguintes ações:

```
#!/bin/bash 
export HADOOP_USER_CLASSPATH_FIRST=true; 
echo "HADOOP_CLASSPATH=/path/to/my.jar" >> /home/hadoop/conf/hadoop-user-env.sh
```

Na versão 4.x do Amazon EMR, você faz o mesmo usando a classificação de configuração `hadoop-env`, conforme mostrado no exemplo a seguir:

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

         },
         "Configurations":[ 
            { 
               "Classification":"export",
               "Properties":{ 
                  "HADOOP_USER_CLASSPATH_FIRST":"true",
                  "HADOOP_CLASSPATH":"/path/to/my.jar"
               }
            }
         ]
      }
   ]
```

Como outro exemplo, usar `configure-daemons` e transmitir `--namenode-heap-size=2048` e `--namenode-opts=-XX:GCTimeRatio=19` é equivalente às seguintes classificações de configuração.

```
[ 
      { 
         "Classification":"hadoop-env",
         "Properties":{ 

         },
         "Configurations":[ 
            { 
               "Classification":"export",
               "Properties":{ 
                  "HADOOP_DATANODE_HEAPSIZE":  "2048",
           	"HADOOP_NAMENODE_OPTS":  "-XX:GCTimeRatio=19"
               }
            }
         ]
      }
   ]
```

As outras variáveis do ambiente de aplicativos não são mais definidas em `/home/hadoop/.bashrc`. Em vez disso, elas são definidas nos arquivos `/etc/default` por componente ou aplicativo, como por exemplo `/etc/default/hadoop`. Os scripts de wrapper `/usr/bin/` instalados pelo aplicativo também RPMs podem definir variáveis de ambiente adicionais antes de envolver o script bin real.

## Portas de serviço
<a name="emr-3x-serviceports"></a>

Ao usar uma versão da AMI, alguns serviços usam portas personalizadas.


**Alterações nas configurações das portas**  

| Configuração | AMI versão 3.x | Padrão de código aberto | 
| --- | --- | --- | 
| fs.default.name | hdfs://emrDeterminedIP:9000 | padrão (hdfs: emrDeterminedIP //:8020)  | 
| dfs.datanode.address | 0.0.0.0:9200 | default (0.0.0.0:50010)  | 
| dfs.datanode.http.address | 0.0.0.0:9102 | default (0.0.0.0:50075)  | 
| dfs.datanode.https.address | 0.0.0.0:9402 | default (0.0.0.0:50475) | 
| dfs.datanode.ipc.address | 0.0.0.0:9201 | default (0.0.0.0:50020) | 
| dfs.http.address | 0.0.0.0:9101 | default (0.0.0.0:50070)  | 
| dfs.https.address | 0.0.0.0:9202 | default (0.0.0.0:50470)  | 
| dfs.secondary.http.address | 0.0.0.0:9104 | default (0.0.0.0:50090) | 
| yarn.nodemanager.address | 0.0.0.0:9103 | default (\$1\$1yarn.nodemanager.hostname\$1:0)  | 
| yarn.nodemanager.localizer.address  | 0.0.0.0:9033 | default (\$1\$1yarn.nodemanager.hostname\$1:8040) | 
| yarn.nodemanager.webapp.address | 0.0.0.0:9035 | default (\$1\$1yarn.nodemanager.hostname\$1:8042) | 
| yarn.resourcemanager.address | emrDeterminedIP: 9022 | default (\$1\$1yarn.resourcemanager.hostname\$1:8032) | 
| yarn.resourcemanager.admin.address | emrDeterminedIP: 9025 | default (\$1\$1yarn.resourcemanager.hostname\$1:8033) | 
| yarn.resourcemanager.resource-tracker.address | emrDeterminedIP: 9023 | default (\$1\$1yarn.resourcemanager.hostname\$1:8031) | 
| yarn.resourcemanager.scheduler.address | emrDeterminedIP: 9024 | default (\$1\$1yarn.resourcemanager.hostname\$1:8030) | 
| yarn.resourcemanager.webapp.address | 0.0.0.0:9026  | default (\$1\$1yarn.resourcemanager.hostname\$1:8088) | 
| yarn.web-proxy.address | emrDeterminedIP: 9046  | default (no-value)  | 
| yarn.resourcemanager.hostname | 0.0.0.0 (default)  | emrDeterminedIP | 

**nota**  
*emrDeterminedIP*É um endereço IP gerado pelo Amazon EMR.

## Usuários
<a name="emr-3x-users"></a>

Ao usar uma versão da AMI, o usuário `hadoop` executa todos os processos e é proprietário de todos os arquivos. Nas versões 4.0.0 e posteriores do Amazon EMR, existem usuários no nível da aplicação e dos componentes.

## Sequência de instalação, artefatos instalados e locais dos arquivos de log
<a name="emr-3x-directories"></a>

Ao usar uma versão da AMI, os artefatos de aplicativos e seus diretórios de configuração são instalados no diretório `/home/hadoop/application`. Por exemplo, se você tivesse o Hive instalado, o diretório seria `/home/hadoop/hive`. Nas versões 4.0.0 e posteriores do Amazon EMR, os artefatos de aplicações são instalados no diretório `/usr/lib/application`. Ao usar uma versão da AMI, os arquivos de log são encontrados em vários locais. A tabela a seguir lista os locais.


**Alterações nos locais de log no Amazon S3**  

| Daemon ou aplicação | Local do diretório | 
| --- | --- | 
| instance-state | nodo/ /instance-state/ instance-id | 
| hadoop-hdfs-namenode | instance-iddaemons///.log hadoop-hadoop-namenode | 
| hadoop-hdfs-datanode | instance-iddaemons///.log hadoop-hadoop-datanode | 
| fio de hadoop () ResourceManager | instance-iddaemons//yarn-hadoop-resourcemanager | 
| hadoop-yarn (Proxy Server) | instance-iddaemons//yarn-hadoop-proxyserver | 
| mapred-historyserver | instance-iddaemons// | 
| httpfs | instance-iddaemons/ /httpfs.log | 
| hive-server | node/ /hive-server/hive-server.log instance-id | 
| hive-metastore | node/ /apps/hive.log instance-id | 
| CLI do Hive | node/ /apps/hive.log instance-id | 
| Logs de usuário e logs de contêiner dos aplicativos YARN | task-attempts/ | 
| Mahout | N/D | 
| Pig | N/D | 
| spark-historyserver | N/D | 
| Arquivos de histórico de trabalhos do mapreduce | jobs/ | 

## Executor de comandos
<a name="emr-differences-commandrunner"></a>

Quando uma versão da AMI é usada, muitos scripts ou programas como, por exemplo `/home/hadoop/contrib/streaming/hadoop-streaming.jar`, não são colocados no ambiente do caminho de login do shell. Portanto, você precisa especificar o caminho completo ao usar um arquivo jar, como command-runner.jar ou script-runner.jar, para executar os scripts. O `command-runner.jar` está localizado na AMI; portanto, não há necessidade de conhecer um URI completo, como era o caso com `script-runner.jar`. 

## Fator de replicação
<a name="emr-3x-replication"></a>

O fator de replicação permite que você configure quando uma JVM do Hadoop deverá ser iniciada. Você pode iniciar uma nova JVM do Hadoop para cada tarefa, o que fornece melhor isolamento de tarefas, ou você pode compartilhar JVMs entre tarefas, fornecendo menor sobrecarga da estrutura. Se você estiver processando vários arquivos pequenos, faz sentido reutilizar o JVM muitas vezes para amortizar o custo de startup. No entanto, se cada tarefa demora ou processa uma grande quantidade de dados, você pode optar por não reutilizar o JVM para garantir que toda a memória esteja liberada para as tarefas subsequentes. Ao usar uma versão da AMI, você pode personalizar o fator de replicação usando a ação de bootstrap `configure-hadoop` para definir a propriedade `mapred.job.reuse.jvm.num.tasks`. 

O exemplo a seguir demonstra como configurar o fator de reutilização da JVM para a reutilização infinita da JVM.

**nota**  
Os caracteres de continuação de linha do Linux (\$1) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.11.0 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=m3.xlarge \
InstanceGroupType=CORE,InstanceCount=2,InstanceType=m3.xlarge \
--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\
Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]
```