티스토리 뷰
HDFS(Hadoop Distributed File System)이란?
- HDFS는 상용 하드웨어에서 실행되도록 설계된 분산 파일 시스템
- HDFS는 내결함성이 높고 저비용 하드웨어에서 동작하도록 설계
- 내부적으로 파일은 하나 이상의 블록으로 분할되어 DataNode 세트에 저장
NameNode & DataNode
- HDFS는 Java를 지원하는 모든 시스템에서 NameNode 또는 DataNode 소프트웨어 실행 가능
- 이식성이 뛰어난 Java를 사용하여 HDFS를 다양한 시스템에 배포 가능
- NameNode: DFS(Distributed File System)에 대한 정보들을 지니고 있음
- 파일 시스템 네임스페이스 관리
- 파일 및 디렉터리 열기, 닫기 및 이름 바꾸기 와 같은 파일 시스템 네임스페이스 작업을 실행
- DataNode에 대한 블록 매핑을 결정
- Namenode는 HeartBeat를 활용하여 Datanode의 실행상태와 용량을 확인 → HeartBeat를 전송하지 않는 Datanode는 장애 서버라고 판단
- Block 관리: 장애가 발생한 Datanode의 block을 새로운 Datanode에 복제 → 용량이 부족하다면 여유가 있는 Datanode로 block으로 이동
- DataNode
- 파일 시스템 클라이언트의 읽기 및 쓰기 요청을 처리
- 클라이언트가 저장한 데이터 블록을 로컬 디스크에 저장
파일 시스템 네임스페이스
- HDFS는 기존의 계층적 파일 구성을 지원
- 사용자나 애플리케이션은 디렉토리를 구성하고 이 디렉토리 안에 파일을 저장 가능
- 파일 시스템 네임스페이스 계층 구조는 대부분의 다른 기존 파일 시스템과 유사
- 파일을 생성 및 제거, 이름변경, 다른 디렉토리로 이동, 파일명 변경 가능
데이터 복제
- HDFS는 대규모 클러스터 시스템 간에 매우 큰 파일을 안정적으로 저장
- 각 파일들을 일련의 블록(기본 64MB)으로 저장이된다.
- 내결함성을 위해서 파일 블록은 단일로 존재하지 않음
- 블록의 크기와 복제 갯수는 파일별로 구성 가능
- 복제 설정은 파일 생성 시 지정할 수 있으며 추후에도 변경 가능
- HDFS는 엄격하게 한 명의 사용자만 사용 가능
- NameNode는 블록 복제에 대해 모든 결정을 내림
- 클러스터의 각각 DataNode로부터 정기적으로 HeartBeat와 BlcokReport를 수신
- HeartBeat 수신은 DataNode가 정상적으로 동작하고 있음을 의미
- BlockReport는 DataNode의 모든 블록 목록이 포함
editlog&fsimage
-
- editlog: HDFS의 파일 추가/삭제/이름 변경/이동에 대한 모든 이력을 저장
- fsimage: NameNode가 시작될 때의 파일 시스템의 스냅샷
- editlog가 일정 수준 이상이 되면은 지금까지의 editlog를 반영한 fsimage를 생성
- fsimage는 시스템이 부트될 때만 fsimage를 로드 → 즉, 런타임 중에 많은 변경후 NameNode가 다운되어 업데이트 되지 않아 변경이후 fsimage 영구 손실 우려 존재
- editlog 파일은 런타임 동안 모든 변경 이력을 저장 → 기존 fsimage에 editlog에서 찾은 모든 변경사항을 적용하여 새로운 fsimage를 생성하여 손실 복원( 이 과정은 NameNode 서버가 시작될 때만 발생)
- VERSION: 현재 실행 중인 HDFS의 ID, 타입 등 정보
- edits_0000xxx-0000xxx: 트랜잭션 정보. edits_트랜잭션시작번호-트랜잭션종료번호 까지의 정보를 저장
- eidts_inprogress_000xx: 최신 트랜잭션 정보. 압축되지 않은 정보
- fsimage_000xxx: 000xxx 까지 트랜잭션 정보가 처리된 fsimage
- fsimage_000xxx.md5: fsiamge의 해쉬값
- seen_txid: 현재 트랜잭션 ID
Secondary Name Node
-
- editslog가 커지게 되면 fsimage를 만드는데 많은 시간이 소요됨 → 이를 해결하기 위해 Secondary Name Node가 등장
- NameNode에서 일정 주기로 editlog 정보를 받아 fsimage 갱신
- 새 fsimage가 생성되면 업데이트된 fsimage를 NameNode로 복사
- NameNode는 재시작을 위해 업데이트된 fsimage를 사용 → fsimage 생성 시간 축소 (즉, 백업이 아님)
파일 삭제 및 삭제 취소
- 사용자나 애플리케이션이 파일을 삭제하면 HDFS에서 즉시 제거되지 않음
- 삭제시 HDFS는 먼저 /trash 디렉터리에 있는 파일로 이름을 변경
- 파일이 /trash 에 남아 있는 한 빠르게 복원 가능
- /trash 에서 수명이 만료된 후 NameNode는 HDFS 네임스페이스에서 파일을 삭제 → 파일을 삭제하면 파일과 관련된 블록이 해제
💡내결함성: 시스템의 일부 구성 요소가 작동하지 않더라도 계속 작동할 수 있는 기능, 네임스페이스: 파일에 이름을 할당하는 이름공간
'BigData > Hadoop' 카테고리의 다른 글
[hadoop] Namenode Federation 훑어 보기 (1) | 2024.06.18 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- openjdk1.8
- hdfs
- flow.xml.gz
- hadoop
- bigdata #data_mesh
- Dataflow
- Apache Nifi
- Federation
- Apache
- nifi.flowcontroller.autoResumeState
- lld
- Nifi Service
- Nifi Architecture
- nifi
- flink
- 실시간처리
- spark driver
- Item Prototypes
- prometheus
- MAT
- namenode
- java8
- Discovery Rule
- zabbix
- OOM
- exporter
- Bigdata
- error
- 빅데이터
- 설정에러
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함