본문 바로가기

[Data Engineering]/[Hadoop]

[Hadoop/기록] 6. Hadoop Read/Write Architecture

728x90

[Read/Write Architecture]

Read Architecture는 Write Architecture의 반대로 흘러가는 개념이므로, Write Architecture 중심으로 기록하도록 한다. (깊이 공부해보고 작성한것이 아님을 감안!!)

아래 그림은 Hadoop에 Write 과정을 나타내는 다이어그램이다. 언어는 크게 중요한 부분이 아니므로 대략적인 흐름을 기억하려 한다. 

 

  1. 먼저 기록하려는 파일이 있다고 가정해본다. 이 파일은 크기가 256MB이하라서 2개의 128MB의 Block으로 나누어진다. 이를 block a, b라고 하자.

  2. Application은 요청(file write request')을 통해 HDFS Client로 파일을 쓰겠다고 말한다.

  3. HDFS Client은 write requst를 NameNode 에게 보낸다. 그러면 NameNode는 그 HDFS Client에게 write permission과 DataNode의 IP address를 보낸다. 

  4. HDFS Client는 받아온 IP address를 기준으로 데이터를 쓰기 시작한다.
    이때 Write와 Copy가 연이어 발생하게 되는데, 이를 Data Copy Process라 하며, 이는 3가지 단계로 이루어져 있다.

    [Data Copy Process] 
    1. Set up of Pipeline
      HDFS Client은 NameNode에게서 DataNode가 복제가 가능한 상태인지를 확인하고 파이프라인을 생성한다 -> Core-Switch를 통해 첫번째 데이터노드와 TCP/IP Connection을 생성한다 -> 그리고 이어서 나머지 복사를 담당할 데이터노드들에게도 이를 알려서 준비를 한다.

    2. Data Streaming and replication
      Pipeline이 완성되고 나면, 첫번쨰 데이터노드는 데이터를 복제받으면서 두번째 데이터 노드로 복제를 시작한다. -> 마지막 데이터 노드의 복제가 완료되면 각각의 Rack의 지정된 위치에 블럭들이 배치되게 된다.

    3. Shutdown of pipeline
      블럭들이 잘 배치되게 되면, 해당 결과(Acknowledge)가 NameNode에게 잘 리턴되게 된다. -> 바뀐 DataNode의 상태가 NameNode에 업데이트 된다. -> HDFS Clients는 TCP/IP Connection을 닫기 위해 pipe-line을 닫게 된다. 

 

아래 링크를 참고하면서 보면 도움이 될듯하다.

 

HDFS Tutorial: Architecture, Read & Write Operation using Java API

Hadoop comes with a distributed file system called HDFS (HADOOP Distributed File Systems) HADOOP based applications make use of HDFS. HDFS is designed for storing very large data files, runn

www.guru99.com

 

728x90