기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
컨테이너에 대한 비균일 메모리 액세스 인식을 켜십시오. YARN
Amazon EMR 버전 6.x 이상에서는 비균일 메모리 액세스 (NUMA) 를 사용하여 클러스터의 데이터를 다중 처리할 수 있습니다. NUMA프로세서가 다른 프로세서에 있는 메모리보다 빠르게 자체 로컬 메모리에 액세스하거나 프로세서 간에 공유되는 메모리에 액세스할 수 있는 컴퓨터 메모리 설계 패턴입니다. YARN컨테이너는 이후의 모든 메모리 할당을 지원하는 특정 NUMA 노드에 바인딩할 수 NUMA 있으므로 성능이 더 좋습니다. 이를 통해 클러스터가 원격 메모리에 액세스해야 하는 시간이 줄어듭니다.
작업자 노드 시스템이 다중 NUMA 노드인 경우 YARN 컨테이너 NUMA 지원을 켤 수 있습니다. 워커 노드가 단일 NUMA 노드인지, 다중 NUMA 노드인지 확인하려면 다음 명령을 실행합니다.
lscpu | grep -i numa NUMA node(s): 2
일반적으로 12x보다 큰 인스턴스에는 두 개의 NUMA 노드가 있습니다. 금속 인스턴스에는 적용되지 않습니다.
YARN컨테이너에 NUMA 대한 인식을 켜려면
-
Amazon EMR 6.x 클러스터에서 다음
yarn-site
구성을 사용하십시오.[ { "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":[] } ]
-
클러스터에서 다음 부트스트랩 작업을 제공합니다.
#!/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
-
모든 컨테이너에서 NUMA를 인식해야 합니다. NUMA플래그를 사용하여 각 컨테이너의 Java 가상 머신 (JVM) 에 알릴 수 있습니다. 예를 들어 MapReduce 작업에 사용하도록 JVM 알리려면 NUMA 에 다음 속성을 추가하십시오
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>
-
NUMA가 켜져 있는지 확인하려면 다음 명령을 사용하여 NodeManager 로그 파일을 검색합니다.
grep "NUMA resources allocation is enabled," *
컨테이너에 NUMA 노드 리소스가 NodeManager 할당되었는지 확인하려면 자체 컨테이너 ID로 바꾸고 다음
명령으로 NodeManager 로그를 검색하십시오.<container_id>
grep "NUMA node" | grep
<container_id>