분산처리/빅데이터-하둡, 하이브로 시작하기

2-3) 블록과 세컨더리 네임노드

busy맨 2023. 7. 16. 23:54

1. 블록

  • HDFS 파일은 지정한 크기의 블록으로 나누어지고, 각 블록은 독립적으로 저장
  • 블록은 탐색 비용을 최소화하기 위해 128MB와 같이 매우 큼
    • 블록이 크면 하드디스크에서 블록의 시작점을 탐색하는 데 걸리는 시간을 줄임
    • 네트워크를 통해 데이터를 전송하는데 더 많은 시간을 할당
  • 여러 개의 블록으로 구성된 대용량 파일을 전송하는 시간은 디스크 IO 속도에 크게 영향

2. 블록 추상화의 이점

  1. 파일 하나의 크기가 단일 디스크의 용량보다 더 커짐
    • 큰 파일을 블록 단위로 나누어 단일 디스크의 용량보다 큰 파일 저장 가능
  2. 파일 단위보다 블록 단위로 추상화를 하면 스토리지의 서브 시스템을 단순하게 구현 가능
    • 파일 탐색 지점이나 메타정보를 저장할 때 사이즈가 고정됨으로 구현이 단순
  3. 복제를 구현할 때 매우 적합
    • 블록 단위로 복제를 구현하기 때문에 데이터 복제에도 어려움 없이 처리
    • 내고장성을 제공

3. 블록 지역성

  • 맵리듀스를 처리할 때 현재 노드에 저장된 블록을 이용하여 성능을 높임
    • 네트워크를 이용한 데이터 전송 시간 감소
    • 대용량 데이터 확인을 위한 디스크 탐색 시간 감소
    • 적절한 단위의 블록 크기를 이용한 CPU 처리시간 증가

4. 블록 작업 순서

  1. 같은 노드에 있는 데이터
  2. 같은 랙의 노드에 있는 데이터
  3. 다른 랙의 노드에 있는 데이터

5. 블록스캐너

  • 데이터노드는 주기적으로 블록 스캐너를 실행하여 블록의 체크섬을 확인
  • 오류가 발생하면 수정

6. 블록 캐싱

  • 자주 사용하는 블록을 블록 캐시라는 데이터노드의 메모리에 명시적으로 캐싱
    • 캐싱: 파일 복사본을 캐시 또는 임시 저장 위치에 저장하여 보다 빠르게 접근할 수 있도록 하는 프로세스
$ hdfs cacheadmin
Usage: bin/hdfs cacheadmin [COMMAND]
          [-addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]]
          [-modifyDirective -id <id> [-path <path>] [-force] [-replication <replication>] [-pool <pool-name>] [-ttl <time-to-live>]]
          [-listDirectives [-stats] [-path <path>] [-pool <pool>] [-id <id>]
          [-removeDirective <id>]
          [-removeDirectives -path <path>]
          [-addPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]
          [-modifyPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
          [-removePool <name>]
          [-listPools [-stats] [<name>]]
          [-help <command-name>]

# pool 등록 
$ hdfs cacheadmin -addPool pool1
Successfully added cache pool pool1.

# path 등록
$ hdfs cacheadmin -addDirective -path /user/hadoop/shs -pool pool1
Added cache directive 1

# 캐쉬 확인 
 hdfs cacheadmin -listDirectives
Found 1 entry
 ID POOL    REPL EXPIRY  PATH             
  1 pool1      1 never   /user/hadoop/shs

 

7. 세컨더리 네임노드

  • Fsimage와 Edits 파일을 주기적으로 merge하여 최신 블록의 상태로 파일을 생성
  • 파일을 merge하며 Edits파일을 삭제하기 때문에 디스크 부족 문제도 해결
    • Edits 파일이 많이 생성되면 디스크 부족 문제를 야기하거나 네임노드가 재구동 되는 시간을 저하

'분산처리 > 빅데이터-하둡, 하이브로 시작하기' 카테고리의 다른 글

2-4) HDFS 기능 2  (0) 2023.07.18
2-3) HDFS 기능 1  (0) 2023.07.17
2-2) HDFS  (0) 2023.07.16
2-1) 하둡이란?  (0) 2023.07.16
1-3) 빅데이터 에코시스템  (0) 2023.07.16