1. HDFS 이란
Hadoop 분산형 파일 시스템으로 Hadoop 의 저장소를 담당한다. HDFS는 여러 머신에서 대용량 파일들을 분산처리 해서 저장을 하게 된다. 여러 서버에 분산 및 중복 저장을 하기 때문에 서버에 오류가 나더라도 복구 가능 (Fault tolerance)
2. HDFS 의 구조
- HDFS의 구조 : 하나의 Name Node와 여러개의 Data Node로 구성
- Name Node
HDFS의 모든 메타데이터(Block들이 저장되는 디렉토리의 이름, 파일명 등...)을 관리
클라이언트가 메타데이터를 이용하여 HDFS에 저장된 파일에 접근 가능
- Data Node
주기적으로 NameNode에서 블록 리포트(노드에 저장되어 있는 블록의 정보)를 전송 -> 이를 통해 NameNode는 DataNode가 정상 동작하는지 확인
파일 시스템의 클라이언트가 요구하는 읽기(read), 쓰기(write) 기능을 담당
3. HDFS 의 특징
- 파일을 Block 단위로 나눠서 저장 ( 128 MB ) -> 블록 크기가 같아 각 디스크에 몇개 존재하는지 파악 하기 쉬우며 disk 찾는 비용을 최소화 할 수 있음
- HDFS는 데이터를 저장하면, 다수 노드에 복제(기본 3개) 데이터 저장 하여 데이터 유실 방지
- 유용한 곳 : Very large files, Streaming data files(write-once, read many times)
- 취약한 곳 : Require low latency data access, lots of small files, Multiple writers
4. How to read data in HDFS

1. 어플리케이션이 클라이언트에게 파일 읽기를 요청
2.클라이언트는 NameNode에게 요청된 파일이 어떤 블록에 저장되어 있는지의 정보를 요청메타데이터(디렉토리명, 파일명 등)를 통해 파일이 저장된 블록 리스트를 반환
3. 메타데이터(디렉토리명, 파일명 등)를 통해 파일이 저장된 블록 리스트를 반환
4.클라이언트는 DataNode에 접근하여 블록 조회 요청
5.DataNode는 클라이언트에게 요청된 블록을 전송
6.클라이언트에서 어플리케이션에 데이터를 전달
5. How to write data in HDFS

- 어플리케이션이 HDFS 클라이언트에게 파일 저장을 요청 -> HDFS 클라이언트는 NameNode에게 파일 블록들이 저장될 경로 생성을 요청 -> NameNode는 해당 파일 경로가 존재하지 않으면 경로를 새로 생성 -> 다른 클라이언트가 해당 경로를 수정하지 못하도록 Lock을 검 (보안 & 무결성 유지) -> NameNode는 클라이언트에게 해당 파일 블록들을 저장한 DataNode의 목록을 반환
- 클라이언트는 1번째 DataNode에게 데이터를 전송
- 1번째 DataNode는 데이터를 로컬에 저장한 후 -> 데이터를 2번째 DataNode로 전송
- 2번째 DataNode는 데이터를 로컬에 저장한 후 -> 데이터를 3번째 DataNode로 전송
- 로컬에 데이터를 저장하였으면 자기에게 데이터를 넘겨준 DataNode (이전의 DataNode)에게 데이터의 로컬 저장이 완료 되었음을 응답 (ACK 신호로 알려준다.)
7. 1 번째 DataNode는 클라이언트에게 파일 저장이 완료 되었음을 응답
'Hadoop' 카테고리의 다른 글
| [Hadoop] What is Pig? (4) | 2024.09.30 |
|---|---|
| YARN vs Multi Node Kubernetes (3) | 2024.06.27 |
| [Hadoop] Hadoop vs Spark (3) | 2024.06.08 |
| [Hadoop] How to install Hadoop in GCP? (0) | 2023.07.17 |
| [Hadoop] What is map reduce?! (0) | 2023.03.14 |