ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • hdfs (hadoop) 에 대해서
    BigData 2023. 1. 11. 21:34
    728x90
    반응형

    하둡의 간단한 정의는 다음과 같습니다. 
    분산된 환경에서 데이터를 저장하고 관리하고, 처리할 수 있도록 도와주는 프레임워크입니다. 

    그래서 하둡은 크게 두가지로 분류됩니다. 

    1. 데이터를 저장하는 관점에서 hadoop distributed file system

    2. 데이터를 처리하는 관점에서 MapReduce 

     

    두가지로 나누어 생각할 수 있습니다. 

     

    이번 글에서는 하둡의 두가지 측면 중 hdfs 에 대해서 이야기할 예정입니다. 

    Hadoop Distributed File System 

    FAT, ext, union file system 등 운영체제 및 환경에서 사용하던 파일 시스템들과 hdfs 는 하나의 차이가 있습니다. 

    기존의 파일 시스템은 파일의 관리를 하나의 물리적인 디스크로 한정했던 것과 달리

    hdfs 는 분산된 저장소를 그 대상으로 합니다. 

    여러 대의 서버, 여러 개의 디스크에 파일이 나뉘어 분산되어 저장되는 셈이죠. 

     

    파일 하나를 블록이라는 작은 단위로 나누어 관리하게 되는데, 이러한 특징으로 인한 hdfs 의 장점이 존재합니다. 

     

    1. 저사양의 서버 라고 하더라도 hdfs 에 충분히 의미있게 쓰일 수 있습니다. 

     

    2. 수평적인 용량의 확장성 (Scale-Out 이 가능합니다.)

    3. Replication 등의 데이터 복제가 가능합니다.(복제라는 기술이 하둡만의 특징은 아니지만)

     

     

    Structure

    hdfs 는 데이터의 분산 저장을 위해서 크게 3가지 요소들로 구성됩니다. 

    1. name node 

    2. data node 

    3. journal node 

     

    각각의 노드들이 파일의 분산 저장을 위해 위임된 역할을 수행하는데요.

    일반적인 분산 환경 시스템과 마찬가지로 hdfs 또한 master slave, 또는 Scheduler 와 Worker 구조를 가집니다.

     

    네임노드가 master 의 역할을 수행하고, 데이터 노드가 worker 로써 기능합니다. 

     

    namenode

    네임노드는 hdfs 에서 마스터의 역할을 수행합니다. 

    실질적으로 파일들이 저장되는 곳은 데이터 노드인데요.
    파일의 사이즈, 저장 위치 등의 메타데이터들을 네임노드에 저장하여, 

    파일시스템의 마스터로써 기능을 하게 됩니다. 

     

    파일시스템의 관점에서 효율적인 파일 관리를 위하여 파일들의 메타데이터를 네임노드에 저장하게 됩니다. 

    이때 데이터 읽기의 효율성을 위하여 메타데이터를 메모리에 상주시키는 특징이 있습니다. 

    데이터 블록에 대한 실시간 처리를 위하여 분산 저장된 데이터의 메타정보를 메모리에 두는 것입니다. 

      

    journal node

    저널노드는 네임노드의 영속성 문제를 해결해줍니다. 

    네임노드는 성능을 위하여 분산 저장된 데이터들의 메타데이터를 메모리에서 관리합니다. 
    이는 영속성 관점에 문제를 야기할 수 있습니다. 
    네임노드가 다운되는 즉시 데이터노드들을 관리하던 유일한 정보인 메타데이터가 휘발되죠.

     저널노드는 지속적으로 fsimage 라는 스냅샷을 생성하며, 네임노드의 영속성 문제를 도와줍니다. 

    datanode

    데이터노드는 실질적인 데이터 저장소입니다. 

    저장해야할 파일은 데이터 블록 으로 나뉘어 관리되며, 이 정보들이 데이터노드에서 저장됩니다. 

    그리고 분산 환경에서 필수적인 가용 상태를 체크를 위하여 

    데이터노드는 주기적으로 자신의 상태를 네임노드에게 보고합니다.

    초기화 시점에 자신이 관리 중인 데이터 블럭의 정보를 네임노드에 보고하고, 생성-삭제-수정의 기록 또한 보고합니다.

    이렇게 네임노드는 데이터노드에 저장된 데이터블록의 상태를 관리할 수 있게 됩니다. 

     

    그리고 지속적으로 가용상태를 네임노드에게 보고한다 
    이를 heartbeat 라고 부르는데 만약 제한된 시간 이내에 heartbeat가 이루어지지 않는다면 네임노드는 heartbeat 가 체크되지 않는 데이터노드를 장애 상태로 판단하고 해당 데이터노드를 대체할 다른 데이터노드를 생성합니다. 

     
    반응형

    'BigData' 카테고리의 다른 글

    Avro Serialization 알아보기.  (0) 2023.10.05
    Avro File 알아보기  (0) 2023.10.04
    RabbitMQ 에 대해서  (0) 2023.04.09
    apache spark 란  (0) 2023.01.12
    RocksDB 알아보기  (0) 2021.12.15
Designed by Tistory.