Hadoop - Client

jaewonnow_·2025년 11월 28일

DataEngineering

목록 보기
7/19

HDFS Client

File Reading

  1. JVM 기반의 Client가 NameNode에 원하는 데이터를 요청한다.
  2. NameNode는 메타데이터 안에서 해당 데이터를 담고 있는 DataNode들의 IP 주소(위치 정보)를 전달한다.
  3. 분산 네트워크의 코어 스위치(core switch)를 통해 IP 주소를 라우팅하여 목표 DataNode를 찾는다.
  4. Rack(세부 분산 네트워크)의 코어 스위치에서 최종적으로 목표 노드를 찾고 요청에 대한 반환값을 받는다.

블록 병렬 읽기 (Parallel Read)
최적의 DataNode 선택: 클라이언트는 NameNode로부터 받은 블록 위치 목록을 바탕으로, 자신과 가장 가까운 DataNode를 선택하여 해당 블록을 읽기 위한 연결을 설정합니다. (데이터 지역성 원칙 적용)

DataNode 직접 통신: 클라이언트는 NameNode를 거치지 않고, 선택한 DataNode와 직접 통신하여 해당 블록의 데이터를 요청.

병렬 읽기: 파일이 여러 블록으로 나뉘어 있으므로, 클라이언트는 이 블록들을 여러 DataNode에서 동시에(병렬로) 읽어올 수 있다. 이것이 HDFS의 높은 처리량을 가능하게 하는 핵심 요소.

  1. 최종 결합 및 반환 (Reassembly)
    클라이언트 측에는 HDFS 파일 시스템 인터페이스(DFSInputStream 등)가 구현되어 있습니다. 이 인터페이스는 병렬적으로 들어오는 블록 데이터 스트림들을 받아, 파일이 저장될 때의 원래 순서에 따라 논리적으로 재조립합니다.

재조립된 최종 파일 데이터 스트림이 사용자 프로그램(애플리케이션)에 하나의 연속된 파일처럼 반환됩니다.

File Writing

  1. Client는 NameNode에 파일 정보를 전송하고, 파일 Block을 쓸 DataNode 목록을 요청한다.
  2. NameNode가 파일을 저장할 DataNode의 목록을 반환한다.
  3. DataNode에 파일 쓰기를 요청한다.
    1. DataNode간 복제를 같이 진행한다.
    2. 목적지 DataNode에 데이터를 쓰기 시작하고, 다른 DataNode에 복제 데이터를 완료하면 쓰기 작업이 완료된다.

profile
0 to 100 Data Engineer

0개의 댓글