하둡(Hadoop)_HDFS

2021. 11. 4. 14:06ComputerScience

728x90

HDSF

Hadoop (High-Availability Distributed Object-Oriented Platform)

  • 분산 환경에서 빅데이터를 저장하고 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크
  • 단일 서버에 수천대의 머신으로 확장할 수 있도록 설계되었다.

 

1. 하둡 분산형 파일 시스템 (Hadoop Distributed File System, HDFS)

  • 하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템
  • HDSF : 하둡 프레임워크를 위해 자바 언어로 작성된 분산 확장 파일 시스템
  • HDFS는 여러 기계에 대용량 파일을 나눠서 저장, 데이터들을 여러 서버에 중복저장하여 데이터 안정성을 얻음

 

(1)특징

  1. HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실을 방지한다.
  2. HDFS에 파일을 저장하거나, 조회하려면 스트리밍 방식으로 데이터에 접근해야한다.
  3. 한번 저장한 데이터는 수정할 수 없고, 읽기만 가능해서 데이터 무결성을 유지한다. 
  4. 데이터 수정은 불가능하지만 파일 이동, 삭제, 복사할 수 있는 인터페이스를 제공한다.

 

(2)아키텍처

HDSF 아키텍처

  • HDFS는 마스터/슬레이브(master/slave)구조를 가진다.
  • HDFS 클러스터는 하나의 네임 노드와 마스터 서버로 구성된다.
    • 마스터서버 - 파일 시스템을 관리하고 클라이언트의 접근통제
  • 클러스터의 각 노드에는 데이터 노드가 하나씩 존재
  • 데이터 노드는 실행될 때 마다 노드에 추가되는 스토리지를 관리
  • HDFS는 네임스페이스를 공개해서 유저 데이터가 파일에 저장되는 것을 허락한다.
  • 네임노드는 파일과 디렉터리의 읽기(open), 닫기(close), 이름 바꾸기(rename) 등 파일 시스템의 네임스페이스의 여러 기능을 수행한다.
    • 데이터 노드와 블록들의 맵핑을 결정
  • 데이터노드는 클라이언트가 요구하는 읽기(read), 쓰기(write) 기능을 담당
    • 네임 노드에서의 생성, 삭제, 복제 등과 같은 기능도 수행
  • 네임노드와 데이터노드는 GNU/Linux OS를 기반으로 하는 상용 버신에서 실행하기 위해 디자인된 스프트웨어의 일부다.
  • HDFS는 자바 언어를 사용하므로 자바가 동작하는 어떠한 컴퓨터에서나 네임노드나 데이터노드 소프트웨어를 실행할 수 있다.

 

(3)save 플로우

HDSF SAVE

  1. 어플리케이션이 HDFS 클라이언트에게 파일 저장을 요청
  2. 클라이언트는 네임 노드에게 파일 블록들이 저장될 경로 생성 요청
    • 네임 노드는 해당 파일 경로가 존재하지 않으면 경로 생성
    • 다른 클라이언트가 해당 경로를 수정하지 못하게 lock
  3. 네임노드는 클라이언트에게 해당 파일 블록들을 저장할 데이터 노드의 목록 반환
  4. 클라이언트는 첫번째 데이터 노드에게 데이터 전송
  5. 첫번째 데이터 노드는 데이터를 로컬에 저장 후 데이터를 두번째 데이터 노드로 전송 (반복 -> )
    • 로컬에 데이터를 저장하였면 자기에게 넘겨준 데이터 노드에게 데이터 로컬 저장완료 응답
  6. 첫번째 데이터 노드는 클라이언트에게 데이터 저장완료 응답

(4)read 플로우

HDSF READ

  1. 어플리케이션이 클라이언트에게 파일 읽기 요청
  2. 클라이언트는 네임 노드에게 요청된 파일이 저장된 블록 정보 요청
  3. 메타 데이터를 통해 파일이 저장된 블록 리스트를 반환
  4. 클라이언트는 데이터 노드에 접근하여 블록 조회 요청
  5. 데이터 노드는 클라이언트에게 요청된 블록을 전송
  6. 클라이언트는 어플리케이션에 데이터를 전달
728x90

'ComputerScience' 카테고리의 다른 글

하둡(Hadoop)_맵리듀스(MapReduce)  (0) 2021.11.04
아키텍쳐 vs 프레임워크 vs 디자인패턴  (0) 2021.09.27