본문 바로가기

MLOps/Data

What's the Rack Awareness in HDFS

What's the Rack Awareness in HDFS

랙 인지란 무엇인가?


Q. Rack 이란?

A. DataNode의 물리적인 모음

 

Q. 하둡 클러스터 구성은?

A. 여러 개의 Rack으로 구성

 

Q. Rack의 구성?

A. 네트워크 Switch + N개의 DataNode으로 구성

  • 즉 서로 가까이 있고 동일한 네트워크 스위치에 연결된 DataNode 모음

Q. Rack 마다 DataNode 몇 개 들어가나?

A. 3~40개라는데 회사마다 다를것 같음

Q. Rack Awareness?

A. Rack 정보를 기반으로 가장 가까운 DataNode를 선택하는 것

 

Q. Rack 정보는 뭔데?

A. NameNode가 가지고 있는 DataNode의 Rack ID

 

Q. 가장 가까운 DataNode를 왜 선택해야 하는데?

A. 같은 Rack에 있는 DataNode끼리의 통신이 다른 Rack의 DataNode와 통신하는 것보다 효율 적이기 때문

 

Q. 통신이 효율적이다?

A. Rack 마다 Network Switch를 가지는데, 그럼 동일한 Network Swtich를 사용하는 Rack 안에서의 네트워크 대역폭이 다른 Network Switch를 사용하는 Rack보다 크다라는 말임 

 

Q. 뭘 통신하는 건데?

A. 내가 읽기/쓰기 할 데이터

 

Q. 가장 가까운 걸 왜 선택?  RackID도 가지고 있겠다,  그 Rack  선택해서 나랑 통신하자!  하면 되는 거 아니냐?

A. 선택지가 N개이기 때문임. 

무슨 말이 나면 고가용성을 위해 HDFS에 데이터가 저장될 때, 블록을 복제해서 물리적으로 다른 Rack에 배치함

기본 복제본이 3개인데, 각각 다른 Rack에 저장되어 있는 상황이다. 그중 클러스터랑 가장 가깝게 저장된 Rack의 DataNode를 선택해서 네트워크 통신을 효율적으로 한다는 말임

 

Q. 오.. 그럼 내결함성도 보장이 되겠네?

A. 맞다. 하나의 물리적인 Rack 이 죽어버려도 복제본이 존재하는 Rack을 NameNode가 선택하면 되기 때문임

 

Q. 그럼 이 복제본이 저장될 때 지켜지는 규칙이 있나?

A. 일단 복제본이 저장될 때, 지켜지는 정책 3가지가 있다.

  1. 하나의 DataNode에는 두 개 이상의 복제본이 있으면 안 된다.
  2. 동일한 랙에는 복제본을 두 개까지만 배치해야 한다.
  3. Rack의 수는 복제본의 수보다 같거나 작아야 한다.(낭비 방지)

Q. 블록이 Rack에 배치되는 과정은?

A. 예시를 들어 설명하겠음

 

1. 내 이력서 파일이 HDFS에 저장될 때, 아래처럼 3개의 Block으로 나누어졌다고 가정하겠다

  • HDFS Block은 기본적으로 128MB의 아주 큰 단위이다.

2. 첫 번째 복제 블록은 가장 가까운 DataNode에 저장이 된다

3. 그리고 두 번째 복제 블록은 동일한 Rack, 다른 DataNode에 저장이 된다.

4. 마지막 세 번째 복제 블록은 다른 Rack의 DataNode에 저장이 된다.