Hadoop

HDFS 라는 것도 알아보자

서여랑 2023. 9. 19. 02:29

HDFS 뭔가의 축약어라는 것을 알 수 있다. 그럼 HDFS가 뭘까? 구글 검색을 해보니 HDFS(Hadoop Distributed File System) 이라고 설명이 되어있다.

1. Hadoop Distributed File System? (하둡 분산 파일 시스템)

직역하면 하둡 분산 파일 시스템으로 해석 할 수 있겠다. 

 

구글링을 통해 알아낸 HDFS의 기본적인 설명글이다.

 

HDFS(Hadoop 분산 파일 시스템)는 Hadoop 애플리케이션에서 사용되는 기본 스토리지 시스템이며, 이 오픈 소스 프레임워크는 노드 간에 데이터를 빠르게 전송하여 작동한다. 빅데이터를 처리하고 저장해야 하는 기업에서 자주 사용한다. HDFS는 빅 데이터를 관리하고 빅 데이터 분석을 지원하는 수단을 제공하므로 많은 Hadoop 시스템의 핵심 구성 요소이다.

 

위 문장들에서 알 수 있는 요소는 HDFS는 기본 스토리지 시스템. 즉, 저장소를 담당하는 시스템이라는 것을 알 수 있다. 또한 빅데이터를 사용하는 기업들에서 자주 사용하며 Hadoop 시스템의 핵심 구성요소라고 한다.

 

이제 HDFS가 저장소를 담당하는 것이라고 하는데 어떤 원리로 저장소를 담당하는 시스템인지 알아볼 필요가 있을 것 같다.

 

2. HDFS가 그래서 뭔데?

솔직히 1번의 내용만 봐서는 IT를 잘 모르는 나로서는 그냥 "저장소 시스템이다." 라는것 까지는 이해했다. 하지만 저게 어떤식으로 돌아가는 시스템인지 잘 모르겠다. 그래서 구글링을 통해 대략적인 HDFS의 아키텍처에 대해 알아보기로 했다.

 

1. HDFS는 블록 구조의 파일 시스템이다.

HDFS 파일 블록 저장 구조

블록구조란 무엇인가? 디스크는 데이터가 읽히고 쓰여질 수 있는 가장 작은 단위인 블록을 가지게 된다. 한개의 디스크에 기반한 파일 시스템은 디스크 블록의 몇배가 되는 '파일 시스템 블록'을 처리하여 데이터를 입출력한다.

HDFS에 저장하는 파일은 특정 크기의 블록으로 나눠져 분산된 서버에 저장되며, 블록의 크기는 기본적으로 64MB로 설정되어 있으며, 하둡 환경설정 파일이나 다른 방법으로 변경이 가능하다. 여러개의 블록은 동일한 서버에 저장하기 때문에 로컬 서버의 하드디스크보다 큰 규모의 데이터를 저장 할 수 있으며, 저장할 수 있는 용량을 수십 GB, TB, PB까지 확대가 가능하게 된다.

 

2. HDFS는 마스터(Master)/슬레이브(Slave) 구조를 가진다.

HDFS는 마스터 - 슬레이브 구조를 띄며 마스터 서버는 네임노드(NameNode), 슬레이브 서버는 데이터노드(DataNode)가 된다. 

 

 1) 네임노드

 

- 메타데이터 관리

네임노드는 파일 시스템을 유지하기 위한 메타데이터를 관리하게 되고 메타 데이터는 파일 시스템 이미와 파일에 대한 블록 매핑정보로 구성되게 된다. 클라이언트에게 빠른 응답을 할 수 있도록 전체 메타데이터는 메모리에서 자장되어 로딩에 관리된다. 

 

- 데이터노드 모니터링

데이터노드는 네임노드에게 3초마다 하트비트(Heartbeat) 메세지를 전송하고, 하트비트는 데이터노드 상태 정보 와 데이터노드에 저장되어 있는 블록의 목록(blockreport)으로 구성되어 있다. 네임노드는 하트비트를 이용해 데이터 노드의 실행 상태와 용량을 모니터링 하며, 일정 기간 동안 하트비트를 전송하지 않은 데이터노드가 감지가 될 경우 장애가 발생한 서버로 판단 하게 된다.

 

- 블록 관리

네임노드는 다양한 방법으로 블록을 관리하게 되며 네임노드는 장애가 발생한 데이터노드를 발견하면 해당 데이터노드의 블록을 새로운 데이터노드로 복제 한다. 또한 용량이 부족한 데이터노드가 있다면 용량에 여유가 있는 데이터노드로 블록을 이동시킨다. 마지막으로 네임노드는 블록의 복제본 수도 관리하게 되며 복제본 수가 일치 하지 않는 블록이 발견될 경우 축로 블록을 복제하거나 삭제하게 된다.

 

- 클라이언트 요청 접수

클라이언트가 HDFS에 접근하려면 반드시 네임노드에 먼저 접속 해야만하며 HDFS에 파일을 저장하는 경우 기존 파일의 저장 여부와 권한 확인의 절차를 거쳐서 저장을 승인하게 된다. 또한 HDFS에 저장된 파일을 조회하는 경우 블록의 위치 정보를 반환 한다.

 

 

2)데이터노드

 

데이터 노드는 클라이언트가 HDFS에 저장하는 파일을 로컬 디스크에 유지하며 로컬 디스크에 저장되는 파일은 두 종류로 구성이 되게 된다. 첫번째 파일은 실제 데이터가 저장되어 있는 로우 데이터이며, 두 번째 파일은 체크섬이나 파일 생성 일자 와 같은 메타 데이터가 설정되어 있는 파일 이 된다.

 

 

일단 HDFS가 뭔지 어떤 시스템으로 돌아가게 되는지 겉핥기 식으로만 알아보았다. 짧게 요약하자면 "HDFS는 하둡의 저장소 시스템이며 블록 구조를 가지고, 마스터 - 슬레이브 구조를 가지게 된다. 그리고 네임노드와 데이터 노드로 구분하며 각각의 역할을 알아보았다." 정도로 일단 가지고 가면 될 것 같다. 다음에도 HDFS에 대해 조금 더 알아볼 예정이다.

 

 

레퍼런스 :

https://hoing.io/archives/23070

https://kadensungbincho.tistory.com/33

https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%95%98%EB%91%A1

http://www.incodom.kr/hadoop_%EC%B4%9D%EC%A0%95%EB%A6%AC.

https://opentutorials.org/course/2908/17055

'Hadoop' 카테고리의 다른 글

HDFS 라는 것도 알아보자(2)  (0) 2023.11.11
RAID ?? 이게 뭘까  (0) 2023.09.18
Hadoop을 알아보자  (1) 2023.09.17