Hadoop 하둡
하둡이란?
하나의 성능 좋은 컴퓨터를 이용하여 데이터를 처리하는 대신 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고,
큰 데이터를 클러스터에서 동시에 병렬로 처리해 처리 속도를 높이는게 목적인 분산처리를 위한 오픈소스 프레임워크
Hadoop Common : 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈
Hadoop HDFS : 분산저장을 처리하기 위한 모듈 / 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장
Hadoop YARN : 병렬처리를 위한 클러스터 자원관리 및 스케줄링 담당
Hadoop Mapreduce : 분산되어 저장된 데이터를 병렬 처리할 수 있게 해주는 분산 처리 모듈
Hadoop Ozone : 하둡을 위한 오브젝트 저장소
HDFS Architecture
HDFS는 마스터 슬레이브 구조로 [하나의 네임노드와 여러 개의 데이터노드]로 구성된다.
HDFS의 블록은 128MB와 같이 매우 큰 단위다.
그 이유는 탐색 비용을 최소화할 수 있기 때문이다.
블록이 크면 하드디스크에서 블록의 시작점을 탐색하는 데 걸리는 시간을 줄일 수 있고
네트워크를 통해 데이터를 전송하는데 더 많은 시간을 할당할 수 있다.
Name Node (네임노드)
: 메타데이터 관리 및 데이터노드 관리
네임노드는 메타데이터를 가지고 있고, 데이터는 블록 단위로 나누어 데이터노드에 저장된다.
사용자는 네임노드를 이용해 데이터를 쓰고, 읽을 수 있다.
네임노드 구동 과정
- Fsimage를 읽어 메모리에 적재
- Edits 파일을 읽어와서 변경내역을 반영
- 현재의 메모리 상태를 스냅샷으로 생성하여 Fsimage 파일 생성
- 데이터 노드로부터 블록리포트를 수신하여 매핑정보 생성
- 서비스 시작
* 메타데이터
메타데이터는 파일이름, 생성시간, 접근권한 등으로 구성되고,
각 데이터노드에서 전달하는 메타데이터를 받아서 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리한다.
# 네임노드의 메타 데이터가 다음과 같은 형태로 생성
-rw-r--r-- 1 hdfs hdfs 449M Jul 29 10:25 edits_0000000000385503885-0000000000382134443
-rw-r--r-- 1 hdfs hdfs 655M May 30 11:25 edits_0000000000387505112-0000000000383423421
네임노드는 데이터노드가 하트비트 & 블록리포트를 이용해 데이터노드의 블록 및 동작상태를 관리한다.
1) 하트비트 : 3초, dfs.heartbeat.interval
데이터노드가 동작 중이라는 것을 알게 해준다. 하트비트가 도착하지 않으면, 네임노드가 더이상 IO가 발생하지 않도록 조취한다.
2) 블록리포트 : 6시간, dfs.blockreport.intervalMsec
HDFS에 저장된 파일에 대한 최신 정보를 유지한다. 여기에는 데이터노드에 저장된 블록 목록과 각 블록이 로컬 디스크에서 저장된 위치에 대한 정보를 가지고 있다.
Data Node (데이타 노드)
: 파일 저장
파일은 블록단위로 저장된다.
주기적으로 네임노드에 하트비트와 블록비트를 전달한다.
# 데이터노드의 블록 파일이 다음과 같은 형태로 생성
drwxr-xr-x 200 hdfs hdfs 4.0K Jul 8 10:30 .
drwxr-xr-x 258 hdfs hdfs 8.0K Aug 31 22:21 ..
데이터 노드의 상태를 나타내는 정보는 두가지로 구분할 수 있다.
1) 활성 상태 : 데이터노드가 Live , Dead 상태인지 나타낸다.
하트비트를 주기적으로 전달하여 살아있는지 확인되면 Live -> 문제가 발생해서 지정시간동안 하트비트를 받지 못하면 네임노드는 데이터노드의 상태를 Stale 로 변경 -> 지정한 시간동안 응답 없으면 Dead로 변경
2) 운영 상태 : 데이터노드의 업그레이드, 패치 같은 작업을 하기 위해 서비스가 잠시 멈춰야할 경우,
블록을 안전하게 보관하기 위해 설정한다.
NORMAL: 서비스 상태
DECOMMISSIONED: 서비스 중단 상태
DECOMMISSION_INPROGRESS: 서비스 중단 상태로 진행 중
IN_MAINTENANCE: 정비 상태
ENTERING_MAINTENANCE: 정비 상태로 진행 중