[Hadoop] HDFS의 입출력 (1편)

HDFS의 입출력은 NameNode 으로부터 시작된다.

1. 파일 읽기
  • 하둡 클라이언트가 파일의 블록들이 보관된 노드 위치를 네임노드를 통해 제공 받는다. (클러스터의 네트워크 위상에 따라 클라이언트와 가까운 순으로 데이터 노드가 정렬됨)
  • 보관된 노드의 위치 찾아 파일을 읽는다.
  • 하둡 클라이언트는 데이터 노드로 연결이 되거나 읽은 블록이 깨져 있는 경우, 네임노드에 해당 블록과 데이터 노드를 통지하고, 다른 데이터노드에서 블록 읽기를 시도함.

2.파일 쓰기
  • 하둡 클라이언트가 네임노드에 파일 생성 정보 전송 ( 번째 블록 크기 만큼 로컬에 쌓이면 ) 하둡 클라이언드가 블록을 보관할 노드 목록을 네임노드에 요청한다.
  • 하둡 클라이언트가 목록 번째 데이터 노드에 쓴다.
  • 이후 데이터 노드가 다른 데이터 노드들에 복제 한다.
  • 반복 작업

3. 블록을 보관할 노드 선택
  • 랙에 동일 블록 복제본이 존재하지 않도록 한다.
    • 번째 replica 가까운 노드() 보관 또는 노드 선택
    • 번째와 번째는 번째와 다른 랙에 보관
      • 번째/ 번째는 동일 랙에 보관
  • 데이터 가용성, 읽기/쓰기 성능 고려
    • 랙이 장애나더라도 서비스 가능
    • 쓰기 과정에서 블록 복제시, 데이터 이동은 1

4. 랙을 하는 방법
  • 마스터 노드 네트워크 위상 관리
    • 외부 설정(+ 스크립트) 주로 이용(커스텀도 가능함)
  • 트리 구조로 거리 구함

댓글

가장 많이 본 글