GiYeong
HDFS(Hadoop Distributed File System) 본문
HDFS
- Hadoop의 저장소 (하둡의 계산 -> MapReduce)
- Hadoop Network에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템이다.
- 여러 머신에 대용량의 파일들을 나눠서 저장(분산처리)한다. 이를 통해 한 서버에 오류가 발생하더라도 다른 서버에서 복구할 수 있다. (데이터 안정성)
분산형 파일 시스템 | 분산처리 시스템 |
여러 대의 머신이 데이터를 처리 | |
일부 머신에 오류가 발생하더라도, 다른 머신에서 데이터를 접근할 수 있다. | 일부 머신에 오류가 발생할 경우, 시스템이 동작하지 않음 |
인터페이스가 복잡하여 프로그래밍이 힘듦 |
- Hadoop Application은 HDFS에 파일을 저장하거나, 저장된 파일을 읽기 위해 HDFS Client를 이용하며, Client는 API의 형태로 제공된다.
- Client는 NameNode에 접속해서 원하는 파일이 저장된 Block의 위치를 확인
- Client가 NameNode를 통해 원하는 파일이 저장된 Block의 위치를 확인한 후, DataNode와 직접 통신하여 파일을 읽거나 쓴다.
특징
- 파일을 Block 단위로 나눠서 저장
- Block을 다중 노드에 분산해서 저장
- 하나의 Block을 여러 노드에 복제
- 다수의 노드에 복제 데이터도 저장함으로서 데이터의 유실을 방지
- 한번 저장한 데이터는 수정되지 않음(Read Only,, 데이터의 무결성 유지)
구조
- Master / Slave 구조
- HDFS의 Master : NameNode (1대)
- HDFS의 Slave : DataNode (여러 대)
- 저장하는 파일은 특정 사이즈의 Block으로 나눠 분산된 서버에 저장됨
- 하나의 Block은 3개로 복제되며, 각각 다른 HDFS의 Node에 분산 저장됨
HDFS 클러스터
- 하나의 NameNode & FileSystem을 관리
- 클라이언트의 접근을 통제하는 Master Server로 구성
- 클러스터의 각 노드들에는 DataNode가 하나씩 존재, 해당 DataNode는 실행될 때 마다 Node에 추가되는 스토리지를 관리
- HDFS는 네임스페이스를 공개해서 유저 데이터가 파일에 저장되는 것을 허용Na
NameNode
- HDFS의 모든 메타데이터(Block들이 저장되는 디렉토리의 이름, 파일명 등)을 관리
- 클라이언트는 메타데이터를 이용하여 HDFS에 저장된 파일에 접근 가능
- 파일과 디렉토리의 open, close, rename 등 여러 기능을 수행
- DataNode와 Block들의 매핑을 결정
Secondary NameNode (체크포인팅 서버)
- 주기적으로 NameNode의 파일 시스템 이미지 파일을 갱신 (이를 체크포인트라고 함)
- NameNode의 Block 정보를 합칠 때 사용하기 위한 Node이지, NameNode의 백업 Node는 아니다.
DataNode
- 파일과 디렉토리의 read, write 기능을 수행
- 클러스터가 처음 시작될 때, 각 DataNode는 자신의 Block 정보를 NameNode에게 알려준다.
- 주기적으로 NameNode에게 Heartbeat(디스크 가용 공간 정보, 데이터 이동 및 적재량 정보 등)와 Block 목록이 저장된 Block report를 보낸다.
- 자신의 디스크에 변경사항에 발생할 때마다, NameNode에게 변경사항을 알려준다.
JobTracker
- TaskTracker의 리소스 사용가능 여부, 얼마나 사용되고 있는지 등을 관리하는 리소스 관리 기능 수행
- 일반적으로 Master Node(NameNode가 설치된 Node)에서 실행한다.
TaskTracker
- Task를 실제로 처리
- DataNode에는 하나의 TaskTracker만 존재
- 동시에 여러 개의 Task를 수행 가능
- 장애가 발생한 TaskTracker의 작업은 다른 TaskTracker에게 재할당
Comments