반응형
HDFS 데이터 블록 복제
HDFS는 기본적으로 블록을 3개씩 복제한다. 복제시 아래와 같은 순서로 블록을 저장할 데이터노드를 선정한다.
Node local > Rack local > off switch
- Node local : 작업하는 노드가 데이터노드의 일부라면, 여기에 블록을 저장한다.
- Rack local : 작업하는 노드와 동일한 랙에 있는 노드에 블록을 저장한다.
- off switch : 작업하는 노드와 다른 랙에 있는 노드에 블록을 저장한다.
이렇게 나누어 저장함으로써 장애가 생겨도 데이터 유실이 없도록 한다.
근데 하둡이 어떻게 노드의 위치를 알 수 있을까?
하둡의 Rack Awareness 설정을 통해 노드의 위치를 파악하는 것이다.
만약 namenode가 topology를 알아오지 못하면 무조건 /default-rack 으로 보낸다.
Rack Awareness 설정
/etc/hadoop/conf/core-site.xml
<property>
<name>net.topology.node.switch.mapping.impl</name>
<value>org.apache.hadoop.net.ScriptBasedMapping</value>
</property>
<property>
<name>net.topology.script.file.name</name>
<value>/etc/hadoop/conf/topology.sh</value>
</property>
/etc/hadoop/conf/topology.sh
#!/bin/sh
HADOOP_CONF=/etc/hadoop/conf
while [ $# -gt 0 ] ; do
nodeArg=$1
exec< ${HADOOP_CONF}/topology.data
result=""
while read line ; do
ar=( $line )
if [ "${ar[0]}" = "$nodeArg" ] ; then
result="${ar[1]}"
fi
done
shift
if [ -z "$result" ] ; then
echo -n "/default/rack "
else
echo -n "$result "
fi
done
/etc/hadoop/conf/topology.data
# Add hostnames to this file. Format <host ip> <rack name>
10.10.10.10 /dc1/rack0
10.10.10.11 /dc1/rack1
랙설정 이후 YARN resource manager와 Namenode 재시작이 필요하다.
참고
기존 노드의 topology.data 의 레벨과(ex. /dc1/rack0) 추가 노드의 topology.data (ex. /default-rack) 의 레벨이 다르면 노드 추가가 제대로 진행되지 않는다. 네임노드가 topology를 제대로 알지 못하므로 /default-rack 을 무조건 찾는다.
노드 추가 작업시, topology 설정을 마치고 진행하자 !
참고링크
https://d2.naver.com/helloworld/0475200
반응형
'BigData 기술 > Hadoop' 카테고리의 다른 글
[HDFS] Block Pool 개념 정리 (8) | 2021.01.04 |
---|---|
[HDFS] 하둡 Balancer 과정 (1060) | 2020.07.20 |
[HDFS] 네임노드 SafeMode 켜지는 경우 (4) | 2020.07.14 |
[YARN] 필수개념 (4) | 2019.10.30 |
[HDFS] 데이터노드 추가/삭제/디스크고장 조치 (4) | 2019.10.30 |
댓글