Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

스테코더

HDFS 본문

Data Engineering

HDFS

print("스테코더") 2023. 6. 4. 20:35

HDFS 특징

  • 파일을 여러개의 블록으로 나눠 저장 (블록사이즈 : 기본 64MB)
    → 블록 사이즈 metadata 사이즈 작음 (한번 쓰고 바뀌지 않으니까)
  • 하드웨어 고장에 견고
    • 한 데이터 블록을 보통 3군데 (Replication factor)에 저장(하나가 끊어지면 다른 rack에서 처리할 수 있도록)
      같은 rack 2개, 다른 rack에 1개 저장
  • Write One Read Many → 쓰기 한번 읽기 여러번 발생
    • Append 작업은 가능하지만 내용을 바꾸기 위해서는 파일 전체를 새로 써야함
  • 스트리밍 데이터 액세스 → 배치잡에 최적화
  • MapReduce나 HBase와 같은 시스템의 기본구성블록으로 사용
  • 계층 구조의 파일 시스템 제공

HDFS 구조

NameNode 마스터노드

  • HDFS마다 단 하나만 존재
  • HDFS의 마스터 노드로 저장되는 각종 파일들의 메타정보를 관리하고 실제 데이터는 다수의 DataNode에 분산 저장
    • 파일이 블록단위(기본 64MB)로 나뉘어 저장되고 보통 세군데(replication factor)의 DataNode에 중복 저장
    • Rack awareness
      → 중복 저장 시 Rack의 위치를 유념하여 한 rack에 모든 복제블록이 놓이지 않도록 함
  • Data Node들이 계속적으로 통신 (Heartbeat)
    • 주기적으로 heartbeat 주고 받음
      → 일정시간 동안 주고받지 않으면 dead node로 마킹 → 데이터를 migration
    • 문제 DataNode가 감지되면 그 노드의 블록들을 다른 노드들에 복제
    • 주로 3초마다 일어남
  • A single point of failure
    → file/directory 구조와 metadata를 담고 있어서 전원 off나 네트워크 단절되면 전체 하둡 클러스터에 HDFS로 접근이 불가능해짐

Data 읽기

  1. 클라이언트는 먼저 NameNode와 통신하여 해당 파일의 데이터블록 위치 리스트의(DataNode와 블록ID)를 얻음
    → 파일의 크기가 데이터블록 크기 (기본 64MB)보다 작다면 한쌍의 DataNode/블록 ID로 충분
  2. 클라이언트는 DataNode들과 직접 통신하여 블록 데이터들을 차례대로 읽어들임

Data 쓰기

  1. 클라이언트는 HDFS 파일을 생성하고자 먼저 로컬파일시스템에 파일을 생성
  2. 파일 생성이 끝나거나 크기가 데이터블록의 크기보다 커지면 NameNode를 컨택
    → NameNode는 파일생성요청을 메모리 meta정보와 EditLog에 저장
  3. NameNode는 Replication factor만큼의 DataNode와 블럭ID를 클라이언트에 전송
  4. 클라이언트는 이 중 첫번째 Datanode에 데이터를 쓰면서 replication이 벌어져야하는 나머지 DataNode들의 리스트를 같이 넘김
    → client와 서버가 네트워크 상으로 각 서버간의 사이보다 멀기 때문
  5. 첫번째 DataNode는 데이터를 복제 받으면서 두번째 DataNode로 복제를 시작
  6. 마지막 DataNode에서 블록의 복제가 완료되면 이 시점에서 해당 데이터블록의 생성은 완료된 것으로 간주
    → 이 프로세스를 Replication pipelining이라 함
  7. 클라이언트에서 파일에 써야할 데이터가 더 있으면 다시 3으로 가서 반복

'Data Engineering' 카테고리의 다른 글

MapReduce  (0) 2023.06.04
하둡 Intro  (0) 2023.06.03
Comments