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 YARN contêineres
Com EMR as versões 6.x e posteriores da Amazon, você pode usar o acesso não uniforme à memória (NUMA) para multiprocessamento de seus dados em clusters. NUMA é um padrão de design de memória de computador 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. YARNos contêineres têm melhor desempenho com NUMA porque eles podem se ligar a um específico NUMA nó 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.
Você pode ativar NUMA suporte para YARN contêiner quando a máquina de nós de trabalho é uma máquina com vários nósNUMA nodo. Para confirmar se um nó de trabalho é um únicoNUMA ou multi-NUMA node, execute o seguinte comando.
lscpu | grep -i numa
NUMA node(s): 2
Em geral, instâncias maiores que 12x têm duas NUMA nós. Isso não se aplica a instâncias metal.
Para ativar NUMA conscientização sobre YARN contêineres
-
Use a seguinte
yarn-site
configuração em seu cluster 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":[] } ]
-
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
-
Cada contêiner deve estar ciente de NUMA. Você pode notificar a máquina virtual Java (JVM) em cada contêiner com um NUMA bandeira. Por exemplo, para JVM notificar o uso NUMA em um MapReduce job, adicione as seguintes propriedades 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>
-
Para verificar se você ligou NUMA ativado, pesquise qualquer um dos NodeManager arquivos de log com o seguinte comando.
grep "NUMA resources allocation is enabled," *
Para verificar se NodeManager foi atribuído NUMA atribua recursos a um contêiner, pesquise o NodeManager log com o comando a seguir, substituindo-o por
seu próprio ID de contêiner.<container_id>
grep "NUMA node" | grep
<container_id>