핵심 인사이트 (3줄 요약)
- 구글의 논문(GFS)에서 출발한 HDFS는 빅데이터 시대의 문을 연 전설적인 파일 시스템이다.
- 비싼 고성능 서버 대신 '아주 싼 일반 컴퓨터(Commodity Hardware)' 수천 대를 엮어 쓰며, 기계 고장(Failure)을 일상으로 간주하여 데이터를 무조건 3개의 서버에 쪼개서 복사(Replication)해두는 깡패 같은 내결함성을 가진다.
- 최대 특징은 데이터를 중앙 CPU로 가져와서 처리하는 대신, '데이터가 있는 서버로 연산 코드(분석 프로그램)를 파견 보내서 그 자리에서 계산하게 만드는(Data Locality)' 기적의 발상 전환을 이뤘다는 점이다.
Ⅰ. 빅데이터의 등장과 비싼 장비의 몰락
1테라바이트(TB)짜리 텍스트 로그 파일(빅데이터)을 분석하려고 합니다. 전통적인 슈퍼컴퓨터 방식은 이 1TB를 메인 스토리지에서 거대한 CPU 메모리로 몽땅 끌고 올라와서 계산하는 것입니다. 하지만 데이터가 페타바이트(PB) 단위로 커지자, 데이터를 퍼나르는 네트워크 선이 터져버렸습니다(네트워크 병목). 게다가 이런 시스템을 굴리려면 수백억 원짜리 장비가 필요했습니다.
HDFS는 이 상식을 부쉈습니다. "비싼 장비 1대 사지 말고, 100만 원짜리 싸구려 컴퓨터 1만 대를 사서 거기다 데이터를 쪼개 넣자!"
📢 섹션 요약 비유: 거대한 통나무 1,000개를 베어내야 합니다. 슈퍼컴퓨터는 이 통나무들을 커다란 트럭으로 본사 공장에 다 실어와서 거대한 전기톱 1개로 자르는 방식입니다. 트럭 기름값이 더 나옵니다.
Ⅱ. HDFS의 아키텍처: 쪼개고, 3번 복사해라
싸구려 컴퓨터(DataNode)는 1년 안에 무조건 고장 납니다. 이를 대비해 HDFS는 무식하지만 가장 확실한 방법을 씁니다.
- 블록 쪼개기 (Block) 1TB짜리 파일을 업로드하면, HDFS는 이걸 128MB라는 거대한 벽돌(Block) 단위로 8,000개로 쩍쩍 쪼갭니다.
- 무식한 3중 복제 (3x Replication) 그 128MB짜리 블록 1개를 서로 다른 컴퓨터 3대에 똑같이 복사해서 심어놓습니다. 컴퓨터 1대가 하드디스크가 타서 뻗어도, 다른 2대에 블록이 남아있으니 시스템은 아무 일 없었다는 듯이 돌아가고 스스로 새 컴퓨터에 3번째 복사본을 다시 만들어 놓습니다.
- NameNode (마스터 장부) 이 8,000개의 쪼개진 블록들이 1만 대의 컴퓨터 중 어디에 박혀있는지를 기록해 두는 유일한 장부 서버입니다. (이 NameNode가 죽으면 전체 시스템이 죽으므로 이중화 필수)
HDFS 저장 모식도 (ASCII)
[ 1TB짜리 로그 파일 ] ─(128MB로 쪼갬)─▶ Block 1, Block 2, Block 3 ...
┌── NameNode (마스터) ──┐ "Block 1은 Node A, C, F에 넣고, Block 2는 Node B, C, D에 3번씩 복사해 둬!"
└──────────┬───────────────────────────────────────┘
▼
┌────── DataNodes (싸구려 일꾼 서버 1만 대) ───────┐
│ [ Node A : B1, B5 ] [ Node B : B2, B7 ] │
│ [ Node C : B1, B2 ] [ Node D : B2, B9 ] │ ◀ (어느 서버가 퍽 죽어도)
│ [ Node E : B3, B8 ] [ Node F : B1, B6 ] │ (데이터는 절대 날아가지 않음)
└──────────────────────────────────────────────────┘
📢 섹션 요약 비유: 중요한 문서를 찢어서 조각조각 낸 다음, 알바생 1만 명의 주머니에 똑같은 조각을 3명씩 나눠줍니다. 알바생 1명이 내일 갑자기 출근 안 하고 잠수 타도, 나머지 2명이 조각을 갖고 있으니 문서를 완벽히 복원할 수 있습니다.
Ⅲ. 혁명의 핵심: 데이터 지역성 (Data Locality)
HDFS의 진짜 무서움은 저장 그 자체가 아니라 **'분석(연산)'**할 때 나타납니다.
사용자가 "이 1TB 파일에서 'error'라는 글자가 몇 개인지 세어줘!"라고 명령(MapReduce)을 내리면?
- 과거: DataNode 1만 대가 블록 8,000개를 몽땅 마스터 서버로 전송합니다 (네트워크 폭발 $\rightarrow$ 마비).
- HDFS (데이터 지역성): 마스터 서버가 8,000개의 128MB 블록이 있는 해당 DataNode 컴퓨터들에게 "야, 네 하드에 있는 그 블록에서 'error' 글자 몇 갠지 네 CPU로 세어서, 숫자만 나한테 보내!"라고 프로그램 코드를 파견시킵니다.
- 1만 대의 컴퓨터가 일제히 자기 하드디스크만 뒤져서(네트워크 전송량 0) 계산한 뒤, "나 5개 찾음!", "나 2개 찾음!" 하고 숫자만 툭툭 던져줍니다.
📢 섹션 요약 비유: 통나무 1,000개를 본사로 가져오는(네트워크 병목) 바보짓을 포기했습니다. 대신 도끼를 든 나무꾼 1,000명(분석 코드)을 통나무가 있는 숲속으로 파견 보내서(데이터 지역성), 그 자리에서 다 패서 예쁜 장작(결과값)만 본사로 들고 오게 만든 것입니다.