소개
HDFS(Hadoop Distributed File System)는 범용 하드웨어에서 분산 처리 파일 시스템을 운용하기 위한 기술이다. 기존의 존재하던 분산처리 파일 시스템들과 기술적으로 거의 동일하다. 특징은 특정 하드웨어를 의한 시스템이 아닌 범용 시스템에서 동작하도록 설계되었다는 것이다. 이러한 기능은 분산 처리를 위한 하둡의 기본 중 하나이다.
네임 노드와 데이터 노드
HDFS는 마스터와 슬레이브 아키텍쳐를 가지고 있다. HDFS는 하나의 네임노드와 여러 개의 데이터노드로 구성된다. 네임 노드는 마스터 서버로서 파일 시스템의 네임 스페이스를 관리하고 클라이언트의 권한 등을 체크에 데이터의 접근을 관리한다. 데이터 노드는 네임 노드의 명령에 따라 이 블록을을 생성하거나 삭제, 복제하는 기능을 수행한다. 사용자가 파일을 저장하려고 할 때 내부적으로 이 파일을 하나 이상의 블록으로 나누고 이 블록들을 데이터 노드들에 저장하게 된다. 또한 이러한 블록들이 여러 데이터 노드에 복제가 되어 한 데이터 노드 장비에 문제가 생겼을 경우에도 데이터를 유지할 수 있게 된다.
파일 시스템 네임스페이스
HDFS는 일반적인 파일 시스템 구조를 지원하고 있다. 유저나 애플리케이션은 디렉토리를 생성하고 생성한 디렉토리에 파일을 저장할 수 있다. 이러한 파일 시스템 네임스페이스는 기존의 파일 시스템과 기능적으로 매우 비슷하다. 예를 들어 디렉토리를 삭제한 다면 내부의 파일이 함께 삭제되고, 디렉토르 또는 파일 단위로 권한 설정도 할 수 있다. 이러한 네임스페이스는 네임 노드에서 관리가 된다.
데이터 복제
HDFS는 대용량 데이터를 안전하게 보관하기 위해 데이터 블록들을 복제하도록 설계되었다. 동일한 데이터 블록을 여러 데이터 노드에 저장함으로써 장비의 결함에 대비하는 것이다. 얼마나 복제해서 저장할 지는 어플리케이션 단에서 설정할 수 있다.
데이터 노드에서 일정 시간마다 하트비트 신호를 보내 데이터 노드가 정상 작동하고 있는지 확인시켜준다 네임 노드는 이 것들을 관리하며 만약 하드비트 메세지가 들어오지 않았다면 해당 데이터 노드가 정상적이지 않은 것으로 판단하고 해당하는 데이터 블록의 복제를 요청한다. 이러한 과정을 통해 데이터들은 안전하게 보관이 가능해 진다.
데이터 노드는 동일한 데이터 블록을 가질 수가 없다. 따라서 복제가 가능한 최대 숫자는 데이터 노드의 숫자와 같다. 데이터 복제는 성능과 안정성에 큰 영향을 미치기 때문에 얼마나 복제할지 어떻게 분산하여 관리할지 정책을 시스템의 상황에 맞춰 잘 설정해야 한다.
HDFS 접근성
HDFS는 다양한 어플리케이션들로 접근할 수 있도록 지원하고 있다. JAVA AP를 통해서 접근할 수도 있고 Web을 통해서도 접근할 수 있도록 지원하고 있다. 가장 기본적으로 쉽게 접근 하는 것은 쉘을 통하는 것이다. 리눅스의 경우 hadoop 또는 hdfs명령어를 통해 HDFS에 접근이 가능하다.
파일 삭제와 복구
사용자가 어플리케이션을 통해 파일 삭제를 요청하는 경우 HDFS는 파일을 바로 삭제하지 않고 trash폴더로 이동을 시킨다. 윈도우의 휴지통과 비슷한 기능이다. 이 trash디렉토리에 있는 파일들은 설정된 시간동안 남아 있으며 설정된 시간을 넘을 경우 삭제되게 된다. 완전 삭제 되기 전까지는 이 파일들을 다시 복구 시키는 것도 가능하다.
자료 출처
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
'IT > Big Data' 카테고리의 다른 글
스파크(Spark) 최적화하기 (0) | 2024.03.21 |
---|---|
하둡(Hadoop) 이란? (0) | 2018.04.16 |
빅데이터란? (0) | 2018.02.25 |