728x90
하둡 HDHS
HDFS는 Hadoop Distributed File Syste으로, 대용량 데이터를 분산된 서버에 저장하고, 데이터를 빠르게 처리할 수 있게 하는 파일시스템이다.
HDFS는 구글 파일 시스템을 본떠 만든 오픈소스로, 다음과 같은 특징을 갖고 있다
- 큰 용량의 데이터 저장 가능
- 데이터 저장 시 블록 단위로 쪼개어 저장을 진행해 여러 장비에 걸쳐 데이터를 저장할 수 있다.
- 스트리밍 방식의 데이터 사용
- HDFS로 저장된 데이터는 수정이 불가능 합니다.(단, 마지막 데이터에 추가로 데이터를 이어 붙이는 것은 가능함(append))
- 일반적 하드웨어 사용 가능
- 파일 블록 형태의 저장
- 기본적인 블록의 크기는 128MB이며, 데이터 크기가 큰 경우 많은 블록을 띄우는 것을 방지하기 위해 크기를 키우기도 한다. (최대 512YB까지 지원)
- 데이터 크기가 블록 크기보다 작을 경우, 저장 파일 만큼만 디스크를 사용해 불필요한 공간 활용이 없다.
- 보통은 3개의 복제본을 생성해 서로 다른 장비에 분산 저장하는 경우가 많다.
노드 종류
HDFS는 Name Node(master)와 Data Node(worker)로 구성되어 있다.
- Name Node 기능
- 메타 데이터 관리 : 파일 시스템 트리와 그 트리에 포함된 모든 파일, 디렉터리에 대한 메타 데이터(namespace image, edit log) 유지
- Data Node 모니터링 : Data Node가 3초마다 보내는 상태, 용량(heartbeat)을 체크래 장애 서버 여부 판단
- 블록관리 : 장애가 발생한 데이터노드의 블록을 새로운 Data node에 복제
- 클라이언트 요청접수 : 클라이언트 접근 시 기존 파일 저장 여부, 권한 확인의 절차를 거쳐 저장을 승인
- Data Node 기능
- 클라이언트가 저장하는 파일을 로컬 디스크에 유지(raw data, meta data 2가지 저장)
- Name Node에 주기적으로 상태정보와 블록 위치정보를 전달(heartbeat)
이 처럼 Name Node에는 Data Node에 대한 정보를 갖고 있으며, Data Node는 실질적인 데이터 저장을 한다.
Data Node에 데이터가 저장되어 있으나, Name Node가 손상된 경우, 가지고 있는 데이터를 읽어오거나 복구 할 수 없다.
HDFS에서는 위의 이유 때문에 Name Node에 대해 HA(High Availability)를 지원한다.
이런 전환 방식은 Controller 을 사용하여 관리하게 되는데, 일반적으로 Zookeeper 을 통해 구현된다.
파일 접근
HDFS을 통해서 파일에 접근하는 방법은 아래와 같다
- Client에서 Name Node에 block 위치를 요청
- Name Node로부터 반환된 위치에 해당하는 Data Node에서 read
- 만일 해당 Data Node의 상태가 정상이 아니면, Name Node에 알린 후 다른 블록에서 read
WRITE 과정은 다음과 같다.
- Client에서 Name Node로 create 시도
- Data Node에서 사용할 Block Node 목록을 반환하면, 해당 Data Node에 파일 쓰기 요청
- Data Node 간 복제 진행
reference
728x90
'DB(DataBase)' 카테고리의 다른 글
[Hadoop] 하둡 특징 및 기본설명 (0) | 2022.05.17 |
---|---|
DataBase 문법 총정리 _ 데이터 스키마, SQL 문법 (0) | 2021.07.23 |
DataBase 기초 _ 관계형 데이터베이스 (0) | 2021.07.23 |
DataBase 기초 _ SQL이란? (0) | 2021.07.23 |