

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

# Ative o reconhecimento de acesso não uniforme à memória para contêineres do YARN
<a name="hadoop-numa"></a>

Com as versões 6.x e posteriores do Amazon EMR, você pode usar o acesso não uniforme à memória (NUMA) para multiprocessar seus dados em clusters. NUMA é um padrão de projeto de memória de computação em que o processador pode acessar sua própria memória local mais rapidamente do que a memória em outro processador ou compartilhada entre processadores. Os contêineres do YARN têm melhor performance com o NUMA porque podem se vincular a um nó NUMA específico que atende a todas as alocações de memória subsequentes. Isso reduz a quantidade de vezes que o cluster precisa acessar a memória remota. 

É possível ativar o suporte do NUMA para o contêiner YARN quando a máquina do nó de processamento for um nó multi-NUMA. Para confirmar se o nó de processamento é um nó NUMA único ou multi-NUMA, execute o comando a seguir.

```
lscpu | grep -i numa
NUMA node(s): 2
```

Em geral, instâncias superiores a 12x têm dois nós NUMA. Isso não se aplica a instâncias metal.

**Ativar o reconhecimento de NUMA para contêineres do YARN**

1. Use a seguinte configuração `yarn-site` no cluster do Amazon EMR 6.x.

   ```
    [
   	{
   		"classification":"yarn-site",
   			"properties":{
   				"yarn.nodemanager.linux-container-executor.nonsecure-mode.local-user":"yarn",
   				"yarn.nodemanager.linux-container-executor.group":"yarn",
   				"yarn.nodemanager.container-executor.class":"org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor",
   				"yarn.nodemanager.numa-awareness.enabled":"true",
   				"yarn.nodemanager.numa-awareness.numactl.cmd":"/usr/bin/numactl",
   				"yarn.nodemanager.numa-awareness.read-topology":"true"
   			},
   		"configurations":[]
   	}
    ]
   ```

1. Forneça a ação de bootstrap a seguir no cluster.

   ```
   #!/bin/bash
   
   sudo yum -y install numactl
   echo 1 | sudo tee /proc/sys/kernel/numa_balancing
   
   echo "banned.users=mapred,bin,hdfs" >> /etc/hadoop/conf/container-executor.cfg
   rm -rf /var/log/hadoop-yarn/
   sudo chown -R yarn:hadoop /var/log/hadoop-yarn/
   sudo chmod 755 -R /var/log/hadoop-yarn/
   
   sudo chmod 6050 /etc/hadoop/conf/container-executor.cfg
   
   mkdir /mnt/yarn && sudo chmod 755 -R /mnt/yarn && sudo chown -R yarn:hadoop /mnt/yarn
   mkdir /mnt1/yarn && sudo chmod 755 -R /mnt1/yarn && sudo chown -R yarn:hadoop /mnt1/yarn
   mkdir /mnt2/yarn && sudo chmod 755 -R /mnt2/yarn && sudo chown -R yarn:hadoop /mnt2/yarn
   ```

1. Cada contêiner deve ter reconhecimento de NUMA. É possível notificar a Máquina Virtual Java (JVM) em cada contêiner com um sinalizador NUMA. Por exemplo, para notificar a JVM para usar NUMA em um trabalho do MapReduce, adicione as propriedades a seguir em `mapred-site.xml`.

   ```
   <property>
   	<name>mapreduce.reduce.java.opts</name>
   	<value>-XX:+UseNUMA</value>
   </property>
   <property>
   	<name>mapreduce.map.java.opts</name>
   	<value>-XX:+UseNUMA</value>
   </property>
   ```

1. Para verificar se você ativou o NUMA, pesquise algum dos arquivos de log do NodeManager com o comando a seguir.

   ```
   grep "NUMA resources allocation is enabled," *
   ```

   Para verificar se NodeManager atribuiu recursos de NUMA nó a um contêiner, pesquise o NodeManager log com o comando a seguir, substituindo-o `<container_id>` pelo seu próprio ID de contêiner.

   ```
   grep "NUMA node" | grep <container_id>
   ```