Immersion In Data

Hadoop

하둡 분산형 파일 시스템(Hadoop Distributed File System, HDFS)

sungjunminn 2022. 9. 21. 13:00

하둡 분산형 파일 시스템(Hadoop Distributed File System, HDFS)

하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템

하둡 분산 파일 시스템은 하둡 프레임워크를 위해 자바 언어로 작성된 분산 확장 파일 시스템이다. HDFS는 여러 기계에 대용량 파일을 나눠서 저장한다. 데이터들을 여러 서버에 중복해서 저장하므로써 데이터 안정성을 얻는다. 

 

특징

1. HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실을 방지

2. HDFS에 파일을 저장하거나, 저장된 파일을 조회하려면 스트리밍 방식으로 데이터에 접근

3. 한번 저장한 데이터는 수정할 수 없고, 읽기만 가능해서 데이터 무결성을 유지

4. 데이터 수정은 불가능하지만 파일 이동, 삭제, 복사할 수 있는 인터페이스 제공

 

아키텍처

 

 

HDFS는 마스터/슬레이브(master/slave) 구조를 가진다. HDFS 클러스터는 하나의 네임 노드와 파일 시스템을 관리하고, 클라이언트의 접근을 통제하는 마스터 서버로 구성된다. 클러스터의 각 노드에는 데이터 노드가 하나씩 존재하고, 이 데이터 노드는 실행될 때마다 노드에 추가되는 스토리지를 관리한다. HDFS는 네임스페이스를 공개해서 유저 데이터가 파일에 저장되는 것을 허락한다. 

네임노드는 파일과 디렉터리의 읽기(open), 닫기(close), 이름 바꾸기(rename)등 파일 시스템의 네임스페이스의 여러 기능을 수행한다. 또한, 데이터 노드와 블록들의 맵핑을 결정한다. 데이터 노드는 파일 시스템의 클라이언트가 요구하는 읽기(read), 쓰기(write) 기능을 담당한다. 데이터 노드는 네임 노드에서의 생성, 삭제, 복제 등과 같은 기능도 수행한다. 

 

 

파일 저장 플로우

 

 

1. 어플리케이션이 HDFS 클라이언트에게 파일 저장을 요청하면

클라이언트는 네임 노드에게 파일 블록들이 저장될 경로 생성 요청

네임 노드는 해당 파일 경로가 존재하지 않으면 경로 생성 후 다른 클라이언트가 해당 경로를 수정하지 못하게 lock

이후 네임 노드는 클라이언트에게 해당 파일 블록들을 저장할 데이터 노드의 목록 반환

2. 클라이언트는 첫 번째 데이터 노드에게 데이터 전송

3. 첫 번째 데이터 노드는 데이터를 롴러에 저장한 후 데이터를 두 번째 데이터 노드로 전송, 전달

4. 로컬에 데이터를 저장하였으면 자기에게 넘겨준 데이터 노드에게 데이터 로컬 저장이 완료되었음을 응답

5. 첫 번째 데이터 노드는 클라이언트에게 데이터 저장이 완료되었음을 응답

 

 

파일 읽기 플로우

 

 

1. 어플리케이션이 클라이언트에게 파일 읽기 요청

2. 클라이언트는 네임 노드에게 요청된 파일이 어떤 블로게 저장되어있는지 정보 요청

3. 메타 데이터를 통해 파일이 저장된 블록 리스트를 반환

4. 클라이언트는 데이터 노드에 접근하여 블록 조회 요청

5. 데이터 노드는 클라이언트에게 요청된 블록을 전송

6. 클라이언트는 어플리케이션에 데이터를 전달

 

 

하트비트(heartbeat)

데이터 노드는 네임노드에게 하트비트를 3초마다 보낸다. 하트비트에는 디스크 가용 공간 정보, 데이터 이동, 적재량 등의 정보가 들어있다. 핸드 셰이킹에 사용된다. 10초 이상 못 받으면 사용하지 못한다고 인식한다. 

'Hadoop' 카테고리의 다른 글

Hadoop 설치  (0) 2022.12.06
맵리듀스(MapReduce)  (0) 2022.09.21
하둡 에코시스템(Hadoop Ecosystem)  (1) 2022.09.21