Study/Big Data

Hadoop 하둡

z 2021. 8. 24. 23:44
728x90

하둡이란?

하나의 성능 좋은 컴퓨터를 이용하여 데이터를 처리하는 대신 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고,

큰 데이터를 클러스터에서 동시에 병렬로 처리해 처리 속도를 높이는게 목적인 분산처리를 위한 오픈소스 프레임워크

 

출처: 아파치 하둡 사이트

 

 

Hadoop Common : 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈

Hadoop HDFS : 분산저장을 처리하기 위한 모듈 / 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장

Hadoop YARN : 병렬처리를 위한 클러스터 자원관리 및 스케줄링 담당

Hadoop Mapreduce : 분산되어 저장된 데이터를 병렬 처리할 수 있게 해주는 분산 처리 모듈

Hadoop Ozone : 하둡을 위한 오브젝트 저장소

 


HDFS Architecture

하둡 아키텍쳐 (출처 : wikidocs.net)

HDFS는 마스터 슬레이브 구조로 [하나의 네임노드와 여러 개의 데이터노드]로 구성된다.

HDFS의 블록은 128MB와 같이 매우 큰 단위다.

그 이유는 탐색 비용을 최소화할 수 있기 때문이다.

블록이 크면 하드디스크에서 블록의 시작점을 탐색하는 데 걸리는 시간을 줄일 수 있고

네트워크를 통해 데이터를 전송하는데 더 많은 시간을 할당할 수 있다.

 

 


Name Node (네임노드) 

: 메타데이터 관리 및 데이터노드 관리

 

네임노드는 메타데이터를 가지고 있고, 데이터는 블록 단위로 나누어 데이터노드에 저장된다.

사용자는 네임노드를 이용해 데이터를 쓰고, 읽을 수 있다.

 

네임노드 구동 과정

  1. Fsimage를 읽어 메모리에 적재
  2. Edits 파일을 읽어와서 변경내역을 반영
  3. 현재의 메모리 상태를 스냅샷으로 생성하여 Fsimage 파일 생성
  4. 데이터 노드로부터 블록리포트를 수신하여 매핑정보 생성
  5. 서비스 시작

 

 

* 메타데이터 

 

메타데이터는 파일이름, 생성시간, 접근권한 등으로 구성되고, 

각 데이터노드에서 전달하는 메타데이터를 받아서 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리한다.

 

# 네임노드의 메타 데이터가 다음과 같은 형태로 생성 
-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: 정비 상태로 진행 중

 

 

728x90