Attiva il riconoscimento non uniforme degli accessi alla memoria per i container YARN - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Attiva il riconoscimento non uniforme degli accessi alla memoria per i container YARN

Con le versioni 6.x e successive di Amazon EMR, puoi utilizzare un accesso alla memoria non uniforme (NUMA) per l'elaborazione multipla dei dati su cluster. NUMA è un modello di progettazione della memoria del computer in cui il processore può accedere alla propria memoria locale più velocemente della memoria di un altro processore o condivisa tra processori. I contenitori YARN offrono prestazioni migliori con NUMA perché possono legarsi a uno specifico NUMA nodo che serve tutte le allocazioni di memoria successive. Ciò riduce il numero di volte in cui il cluster deve accedere alla memoria remota.

Puoi accendere NUMA supporto per il contenitore YARN quando la macchina del nodo di lavoro è multiplaNUMA nodo. Per confermare se un nodo di lavoro è un singoloNUMA o multiploNUMA node, esegui il seguente comando.

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

In generale, le istanze più grandi di 12x ne hanno due NUMA nodi. Questo non si applica ai istanze metal.

Per accendere NUMA sensibilizzazione per i contenitori YARN
  1. Utilizza la seguente configurazione yarn-site nel tuo 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":[] } ]
  2. Fornisci la seguente azione di bootstrap nel tuo 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. Ogni contenitore deve essere a conoscenza di NUMA. È possibile notificare la macchina virtuale Java (JVM) in ogni contenitore con un NUMA bandiera. Ad esempio, per notificare alla JVM da utilizzare NUMA in un MapReduce job, aggiungi le seguenti proprietà inmapred-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. Per verificare che tu abbia compiuto NUMA acceso, cerca uno dei NodeManager file di registro con il seguente comando.

    grep "NUMA resources allocation is enabled," *

    Per verificare che sia NodeManager stato assegnato NUMA inserisci le risorse del nodo in un contenitore, cerca nel NodeManager registro con il seguente comando, sostituendolo <container_id> con il tuo ID contenitore.

    grep "NUMA node" | grep <container_id>