하둡(Hadoop)_HDFS
2021. 11. 4. 14:06ㆍComputerScience
728x90

Hadoop (High-Availability Distributed Object-Oriented Platform)
- 분산 환경에서 빅데이터를 저장하고 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크
- 단일 서버에 수천대의 머신으로 확장할 수 있도록 설계되었다.
1. 하둡 분산형 파일 시스템 (Hadoop Distributed File System, HDFS)
- 하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템
- HDSF : 하둡 프레임워크를 위해 자바 언어로 작성된 분산 확장 파일 시스템
- HDFS는 여러 기계에 대용량 파일을 나눠서 저장, 데이터들을 여러 서버에 중복저장하여 데이터 안정성을 얻음
(1)특징
- HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실을 방지한다.
- HDFS에 파일을 저장하거나, 조회하려면 스트리밍 방식으로 데이터에 접근해야한다.
- 한번 저장한 데이터는 수정할 수 없고, 읽기만 가능해서 데이터 무결성을 유지한다.
- 데이터 수정은 불가능하지만 파일 이동, 삭제, 복사할 수 있는 인터페이스를 제공한다.
(2)아키텍처

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

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

- 어플리케이션이 클라이언트에게 파일 읽기 요청
- 클라이언트는 네임 노드에게 요청된 파일이 저장된 블록 정보 요청
- 메타 데이터를 통해 파일이 저장된 블록 리스트를 반환
- 클라이언트는 데이터 노드에 접근하여 블록 조회 요청
- 데이터 노드는 클라이언트에게 요청된 블록을 전송
- 클라이언트는 어플리케이션에 데이터를 전달
728x90
'ComputerScience' 카테고리의 다른 글
하둡(Hadoop)_맵리듀스(MapReduce) (0) | 2021.11.04 |
---|---|
아키텍쳐 vs 프레임워크 vs 디자인패턴 (0) | 2021.09.27 |