843. 하둡(Hadoop) 랙 인식 (Rack Awareness) - 토폴로지 통신 데이터 복제 연계 전략
핵심 인사이트: 하둡은 가난한 기업의 구세주다. 100억짜리 거대 슈퍼컴퓨터를 사는 대신, 50만 원짜리 싸구려 컴퓨터 10,000대를 엮어서 빅데이터를 분석한다. 근데 싸구려 컴퓨터라 하루에도 수십 대씩 하드디스크가 뻗고 고장 난다. 그래서 하둡은 데이터 1개를 저장할 때 무조건 3개의 컴퓨터에 똑같이 복사본(백업)을 뿌려둔다. 그런데 멍청하게 복사본 3개를 '같은 선반(Rack)'에 꽂힌 컴퓨터들에만 다 몰아넣으면 어떡할까? 그 선반의 전원 코드가 쑥 빠지는 순간 복사본 3개가 한방에 다 날아가 데이터가 영원히 증발한다. 이를 막는 생존 본능, 그것이 하둡의 랙 인식 알고리즘이다.
Ⅰ. 하둡 HDFS (Hadoop Distributed File System)의 기본 원리
- 개념: 테라바이트급 거대한 빅데이터를 작게 조각(보통 128MB 블록 단위) 내어 수천 대의 싸구려 서버(DataNode)에 쫙 흩뿌려서 저장하는 구글 기반 분산 파일 시스템입니다.
- 3중 복제 (Replication Factor = 3)의 법칙: 싸구려 하드디스크가 터질 것을 대비해, 원본 블록 1개를 만들면 반드시 다른 서버에 복사본 2개를 더 만들어 총 3개의 쌍둥이 데이터 블록을 클러스터 어딘가에 숨겨둡니다.
Ⅱ. 랙 인식 (Rack Awareness)의 개념과 치명적 필요성 🌟
데이터센터의 컴퓨터들은 거대한 철제 선반인 **랙(Rack)**에 수십 대씩 꽂혀있고, 랙 맨 꼭대기에는 이들을 묶어주는 ToR (Top of Rack) 스위치가 달려있습니다.
- 만약 랙 인식 기능이 없다면 (재앙 시나리오):
- 하둡 중앙 통제 서버(NameNode)가 복사본 3개를 랜덤으로 뿌렸는데, 운 나쁘게 '1번 랙'에 꽂힌 서버 3대에 나란히 복사본이 들어갔습니다.
- 다음 날, 1번 랙 꼭대기에 달린 랙 스위치가 고장 나거나 1번 랙 전체 전원 플러그가 뽑혔습니다.
- 1번 랙이 통째로 죽으면서, 그 안에 있던 원본과 복사본 2개가 한날한시에 다 날아가 **데이터가 우주에서 완벽하게 영구 삭제(Data Loss)**되는 대재앙이 터집니다.
Ⅲ. 하둡의 천재적인 3중 복제 토폴로지 전략 (랙 인식 알고리즘) 🌟
이를 완벽히 방어하기 위해 하둡은 서버들의 물리적 위치(어떤 서버가 몇 번 랙에 꽂혀 있는지) 지도를 머릿속에 완벽히 외우고(Rack Awareness), 기가 막힌 규칙으로 3개의 복사본을 분산시킵니다.
- 첫 번째 블록 (원본): 글을 쓰고 있는 나 자신(클라이언트)이 속해 있는 랙의 아무 서버(DataNode)에 저장합니다. (네트워크 이동 거리를 0으로 만들어 저장 속도를 극대화합니다.)
- 두 번째 블록 (복사본 1): 가장 중요한 규칙입니다. 반드시 첫 번째 블록이 있는 랙과 '완전히 다른 랙(예: 2번 랙)'에 있는 서버에 저장합니다. (1번 랙 전원이 뽑히는 재앙을 100% 방어합니다.)
- 세 번째 블록 (복사본 2): **두 번째 블록이 들어간 랙(2번 랙) 안의 '또 다른 서버'**에 저장합니다.
- 왜 아예 3번 랙으로 안 보낼까요? 서로 다른 3개의 랙으로 다 찢어버리면, 데이터센터의 랙 스위치들을 거치는 트래픽(East-West 트래픽)이 너무 많이 발생해 네트워크 대역폭(비용)이 터져버립니다.
- 랙 스위치(전원)가 고장 나는 확률보다, 서버 1대의 하드디스크가 죽을 확률이 수백 배 높습니다. 따라서 "랙 2개에만 찢어 놔도 랙 전원 차단 방어는 성공적이고, 나머지 하나는 같은 랙에 둬서 네트워크 대역폭 낭비를 막자!"라는 최적의 가성비 타협점(Trade-off)을 찾은 것입니다.
Ⅳ. 도입 효과 (네트워크 거리 최적화)
- 읽기 속도 극대화: 사용자가 하둡에서 데이터를 꺼내 읽을 때, 하둡은 3개의 복사본 중 사용자와 네트워크 거리(홉 수)가 가장 가까운 랙에 있는 복사본을 골라 던져줍니다(대역폭 최소화). 이를 위해 랙 인식 지도가 필수적으로 쓰입니다.
📢 섹션 요약 비유: 하둡 랙 인식(Rack Awareness)은 기업의 '완벽한 계란 바구니 분산 투자 전략'입니다. 1번 바구니(1번 랙)에 금덩이(데이터) 3개를 다 넣어두면, 바구니 끈이 뚝 끊어지는 순간 금덩이 3개가 한 번에 다 박살 납니다(데이터 영구 삭제). 그렇다고 1번, 2번, 3번 바구니에 1개씩 다 찢어 놓으려니, 배달부(네트워크 대역폭)가 3곳을 뛰어다니느라 배달비(트래픽 비용)가 3배로 터집니다. 하둡의 천재적인 랙 인식 전략은 타협안입니다. 금덩이 1개는 1번 바구니에 넣고, 나머지 금덩이 2개는 2번 바구니에 몰아넣습니다. 1번 바구니가 터지면 2번 바구니의 금을 쓰면 되고, 배달부도 두 군데 바구니만 들르면 되므로 네트워크 트래픽 낭비도 기가 막히게 최소화하는 최고의 재난 방어 분산 물류 시스템입니다.