Ative o reconhecimento de acesso não uniforme à memória para contêineres do YARN - 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á.

Ative o reconhecimento de acesso não uniforme à memória para contêineres do YARN

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":[] } ]
  2. 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
  3. 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>
  4. 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 registro com o comando a seguir, substituindo-o <container_id> pelo seu próprio ID de contêiner.

    grep "NUMA node" | grep <container_id>