Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aktivieren Sie die Erkennung ungleichmäßiger Speicherzugriffe für YARN-Container
Mit Amazon EMR-Versionen 6.x und höher können Sie den ungleichmäßigen Speicherzugriff verwenden (NUMA) für die Mehrfachverarbeitung Ihrer Daten auf Clustern. NUMA ist ein Entwurfsmuster für Computerspeicher, bei dem der Prozessor schneller auf seinen eigenen lokalen Speicher zugreifen kann als auf den Speicher eines anderen Prozessors oder auf den Speicher, der von mehreren Prozessoren gemeinsam genutzt wird. YARN-Container bieten eine bessere Leistung bei NUMA weil sie sich an ein bestimmtes binden können NUMA Knoten, der alle nachfolgenden Speicherzuweisungen bedient. Dadurch wird die Häufigkeit reduziert, mit der Ihr Cluster auf den Remotespeicher zugreifen muss.
Sie können einschalten NUMA Unterstützung für YARN-Container, wenn es sich bei der Worker-Node-Maschine um eine Multi-Node-Maschine handeltNUMA Knoten. Um zu bestätigen, ob es sich bei einem Worker-Knoten um einen Einzelknoten handeltNUMA oder mehrereNUMA Node, führe den folgenden Befehl aus.
lscpu | grep -i numa
NUMA node(s): 2
Im Allgemeinen haben Instanzen, die größer als 12x sind, zwei NUMA Knoten. Dies gilt nicht für Metal-Instances..
Zum Einschalten NUMA Sensibilisierung für YARN-Container
-
Verwenden Sie die folgende
yarn-site
-Konfiguration in Ihrem Amazon-EMR-6.x-Cluster.[ { "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":[] } ]
-
Stellen Sie die folgende Bootstrap-Aktion in Ihrem Cluster bereit.
#!/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
-
Jeder Container muss sich dessen bewusst sein NUMA. Sie können die Java Virtual Machine (JVM) in jedem Container mit einem benachrichtigen NUMA Flagge. Zum Beispiel, um die JVM zur Verwendung zu benachrichtigen NUMA in einem MapReduce Job, fügen Sie die folgenden Eigenschaften hinzu
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>
-
Um zu überprüfen, ob Sie NUMA aktiviert, suchen Sie nach einem der NodeManager Logdateien mit dem folgenden Befehl.
grep "NUMA resources allocation is enabled," *
Um zu überprüfen, ob das zugewiesen NodeManager wurde NUMA Wenn Sie Ressourcen einem Container zuordnen, durchsuchen NodeManager Sie das Protokoll mit dem folgenden Befehl und ersetzen
Sie es durch Ihre eigene Container-ID.<container_id>
grep "NUMA node" | grep
<container_id>