Home HDFS
Post
Cancel

HDFS

HDFS(The Hadoop Distributed File System)

  • 데이터가 전체 클러스터에 분산되어 저장되도록 함

  • 데이터에 빠르게 접근하고 분석하도록 함

  • 대용량의 파일들을 여러 블럭으로 쪼갬, Hadoop 2.0의 경우, block당 default 128MB.

  • 여러 컴퓨터에 데이터를 분산시키고 병렬로 처리가능

  • 여러 컴퓨터에 동일 데이터 블럭이 백업용으로 저장되어있음.

HDFS Architecture

  • Name Node, Data Node로 나누어짐.

  • Name Node는 파일 시스템의 네임스페이스를 관리한다. 파일시스템 트리와 그 트리에 포함된 모든 파일과 디렉토리에 대한 메타데이터를 유지한다. 이 정보는 namespace image(fsimage), edit log라는 두 종류의 파일로 로컬 디스크에 저장된다. 또한 파일에 속한 모든 블록이 어느 데이터노드에 있는지 는 메모리에 저장하여 파악하고 있다. 블록의 위치정보는 시스템이 시작할 때 모든 데이터노드로부터 받아서 재구성하기 때문에 디스크에 영속적으로 저장하지는 않는다.

  • 클라이언트가 HDFS에 쓰기 동작(파일 생성 혹은 이동 등)을 요청하면, 그 트랜잭션을 일단 edit log에 기록하고 그후 메모리 상에 상주하는 메타데이터를 변경한다. edit log에 어느 정도 데이터가 쌓이면 fsimage와 edit log는 secondary Namenode에 의해서 병합된 후 다시 main NameNode로 전송된다.

  • Data Node는 파일의 블락들을 가지고 있고, 다른 Data Node와 통신하면서 데이터를 replication함. 그리고 저장하고 있는 블록의 목록을 네임노드에 주기적으로 보고한다.

파일읽기

img 출처

  1. 클라이언트 노드는 Name Node에게 자신이 찾는 데이터를 전달한다.

  2. Name Node는 클라이언트기준으로 가장 데이터를 효율적으로 얻을수 있는 Data Node정보를 클라이언트 노드에게 전달한다.

  3. 클라이언트가 해당 Data Node에게 데이터를 요청한다.

파일쓰기

img 출처

  1. 클라이언트 노드가 Name Node에게 파일 쓰기 요청을 한다.

  2. Name Node는 특정 Data Node에 파일을 생성하고 클라이언트 노드에게 해당 노드정보를 리턴한다.

  3. 클라이언트 노드는 그 Data Node에게 데이터를 전송하고 Data Node는 해당 정보를 블럭에 기록한다.

  4. Data Node는 블럭을 다른 Data Node에게 전송하여 데이터를 replicate

  5. acknowledgement가 Data Node를 거쳐서 클라이언트 그리고 Name Node순서로 전달된다.

  6. Name Node는 파일이 정상적으로 썼다는 사실을 기록한다.

Name node가 다운되는 상황에대한 대비

  • Metadata 백업 : Namenode는 로컬디스크와 NFS(Network File System)에 메타데이터를 백업한다.

  • Secondary Namenode :
    • edit log가 너무 커지지 않도록, namespace image를 edit log와 병합하여 새로운 네임스페이스 이미지를 만듬
    • 네임노드에 장애가 발생할 것을 대비해서 네임스페이스 이미지의 복제본을 보관
  • HDFS Federation : 각각의 namenode가 특정한 namespace volume을 관리한다.하나의 namenode가 다운되면 전체 클러스터의 일부데이터만 사라진다.

HDFS High Availability

  • active namenode와 standby namenode로 구현

  • active namenode에서 장애가 발생하면 standby namenode가 역할을 이어받음

  • 두 namenode는 edit log을 공유하고 이를 공유 스토리지에 보관한다.

  • 공유 스토리지를 위해 NFS 필러나 QJM(Quorum journal manager) 중 하나를 선택할 수 있고 QJM이 권장옵션이다.

  • Zookeeper는 단 하나의 네임노드만 활성 상태에 있도록 보장

This post is licensed under CC BY 4.0 by the author.

Trending Tags