IT 삽질기

HDFS란 본문

BigData/Hadoop

HDFS란

화이팅빌런 2019. 6. 2. 23:35

HDFS(Hadoop Distributed File System)란

HDFS는 하둡 분산 파일시스템으로 하둡에서 사용하는 파일 시스템이다

하둡에서 사용하는 파일시스템 답게 대용량의 파일을 처리하기에 적합하도록 설계 되었다

HDFS의 특징

HDFS의 특징은 다음과 같다.

  1. 대용량 파일
    • HDFS는 하나의 파일이 기가, 테라 단위의 파일까지 저장이 가능하다.
  2. 스트리밍 방식의 데이터 접근
    • HDFS는 클라이언트의 요청을 빠른 시간에 처리하는 것보다 동일한 시간 내 많은 데이터를 처리하도록 설계되었다.
  3. 범용 하드웨어 사용
    • 신뢰도가 높은 고가의 하드웨어가 아닌 범용의 하드웨어를 사용할 수 있고, 장애가 발생하는 경우 장애 복구 기능을 통해 작업을 실행 할 수 있다.
  4. 데이터 수정
    • 하둡에서는 데이터를 한 번 쓰고 끝나거나 파일의 끝에 데이터를 덧붙이는 것은 가능하지만 파일 중간의 데이터를 수정하는 것은 허용하지 않는다.

HDFS의 기본개념

다음으로 HDFS에서의 기본개념을 살펴보도록 하자.

  1. 블록
    • 파일시스템에서 사용하는 블록의 개념과 같은 개념으로 한 번에 읽고 쓸 수 있는 데이터의 최대량
    • 일반적으로 사용하는 파일 시스템의 블록 크기는 수 KB정도
    • 하둡에서의 블록의 크기(v1 기준 64MB, v2 기준 128MB)
    • 일반적인 파일 시스템과 달리 1MB를 저장하는데 128MB의 용량을 사용하지 않고 1MB의 용량을 사용

HDFS에서 큰 데이터 블록을 사용하는 이유는 탐색 비용을 줄이기 위해서인데,

블록의 크기가 크면 블록의 시작점을 탐색하는 데 걸리는 시간을 줄여 데이터 전송에 더 많은 시간을 할애할 수 있게 되어 시간적으로 이득을 볼 수 있다.

  1. 데이터 복제(replication)

    • 하둡에서는 내고장성과 가용성을 위해 데이터를 복제하여 저장
    • 블록 손상과 노드의 장애에 대처하기 위해 각 블록들을 서로 다른 노드에 복제하여 저장(기본값 3)
  2. 네임노드와 데이터노드

HDFS클러스터에는 네임노드와 데이터노드가 존재하는데

네임노드는 파일시스템의 네임스페이스를 관리하며 파일, 디렉토리에 대한 메타데이터를 유지하고, 데이터 노드는 블록을 저장하고 저장하고 있는 데이터의 정보를 네임노드가 알 수 있게 주기적으로 보고한다.

따라서 HDFS의 파일 시스템에 접근하기 위해서는 내부적으로 네임노드에 먼저 접근을 하여 데이터의 위치가 어디에 있는지 파악한 후 데이터 노드로 접근하여 데이터를 가지고 오게 된다.

네임노드가 이렇게 중요한 역할을 하기에 네임노드에서 장애가 발생하는 경우 HDFS의 데이터를 읽어오지 못하는 경우가 발생할 수 있는데 이를 방지하기 위해 보조네임노드를 사용해 네임노드에서 장애가 발생했을 때 대처할 수 있다.

다만 보조네임노드는 네임노드의 데이터를 온전한 상태로 가지는 것이 아니라 시간차를 두고 저장하기 때문에 네임노드에서 관리하는 데이터를 백업하고 보조네임노드와 같이 사용하는 것이 가장 좋은 방법이다.

 

참고자료

https://dabingk.tistory.com/2

하둡 완벽 가이드

 

Comments