HDFS Architecture(1) - Block based file system

Alan·2023년 3월 4일
0

Block based file system

  • HDFS는 블록 구조의 파일 시스템임

  • HDFS에 저장되는 모든 파일은 일정 크기의 블록으로 나뉘어 여러 서버에 분산되어 저장됨

  • 블록의 기본 크기는 128MB이며, 변경 가능함(최근엔 서버 사양이 좋아져, 256MB, 512MB, 1G 등 다양하게 구성)

  • 파일과 블록

    • 하나의 파일은 하나 또는 복수 block에 저장

    • 어떤 파일이 어느 block에 저장되어 있는지에 대한 정보는 메타데이터로 namenode가 메모리에서 관리

    • 하나의 File 사이즈가 block의 크기를 넘어가면 여러 블록에 나누어 저장함

    • 하나의 File 사이즈가 block의 크기보다 작다면, 하나의 File이 하나의 block을 모두 점유함(이 때문에 아주 작은 여러개의 파일들을 HDFS에 저장하는 것은 여러문제를 발생시킬 수 있음 - Small file issue)

    • 실제 디스크를 점유하는 공간은 block 내에 file이 차지하는 크기임

  • Block System의 장점

    • Disk Seek time 감소

      • 디스크 탐색 시간 = Seek time(데이터의 위치) + Search time(데이터 섹터에 도달)

      • 하둡 개발 당시, 일반적인 HDD의 disk seek time은 10ms, disk I/O bandwidth는 100MB/s였음

      • HDFS는 seek time이 bandwidth의 1%를 사용하는 것으로 목표로 개발되어, 100MB를 넘지 않고 2^n으로 가까운 64MB를 선택함(Hadoop v1의 기본값 : 64MB)

    • Metadata size 감소

      • 일반적인 파일시스템은 블록(page)의 크기가 4k ~ 8k이기 때문에 200MB크기의 데이터를 저장하기 위한 메타 데이터 5만개 이상 분을 관리해야 함

      • 하지만 HDFS는 block 크기가 128MB이기 때문에 단 2개 블록에 해당하는 메타 데이터만 관리하면 됨

      • 일반적으로 namenode에서 100만 개 블록을 저장할 경우, 1GB의 Heap memory를 사용하는 것으로 알려져 있음

    • Communication cost between Client and Namenode

      • 클라이언트는 HDFS에 저장된 파일에 접근할 때, 먼저 Namenode에 해당 파일을 구성하는 데이터 블록의 위치를 조회함
      • 만약 데이터 블록이 작다면, 이러한 통신에서 필요한 데이터의 크기가 많아지거나 조회 횟수가 증가할 것임
      • 하지만, HDFS는 블록의 크기가 크기 때문에 특별한 경우를 제외하고는 Namenode와 한번의 통신 이후 스트리밍 방식으로 데이터를 읽거나 쓸 수 있음

0개의 댓글