하둡 분산 파일 시스템
IT위키
더 많은 작업
(HDFS에서 넘어옴)
- Hadoop Distributed File System
- 클라이언트로부터 특정 파일에 대한 요구 전달
- 네임노드에서 해당 파일을 보관하고 있는 블록 정보 탐색
- 실제 데이터가 보관되어 있는 데이터노드 위치 파악
- 데이터노드에서 파일 처리
- 결함 허용, 성능 향상을 위해 데이터와 노드 다중 구성
- 클러스터에 2개의 네임노드를 구축하여 고가용성 보장
- HA 모드: Active - Standby로 운영(실시간 동기화)
- Non-HA 모드: Secondary Name Node 이용(동기화는 되지 않음)
- Secondary NameNode 는 이름과 달리 네임노드가 죽었을 때 곧바로 넘겨받는 대기 노드가 아니다. 네임노드의 파일 시스템 이미지(fsimage)와 변경 로그(edits)를 주기적으로 합쳐 체크포인트를 만들고 변경 로그가 너무 커지지 않게 하는 보조 노드이다. 기본 체크포인트 주기는 1시간(dfs.namenode.checkpoint.period)이다.[1] 네임노드가 고장 나면 이 체크포인트로 메타데이터를 되살릴 수 있으므로 넓은 뜻의 백업 역할을 하지만, 자동 장애 조치는 HA 모드의 Standby 네임노드가 맡는다
- 데이터를 기본 3 Copy Replication 형성
- 신뢰성 보장: 하나의 노드, 데이터가 손실되어도 무중단 동작 보장
- 성능 향상: 데이터의 지역성을 향상시켜 빠른 처리 도모
HDFS 는 한 번 쓰고 여러 번 읽는(write-once-read-many) 대용량 파일을 위해 설계되었고, 읽기와 쓰기가 비대칭이다.[2]
- 읽기 - 클라이언트는 네임노드에서 블록 위치만 받고, 데이터는 복제본 가운데 가장 가까운 데이터노드(같은 노드, 같은 랙, 같은 데이터센터 순)에서 직접 읽는다. 복제본 하나만 읽으면 되고 여러 클라이언트가 서로 다른 복제본을 나눠 읽을 수 있어 빠르다.
- 쓰기 - 복제 계수가 3 이면 네임노드가 정한 데이터노드 세 곳이 파이프라인을 이룬다. 클라이언트가 첫 데이터노드에 보내면 그 노드가 저장하면서 두 번째로, 두 번째가 세 번째로 넘긴다. 블록은 모든 복제본에 저장되었다는 확인이 거슬러 돌아와야 완료되므로 읽기보다 느리다.
- 데이터는 네임노드를 거치지 않는다. 네임노드는 메타데이터(파일 이름, 블록 위치)만 다루므로 "네임노드에서 읽고 쓴다"는 말은 틀리다.
- 쓰기가 끝난 파일을 읽는 것이 기본 사용 형태지만, 그 때문에 읽기가 느려지는 것은 아니다.
- 구글의 분산 파일 시스템 GFS(Google File System) 논문을 바탕으로 설계를 본떠 자바로 새로 구현한 오픈소스다 → 구글 파일 시스템
- 블록 복제 수(Replication factor)는 기본값이 3 이며 사용자가 설정으로 바꿀 수 있다(dfs.replication).
- 네임노드는 파일 이름, 블록 위치 같은 메타데이터를 관리하고, 실제 블록은 데이터노드에 저장된다.
- HDFS 구성 요소의 이름은 NameNode, DataNode, Secondary NameNode 이다. 마스터·슬레이브는 네임노드와 데이터노드의 역할을 가리키는 일반 용어이고, 'Secondary master node' 같은 구성 요소는 없다[2]
- ↑ 「HDFS Users Guide」, Apache Hadoop, https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html, 확인일: 2026-11-04.
- ↑ 2.0 2.1 「HDFS Architecture」, Apache Hadoop, https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html, 확인일: 2026-11-04.